Lines Matching refs:p
17 void SzCoderInfo_Init(CSzCoderInfo *p) in SzCoderInfo_Init() argument
19 Buf_Init(&p->Props); in SzCoderInfo_Init()
22 void SzCoderInfo_Free(CSzCoderInfo *p, ISzAlloc *alloc) in SzCoderInfo_Free() argument
24 Buf_Free(&p->Props, alloc); in SzCoderInfo_Free()
25 SzCoderInfo_Init(p); in SzCoderInfo_Free()
28 void SzFolder_Init(CSzFolder *p) in SzFolder_Init() argument
30 p->Coders = 0; in SzFolder_Init()
31 p->BindPairs = 0; in SzFolder_Init()
32 p->PackStreams = 0; in SzFolder_Init()
33 p->UnpackSizes = 0; in SzFolder_Init()
34 p->NumCoders = 0; in SzFolder_Init()
35 p->NumBindPairs = 0; in SzFolder_Init()
36 p->NumPackStreams = 0; in SzFolder_Init()
37 p->UnpackCRCDefined = 0; in SzFolder_Init()
38 p->UnpackCRC = 0; in SzFolder_Init()
39 p->NumUnpackStreams = 0; in SzFolder_Init()
42 void SzFolder_Free(CSzFolder *p, ISzAlloc *alloc) in SzFolder_Free() argument
45 if (p->Coders) in SzFolder_Free()
46 for (i = 0; i < p->NumCoders; i++) in SzFolder_Free()
47 SzCoderInfo_Free(&p->Coders[i], alloc); in SzFolder_Free()
48 IAlloc_Free(alloc, p->Coders); in SzFolder_Free()
49 IAlloc_Free(alloc, p->BindPairs); in SzFolder_Free()
50 IAlloc_Free(alloc, p->PackStreams); in SzFolder_Free()
51 IAlloc_Free(alloc, p->UnpackSizes); in SzFolder_Free()
52 SzFolder_Init(p); in SzFolder_Free()
55 UInt32 SzFolder_GetNumOutStreams(CSzFolder *p) in SzFolder_GetNumOutStreams() argument
59 for (i = 0; i < p->NumCoders; i++) in SzFolder_GetNumOutStreams()
60 result += p->Coders[i].NumOutStreams; in SzFolder_GetNumOutStreams()
64 int SzFolder_FindBindPairForInStream(CSzFolder *p, UInt32 inStreamIndex) in SzFolder_FindBindPairForInStream() argument
67 for (i = 0; i < p->NumBindPairs; i++) in SzFolder_FindBindPairForInStream()
68 if (p->BindPairs[i].InIndex == inStreamIndex) in SzFolder_FindBindPairForInStream()
74 int SzFolder_FindBindPairForOutStream(CSzFolder *p, UInt32 outStreamIndex) in SzFolder_FindBindPairForOutStream() argument
77 for (i = 0; i < p->NumBindPairs; i++) in SzFolder_FindBindPairForOutStream()
78 if (p->BindPairs[i].OutIndex == outStreamIndex) in SzFolder_FindBindPairForOutStream()
83 UInt64 SzFolder_GetUnpackSize(CSzFolder *p) in SzFolder_GetUnpackSize() argument
85 int i = (int)SzFolder_GetNumOutStreams(p); in SzFolder_GetUnpackSize()
89 if (SzFolder_FindBindPairForOutStream(p, i) < 0) in SzFolder_GetUnpackSize()
90 return p->UnpackSizes[i]; in SzFolder_GetUnpackSize()
95 void SzFile_Init(CSzFileItem *p) in SzFile_Init() argument
97 p->HasStream = 1; in SzFile_Init()
98 p->IsDir = 0; in SzFile_Init()
99 p->IsAnti = 0; in SzFile_Init()
100 p->CrcDefined = 0; in SzFile_Init()
101 p->MTimeDefined = 0; in SzFile_Init()
104 void SzAr_Init(CSzAr *p) in SzAr_Init() argument
106 p->PackSizes = 0; in SzAr_Init()
107 p->PackCRCsDefined = 0; in SzAr_Init()
108 p->PackCRCs = 0; in SzAr_Init()
109 p->Folders = 0; in SzAr_Init()
110 p->Files = 0; in SzAr_Init()
111 p->NumPackStreams = 0; in SzAr_Init()
112 p->NumFolders = 0; in SzAr_Init()
113 p->NumFiles = 0; in SzAr_Init()
116 void SzAr_Free(CSzAr *p, ISzAlloc *alloc) in SzAr_Free() argument
119 if (p->Folders) in SzAr_Free()
120 for (i = 0; i < p->NumFolders; i++) in SzAr_Free()
121 SzFolder_Free(&p->Folders[i], alloc); in SzAr_Free()
123 IAlloc_Free(alloc, p->PackSizes); in SzAr_Free()
124 IAlloc_Free(alloc, p->PackCRCsDefined); in SzAr_Free()
125 IAlloc_Free(alloc, p->PackCRCs); in SzAr_Free()
126 IAlloc_Free(alloc, p->Folders); in SzAr_Free()
127 IAlloc_Free(alloc, p->Files); in SzAr_Free()
128 SzAr_Init(p); in SzAr_Free()
132 void SzArEx_Init(CSzArEx *p) in SzArEx_Init() argument
134 SzAr_Init(&p->db); in SzArEx_Init()
135 p->FolderStartPackStreamIndex = 0; in SzArEx_Init()
136 p->PackStreamStartPositions = 0; in SzArEx_Init()
137 p->FolderStartFileIndex = 0; in SzArEx_Init()
138 p->FileIndexToFolderIndexMap = 0; in SzArEx_Init()
139 p->FileNameOffsets = 0; in SzArEx_Init()
140 Buf_Init(&p->FileNames); in SzArEx_Init()
143 void SzArEx_Free(CSzArEx *p, ISzAlloc *alloc) in SzArEx_Free() argument
145 IAlloc_Free(alloc, p->FolderStartPackStreamIndex); in SzArEx_Free()
146 IAlloc_Free(alloc, p->PackStreamStartPositions); in SzArEx_Free()
147 IAlloc_Free(alloc, p->FolderStartFileIndex); in SzArEx_Free()
148 IAlloc_Free(alloc, p->FileIndexToFolderIndexMap); in SzArEx_Free()
150 IAlloc_Free(alloc, p->FileNameOffsets); in SzArEx_Free()
151 Buf_Free(&p->FileNames, alloc); in SzArEx_Free()
153 SzAr_Free(&p->db, alloc); in SzArEx_Free()
154 SzArEx_Init(p); in SzArEx_Free()
176 #define MY_ALLOC(T, p, size, alloc) { if ((size) == 0) p = 0; else \ argument
177 if ((p = (T *)IAlloc_Alloc(alloc, (size) * sizeof(T))) == 0) return SZ_ERROR_MEM; }
179 static SRes SzArEx_Fill(CSzArEx *p, ISzAlloc *alloc) in SzArEx_Fill() argument
186 MY_ALLOC(UInt32, p->FolderStartPackStreamIndex, p->db.NumFolders, alloc); in SzArEx_Fill()
187 for (i = 0; i < p->db.NumFolders; i++) in SzArEx_Fill()
189 p->FolderStartPackStreamIndex[i] = startPos; in SzArEx_Fill()
190 startPos += p->db.Folders[i].NumPackStreams; in SzArEx_Fill()
193 MY_ALLOC(UInt64, p->PackStreamStartPositions, p->db.NumPackStreams, alloc); in SzArEx_Fill()
195 for (i = 0; i < p->db.NumPackStreams; i++) in SzArEx_Fill()
197 p->PackStreamStartPositions[i] = startPosSize; in SzArEx_Fill()
198 startPosSize += p->db.PackSizes[i]; in SzArEx_Fill()
201 MY_ALLOC(UInt32, p->FolderStartFileIndex, p->db.NumFolders, alloc); in SzArEx_Fill()
202 MY_ALLOC(UInt32, p->FileIndexToFolderIndexMap, p->db.NumFiles, alloc); in SzArEx_Fill()
204 for (i = 0; i < p->db.NumFiles; i++) in SzArEx_Fill()
206 CSzFileItem *file = p->db.Files + i; in SzArEx_Fill()
210 p->FileIndexToFolderIndexMap[i] = (UInt32)-1; in SzArEx_Fill()
221 if (folderIndex >= p->db.NumFolders) in SzArEx_Fill()
223 p->FolderStartFileIndex[folderIndex] = i; in SzArEx_Fill()
224 if (p->db.Folders[folderIndex].NumUnpackStreams != 0) in SzArEx_Fill()
229 p->FileIndexToFolderIndexMap[i] = folderIndex; in SzArEx_Fill()
233 if (indexInFolder >= p->db.Folders[folderIndex].NumUnpackStreams) in SzArEx_Fill()
243 UInt64 SzArEx_GetFolderStreamPos(const CSzArEx *p, UInt32 folderIndex, UInt32 indexInFolder) in SzArEx_GetFolderStreamPos() argument
245 return p->dataPos + in SzArEx_GetFolderStreamPos()
246 p->PackStreamStartPositions[p->FolderStartPackStreamIndex[folderIndex] + indexInFolder]; in SzArEx_GetFolderStreamPos()
249 int SzArEx_GetFolderFullPackSize(const CSzArEx *p, UInt32 folderIndex, UInt64 *resSize) in SzArEx_GetFolderFullPackSize() argument
251 UInt32 packStreamIndex = p->FolderStartPackStreamIndex[folderIndex]; in SzArEx_GetFolderFullPackSize()
252 CSzFolder *folder = p->db.Folders + folderIndex; in SzArEx_GetFolderFullPackSize()
257 UInt64 t = size + p->db.PackSizes[packStreamIndex + i]; in SzArEx_GetFolderFullPackSize()
865 CSzAr *p, in SzReadStreamsInfo() argument
885 RINOK(SzReadPackInfo(sd, dataOffset, &p->NumPackStreams, in SzReadStreamsInfo()
886 &p->PackSizes, &p->PackCRCsDefined, &p->PackCRCs, alloc)); in SzReadStreamsInfo()
891 RINOK(SzReadUnpackInfo(sd, &p->NumFolders, &p->Folders, alloc, allocTemp)); in SzReadStreamsInfo()
896 RINOK(SzReadSubStreamsInfo(sd, p->NumFolders, p->Folders, in SzReadStreamsInfo()
906 size_t SzArEx_GetFileNameUtf16(const CSzArEx *p, size_t fileIndex, UInt16 *dest) in SzArEx_GetFileNameUtf16() argument
908 size_t len = p->FileNameOffsets[fileIndex + 1] - p->FileNameOffsets[fileIndex]; in SzArEx_GetFileNameUtf16()
912 const Byte *src = p->FileNames.data + (p->FileNameOffsets[fileIndex] * 2); in SzArEx_GetFileNameUtf16()
919 static SRes SzReadFileNames(const Byte *p, size_t size, UInt32 numFiles, size_t *sizes) in SzReadFileNames() argument
930 if (p[pos * 2] == 0 && p[pos * 2 + 1] == 0) in SzReadFileNames()
941 CSzArEx *p, /* allocMain */ in SzReadHeader2() argument
971 &p->dataPos, in SzReadHeader2()
972 &p->db, in SzReadHeader2()
977 p->dataPos += p->startPosAfterHeader; in SzReadHeader2()
987 p->db.NumFiles = numFiles; in SzReadHeader2()
991 p->db.Files = files; in SzReadHeader2()
1019 if (!Buf_Create(&p->FileNames, namesSize, allocMain)) in SzReadHeader2()
1021 MY_ALLOC(size_t, p->FileNameOffsets, numFiles + 1, allocMain); in SzReadHeader2()
1022 memcpy(p->FileNames.data, sd->Data, namesSize); in SzReadHeader2()
1023 RINOK(SzReadFileNames(sd->Data, namesSize >> 1, numFiles, p->FileNameOffsets)) in SzReadHeader2()
1119 return SzArEx_Fill(p, allocMain); in SzReadHeader2()
1123 CSzArEx *p, in SzReadHeader() argument
1134 SRes res = SzReadHeader2(p, sd, in SzReadHeader()
1152 CSzAr *p, in SzReadAndDecodePackedStreams2() argument
1165 RINOK(SzReadStreamsInfo(sd, &dataStartPos, p, in SzReadAndDecodePackedStreams2()
1170 if (p->NumFolders != 1) in SzReadAndDecodePackedStreams2()
1173 folder = p->Folders; in SzReadAndDecodePackedStreams2()
1181 res = SzFolder_Decode(folder, p->PackSizes, in SzReadAndDecodePackedStreams2()
1198 CSzAr p; in SzReadAndDecodePackedStreams() local
1203 SzAr_Init(&p); in SzReadAndDecodePackedStreams()
1205 &p, &unpackSizes, &digestsDefined, &digests, in SzReadAndDecodePackedStreams()
1207 SzAr_Free(&p, allocTemp); in SzReadAndDecodePackedStreams()
1215 CSzArEx *p, in SzArEx_Open2() argument
1242 p->startPosAfterHeader = startArcPos + k7zStartHeaderSize; in SzArEx_Open2()
1287 … res = SzReadAndDecodePackedStreams(inStream, &sd, &outBuffer, p->startPosAfterHeader, allocTemp); in SzArEx_Open2()
1304 res = SzReadHeader(p, &sd, allocMain, allocTemp); in SzArEx_Open2()
1314 SRes SzArEx_Open(CSzArEx *p, ILookInStream *inStream, ISzAlloc *allocMain, ISzAlloc *allocTemp) in SzArEx_Open() argument
1316 SRes res = SzArEx_Open2(p, inStream, allocMain, allocTemp); in SzArEx_Open()
1318 SzArEx_Free(p, allocMain); in SzArEx_Open()
1323 const CSzArEx *p, in SzArEx_Extract() argument
1334 UInt32 folderIndex = p->FileIndexToFolderIndexMap[fileIndex]; in SzArEx_Extract()
1349 CSzFolder *folder = p->db.Folders + folderIndex; in SzArEx_Extract()
1352 UInt64 startOffset = SzArEx_GetFolderStreamPos(p, folderIndex, 0); in SzArEx_Extract()
1374 p->db.PackSizes + p->FolderStartPackStreamIndex[folderIndex], in SzArEx_Extract()
1391 CSzFileItem *fileItem = p->db.Files + fileIndex; in SzArEx_Extract()
1393 for (i = p->FolderStartFileIndex[folderIndex]; i < fileIndex; i++) in SzArEx_Extract()
1394 *offset += (UInt32)p->db.Files[i].Size; in SzArEx_Extract()
1405 const CSzArEx *p, in SzArEx_ExtractFolder() argument
1422 CSzFolder *folder = p->db.Folders + folderIndex; in SzArEx_ExtractFolder()
1425 UInt64 startOffset = SzArEx_GetFolderStreamPos(p, folderIndex, 0); in SzArEx_ExtractFolder()
1447 p->db.PackSizes + p->FolderStartPackStreamIndex[folderIndex], in SzArEx_ExtractFolder()