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>