Annotation of elwix/tools/oldlzma/SRC/7zip/Archive/7z_C/7zItem.c, revision 1.1

1.1     ! misho       1: /* 7zItem.c */
        !             2: 
        !             3: #include "7zItem.h"
        !             4: #include "7zAlloc.h"
        !             5: 
        !             6: void SzCoderInfoInit(CCoderInfo *coder)
        !             7: {
        !             8:   SzByteBufferInit(&coder->Properties);
        !             9: }
        !            10: 
        !            11: void SzCoderInfoFree(CCoderInfo *coder, void (*freeFunc)(void *p))
        !            12: {
        !            13:   SzByteBufferFree(&coder->Properties, freeFunc);
        !            14:   SzCoderInfoInit(coder);
        !            15: }
        !            16: 
        !            17: void SzFolderInit(CFolder *folder)
        !            18: {
        !            19:   folder->NumCoders = 0;
        !            20:   folder->Coders = 0;
        !            21:   folder->NumBindPairs = 0;
        !            22:   folder->BindPairs = 0;
        !            23:   folder->NumPackStreams = 0;
        !            24:   folder->PackStreams = 0;
        !            25:   folder->UnPackSizes = 0;
        !            26:   folder->UnPackCRCDefined = 0;
        !            27:   folder->UnPackCRC = 0;
        !            28:   folder->NumUnPackStreams = 0;
        !            29: }
        !            30: 
        !            31: void SzFolderFree(CFolder *folder, void (*freeFunc)(void *p))
        !            32: {
        !            33:   UInt32 i;
        !            34:   for (i = 0; i < folder->NumCoders; i++)
        !            35:     SzCoderInfoFree(&folder->Coders[i], freeFunc);
        !            36:   freeFunc(folder->Coders);
        !            37:   freeFunc(folder->BindPairs);
        !            38:   freeFunc(folder->PackStreams);
        !            39:   freeFunc(folder->UnPackSizes);
        !            40:   SzFolderInit(folder);
        !            41: }
        !            42: 
        !            43: UInt32 SzFolderGetNumOutStreams(CFolder *folder)
        !            44: {
        !            45:   UInt32 result = 0;
        !            46:   UInt32 i;
        !            47:   for (i = 0; i < folder->NumCoders; i++)
        !            48:     result += folder->Coders[i].NumOutStreams;
        !            49:   return result;
        !            50: }
        !            51: 
        !            52: int SzFolderFindBindPairForInStream(CFolder *folder, UInt32 inStreamIndex)
        !            53: {
        !            54:   UInt32 i;
        !            55:   for(i = 0; i < folder->NumBindPairs; i++)
        !            56:     if (folder->BindPairs[i].InIndex == inStreamIndex)
        !            57:       return i;
        !            58:   return -1;
        !            59: }
        !            60: 
        !            61: 
        !            62: int SzFolderFindBindPairForOutStream(CFolder *folder, UInt32 outStreamIndex)
        !            63: {
        !            64:   UInt32 i;
        !            65:   for(i = 0; i < folder->NumBindPairs; i++)
        !            66:     if (folder->BindPairs[i].OutIndex == outStreamIndex)
        !            67:       return i;
        !            68:   return -1;
        !            69: }
        !            70: 
        !            71: CFileSize SzFolderGetUnPackSize(CFolder *folder)
        !            72: { 
        !            73:   int i = (int)SzFolderGetNumOutStreams(folder);
        !            74:   if (i == 0)
        !            75:     return 0;
        !            76:   for (i--; i >= 0; i--)
        !            77:     if (SzFolderFindBindPairForOutStream(folder, i) < 0)
        !            78:       return folder->UnPackSizes[i];
        !            79:   /* throw 1; */
        !            80:   return 0;
        !            81: }
        !            82: 
        !            83: /*
        !            84: int FindPackStreamArrayIndex(int inStreamIndex) const
        !            85: {
        !            86:   for(int i = 0; i < PackStreams.Size(); i++)
        !            87:   if (PackStreams[i] == inStreamIndex)
        !            88:     return i;
        !            89:   return -1;
        !            90: }
        !            91: */
        !            92: 
        !            93: void SzFileInit(CFileItem *fileItem)
        !            94: {
        !            95:   fileItem->IsFileCRCDefined = 0;
        !            96:   fileItem->HasStream = 1;
        !            97:   fileItem->IsDirectory = 0;
        !            98:   fileItem->IsAnti = 0;
        !            99:   fileItem->Name = 0;
        !           100: }
        !           101: 
        !           102: void SzFileFree(CFileItem *fileItem, void (*freeFunc)(void *p))
        !           103: {
        !           104:   freeFunc(fileItem->Name);
        !           105:   SzFileInit(fileItem);
        !           106: }
        !           107: 
        !           108: void SzArchiveDatabaseInit(CArchiveDatabase *db)
        !           109: {
        !           110:   db->NumPackStreams = 0;
        !           111:   db->PackSizes = 0;
        !           112:   db->PackCRCsDefined = 0;
        !           113:   db->PackCRCs = 0;
        !           114:   db->NumFolders = 0;
        !           115:   db->Folders = 0;
        !           116:   db->NumFiles = 0;
        !           117:   db->Files = 0;
        !           118: }
        !           119: 
        !           120: void SzArchiveDatabaseFree(CArchiveDatabase *db, void (*freeFunc)(void *))
        !           121: {
        !           122:   UInt32 i;
        !           123:   for (i = 0; i < db->NumFolders; i++)
        !           124:     SzFolderFree(&db->Folders[i], freeFunc);
        !           125:   for (i = 0; i < db->NumFiles; i++)
        !           126:     SzFileFree(&db->Files[i], freeFunc);
        !           127:   freeFunc(db->PackSizes);
        !           128:   freeFunc(db->PackCRCsDefined);
        !           129:   freeFunc(db->PackCRCs);
        !           130:   freeFunc(db->Folders);
        !           131:   freeFunc(db->Files);
        !           132:   SzArchiveDatabaseInit(db);
        !           133: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>