Home | History | Annotate | Download | only in C

Lines Matching refs:sd

182 static SRes SzReadByte(CSzData *sd, Byte *b)

184 if (sd->Size == 0)
186 sd->Size--;
187 *b = *sd->Data++;
192 #define SZ_READ_BYTE(dest) SZ_READ_BYTE_SD(sd, dest)
193 #define SZ_READ_BYTE_2(dest) if (sd.Size == 0) return SZ_ERROR_ARCHIVE; sd.Size--; dest = *sd.Data++;
195 #define SKIP_DATA(sd, size) { sd->Size -= (size_t)(size); sd->Data += (size_t)(size); }
196 #define SKIP_DATA2(sd, size) { sd.Size -= (size_t)(size); sd.Data += (size_t)(size); }
198 #define SZ_READ_32(dest) if (sd.Size < 4) return SZ_ERROR_ARCHIVE; \
199 dest = GetUi32(sd.Data); SKIP_DATA2(sd, 4);
201 static MY_NO_INLINE SRes ReadNumber(CSzData *sd, UInt64 *value)
290 static MY_NO_INLINE SRes SzReadNumber32(CSzData *sd, UInt32 *value)
294 if (sd->Size == 0)
296 firstByte = *sd->Data;
300 sd->Data++;
301 sd->Size--;
304 RINOK(ReadNumber(sd, &value64));
313 #define ReadID(sd, value) ReadNumber(sd, value)
315 static SRes SkipData(CSzData *sd)
318 RINOK(ReadNumber(sd, &size));
319 if (size > sd->Size)
321 SKIP_DATA(sd, size);
325 static SRes WaitId(CSzData *sd, UInt64 id)
330 RINOK(ReadID(sd, &type));
335 RINOK(SkipData(sd));
339 static SRes RememberBitVector(CSzData *sd, UInt32 numItems, const Byte **v)
342 if (numBytes > sd->Size)
344 *v = sd->Data;
345 SKIP_DATA(sd, numBytes);
367 static MY_NO_INLINE SRes ReadBitVector(CSzData *sd, UInt32 numItems, Byte **v, ISzAlloc *alloc)
373 RINOK(SzReadByte(sd, &allAreDefined));
376 if (numBytes > sd->Size)
379 memcpy(*v, sd->Data, numBytes);
380 SKIP_DATA(sd, numBytes);
398 CSzData sd;
402 sd = *sd2;
412 *sd2 = sd;
416 static SRes ReadBitUi32s(CSzData *sd, UInt32 numItems, CSzBitUi32s *crcs, ISzAlloc *alloc)
419 RINOK(ReadBitVector(sd, numItems, &crcs->Defs, alloc));
420 return ReadUi32s(sd, numItems, crcs, alloc);
423 static SRes SkipBitUi32s(CSzData *sd, UInt32 numItems)
427 RINOK(SzReadByte(sd, &allAreDefined));
431 if (numBytes > sd->Size)
433 numDefined = CountDefinedBits(sd->Data, numItems);
434 SKIP_DATA(sd, numBytes);
436 if (numDefined > (sd->Size >> 2))
438 SKIP_DATA(sd, (size_t)numDefined * 4);
442 static SRes ReadPackInfo(CSzAr *p, CSzData *sd, ISzAlloc *alloc)
444 RINOK(SzReadNumber32(sd, &p->NumPackStreams));
446 RINOK(WaitId(sd, k7zIdSize));
456 RINOK(ReadNumber(sd, &packSize));
467 RINOK(ReadID(sd, &type));
473 RINOK(SkipBitUi32s(sd, p->NumPackStreams));
476 RINOK(SkipData(sd));
481 static SRes SzReadSwitch(CSzData *sd)
484 RINOK(SzReadByte(sd, &external));
491 SRes SzGetNextFolderItem(CSzFolder *f, CSzData *sd, CSzData *sdSizes)
495 const Byte *dataStart = sd->Data;
498 RINOK(SzReadNumber32(sd, &numCoders));
509 RINOK(SzReadByte(sd, &mainByte));
515 if (idSize > sd->Size)
520 id = ((id << 8) | *sd->Data);
521 sd->Data++;
522 sd->Size--;
536 RINOK(SzReadNumber32(sd, &numStreams));
540 RINOK(SzReadNumber32(sd, &numStreams));
548 RINOK(SzReadNumber32(sd, &propsSize));
551 if (propsSize > sd->Size)
553 coder->PropsOffset = sd->Data - dataStart;
555 sd->Data += (size_t)propsSize;
556 sd->Size -= (size_t)propsSize;
589 RINOK(SzReadNumber32(sd, &bp->InIndex));
593 RINOK(SzReadNumber32(sd, &bp->OutIndex));
620 RINOK(SzReadNumber32(sd, f->PackStreams + i));
633 CSzData sd;
634 sd = *sd2;
644 if (sd.Size == 0)
646 sd.Size--;
647 sd.Data++;
653 if (i > sd.Size)
655 SKIP_DATA2(sd, i);
657 *sd2 = sd;
669 CSzData sd;
684 sd = *sd2;
691 sd.Data = tempBufs[index].data;
692 sd.Size = tempBufs[index].size;
699 startBufPtr = sd.Data;
708 p->FoCodersOffsets[fo] = sd.Data - startBufPtr;
709 RINOK(SzReadNumber32(&sd, &numCoders));
725 if (idSize > sd.Size)
727 SKIP_DATA2(sd, idSize);
733 RINOK(SzReadNumber32(&sd, &coderInStreams));
734 RINOK(SzReadNumber32(&sd, &coderOutStreams));
744 RINOK(SzReadNumber32(&sd, &propsSize));
745 if (propsSize > sd.Size)
747 SKIP_DATA2(sd, propsSize);
773 RINOK(SzReadNumber32(&sd, &index));
777 RINOK(SzReadNumber32(&sd, &index));
789 RINOK(SzReadNumber32(&sd, &temp));
818 size_t dataSize = sd.Data - startBufPtr;
827 if (sd.Size != 0)
829 sd = *sd2;
832 RINOK(WaitId(&sd, k7zIdCodersUnpackSize));
836 size_t dataSize = sd.Size;
841 RINOK(ReadNumber(&sd, p->CoderUnpackSizes + i));
844 RINOK(SkipNumbers(&sd, numCodersOutStreams));
845 dataSize -= sd.Size;
847 memcpy(p->UnpackSizesData, sd.Data - dataSize, dataSize);
850 const Byte *data = SzReadNumbers(sd.Data, sd.Data + sd.Size, p->CoderUnpackSizes, numCodersOutStreams);
853 sd.Size = sd.Data + sd.Size - data;
854 sd.Data = data;
861 RINOK(ReadID(&sd, &type));
864 *sd2 = sd;
869 RINOK(ReadBitUi32s(&sd, numFolders, &p->FolderCRCs, alloc));
872 RINOK(SkipData(&sd));
887 static SRes ReadSubStreamsInfo(CSzAr *p, CSzData *sd, CSubStreamInfo *ssi)
898 RINOK(ReadID(sd, &type));
901 ssi->sdNumSubStreams.Data = sd->Data;
907 RINOK(SzReadNumber32(sd, &numStreams));
916 ssi->sdNumSubStreams.Size = sd->Data - ssi->sdNumSubStreams.Data;
921 RINOK(SkipData(sd));
936 ssi->sdSizes.Data = sd->Data;
937 RINOK(SkipNumbers(sd, numUnpackSizesInData));
938 ssi->sdSizes.Size = sd->Data - ssi->sdSizes.Data;
939 RINOK(ReadID(sd, &type));
948 ssi->sdCRCs.Data = sd->Data;
949 RINOK(SkipBitUi32s(sd, numSubDigests));
950 ssi->sdCRCs.Size = sd->Data - ssi->sdCRCs.Data;
954 RINOK(SkipData(sd));
956 RINOK(ReadID(sd, &type));
961 CSzData *sd,
974 RINOK(ReadID(sd, &type));
977 RINOK(ReadNumber(sd, dataOffset));
978 RINOK(ReadPackInfo(p, sd, alloc));
979 RINOK(ReadID(sd, &type));
983 RINOK(ReadUnpackInfo(p, sd, numFoldersMax, tempBufs, numTempBufs, alloc));
984 RINOK(ReadID(sd, &type));
988 RINOK(ReadSubStreamsInfo(p, sd, ssi));
989 RINOK(ReadID(sd, &type));
1002 CSzData *sd,
1014 RINOK(SzReadStreamsInfo(p, sd, numFoldersMax, NULL, 0, &dataStartPos, &ssi, allocTemp));
1098 CSzData sd;
1106 sd = *sd2;
1113 sd.Data = tempBufs[index].data;
1114 sd.Size = tempBufs[index].size;
1122 if (sd.Size < 8)
1124 vals[i].Low = GetUi32(sd.Data);
1125 vals[i].High = GetUi32(sd.Data + 4);
1126 SKIP_DATA2(sd, 8);
1131 *sd2 = sd;
1139 CSzData *sd,
1165 RINOK(ReadID(sd, &type));
1172 RINOK(ReadID(sd, &type));
1175 RINOK(SkipData(sd));
1177 RINOK(ReadID(sd, &type));
1189 res = SzReadAndDecodePackedStreams(inStream, sd, tempBufs, NUM_ADDITIONAL_STREAMS_MAX,
1196 RINOK(ReadID(sd, &type));
1201 RINOK(SzReadStreamsInfo(&p->db, sd, (UInt32)1 << 30, tempBufs, *numTempBufs,
1204 RINOK(ReadID(sd, &type));
1209 // *sd2 = sd;
1215 RINOK(SzReadNumber32(sd, &numFiles));
1222 RINOK(ReadID(sd, &type));
1225 RINOK(ReadNumber(sd, &size));
1226 if (size > sd->Size)
1230 SKIP_DATA(sd, size);
1244 namesData = sd->Data;
1249 SzReadNumber32(sd, &index);
1264 SKIP_DATA(sd
1270 RINOK(RememberBitVector(sd, numFiles, &emptyStreams));
1276 RINOK(RememberBitVector(sd, numEmptyStreams, &emptyFiles));
1285 RINOK(ReadBitVector(sd, numFiles, &p->Attribs.Defs, allocMain));
1289 sdPtr = sd;
1293 SzReadNumber32(sd, &index);
1307 RINOK(ReadBitVector(sd, numFiles, &p->Parents.Defs, allocMain));
1308 RINOK(SzReadSwitch(sd));
1309 RINOK(ReadUi32s(sd, numFiles, &p->Parents, allocMain));
1313 case k7zIdMTime: RINOK(ReadTime(&p->MTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)); break;
1314 case k7zIdCTime: RINOK(ReadTime(&p->CTime, numFiles, sd, tempBufs, *numTempBufs, allocMain)); break;
1317 SKIP_DATA(sd, size);
1328 RINOK(ReadID(sd, &type));
1331 RINOK(SkipData(sd));
1503 CSzData *sd,
1521 res = SzReadHeader2(p, sd,
1539 if (sd->Size != 0)
1630 CSzData sd;
1632 sd.Data = buf.data;
1633 sd.Size = buf.size;
1634 res = ReadID(&sd, &type);
1642 res = SzReadAndDecodePackedStreams(inStream, &sd, &tempBuf, 1, p->startPosAfterHeader, &tempAr, allocTemp);
1654 sd.Data = buf.data;
1655 sd.Size = buf.size;
1656 res = ReadID(&sd, &type);
1669 sd2 = sd;
1676 // res = SzReadHeader(p, &sd, allocMain, allocTemp);