Annotation of elwix/tools/oldlzma/SRC/7zip/Archive/7z_C/7zItem.c, revision 1.1.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>