"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "CPP/7zip/Archive/7z/7zOut.cpp" between
p7zip_15.14.1_src_all.tar.gz and p7zip_16.02_src_all.tar.gz

About: p7zip is a command-line file archiver with a high compression ratio (a port of the Windows program 7za.exe).

7zOut.cpp  (p7zip_15.14.1_src_all):7zOut.cpp  (p7zip_16.02_src_all)
skipping to change at line 543 skipping to change at line 543
void COutArchive::WriteHeader( void COutArchive::WriteHeader(
const CArchiveDatabaseOut &db, const CArchiveDatabaseOut &db,
// const CHeaderOptions &headerOptions, // const CHeaderOptions &headerOptions,
UInt64 &headerOffset) UInt64 &headerOffset)
{ {
/* /*
bool thereIsSecure = (db.SecureBuf.Size() != 0); bool thereIsSecure = (db.SecureBuf.Size() != 0);
*/ */
_useAlign = true; _useAlign = true;
unsigned i; {
UInt64 packSize = 0;
UInt64 packedSize = 0; FOR_VECTOR (i, db.PackSizes)
for (i = 0; i < db.PackSizes.Size(); i++) packSize += db.PackSizes[i];
packedSize += db.PackSizes[i]; headerOffset = packSize;
}
headerOffset = packedSize;
WriteByte(NID::kHeader); WriteByte(NID::kHeader);
// Archive Properties // Archive Properties
if (db.Folders.Size() > 0) if (db.Folders.Size() > 0)
{ {
WriteByte(NID::kMainStreamsInfo); WriteByte(NID::kMainStreamsInfo);
WritePackInfo(0, db.PackSizes, db.PackCRCs); WritePackInfo(0, db.PackSizes, db.PackCRCs);
WriteUnpackInfo(db.Folders, (const COutFolders &)db); WriteUnpackInfo(db.Folders, (const COutFolders &)db);
CRecordVector<UInt64> unpackSizes; CRecordVector<UInt64> unpackSizes;
CUInt32DefVector digests; CUInt32DefVector digests;
for (i = 0; i < db.Files.Size(); i++) FOR_VECTOR (i, db.Files)
{ {
const CFileItem &file = db.Files[i]; const CFileItem &file = db.Files[i];
if (!file.HasStream) if (!file.HasStream)
continue; continue;
unpackSizes.Add(file.Size); unpackSizes.Add(file.Size);
digests.Defs.Add(file.CrcDefined); digests.Defs.Add(file.CrcDefined);
digests.Vals.Add(file.Crc); digests.Vals.Add(file.Crc);
} }
WriteSubStreamsInfo(db.Folders, (const COutFolders &)db, unpackSizes, digest s); WriteSubStreamsInfo(db.Folders, (const COutFolders &)db, unpackSizes, digest s);
skipping to change at line 591 skipping to change at line 590
} }
WriteByte(NID::kFilesInfo); WriteByte(NID::kFilesInfo);
WriteNumber(db.Files.Size()); WriteNumber(db.Files.Size());
{ {
/* ---------- Empty Streams ---------- */ /* ---------- Empty Streams ---------- */
CBoolVector emptyStreamVector; CBoolVector emptyStreamVector;
emptyStreamVector.ClearAndSetSize(db.Files.Size()); emptyStreamVector.ClearAndSetSize(db.Files.Size());
unsigned numEmptyStreams = 0; unsigned numEmptyStreams = 0;
for (i = 0; i < db.Files.Size(); i++) {
if (db.Files[i].HasStream) FOR_VECTOR (i, db.Files)
emptyStreamVector[i] = false; if (db.Files[i].HasStream)
else emptyStreamVector[i] = false;
{ else
emptyStreamVector[i] = true; {
numEmptyStreams++; emptyStreamVector[i] = true;
} numEmptyStreams++;
}
}
if (numEmptyStreams != 0) if (numEmptyStreams != 0)
{ {
WritePropBoolVector(NID::kEmptyStream, emptyStreamVector); WritePropBoolVector(NID::kEmptyStream, emptyStreamVector);
CBoolVector emptyFileVector, antiVector; CBoolVector emptyFileVector, antiVector;
emptyFileVector.ClearAndSetSize(numEmptyStreams); emptyFileVector.ClearAndSetSize(numEmptyStreams);
antiVector.ClearAndSetSize(numEmptyStreams); antiVector.ClearAndSetSize(numEmptyStreams);
bool thereAreEmptyFiles = false, thereAreAntiItems = false; bool thereAreEmptyFiles = false, thereAreAntiItems = false;
unsigned cur = 0; unsigned cur = 0;
for (i = 0; i < db.Files.Size(); i++)
FOR_VECTOR (i, db.Files)
{ {
const CFileItem &file = db.Files[i]; const CFileItem &file = db.Files[i];
if (file.HasStream) if (file.HasStream)
continue; continue;
emptyFileVector[cur] = !file.IsDir; emptyFileVector[cur] = !file.IsDir;
if (!file.IsDir) if (!file.IsDir)
thereAreEmptyFiles = true; thereAreEmptyFiles = true;
bool isAnti = db.IsItemAnti(i); bool isAnti = db.IsItemAnti(i);
antiVector[cur] = isAnti; antiVector[cur] = isAnti;
if (isAnti) if (isAnti)
skipping to change at line 674 skipping to change at line 677
/* if (headerOptions.WriteCTime) */ WriteUInt64DefVector(db.CTime, NID::kCTime ); /* if (headerOptions.WriteCTime) */ WriteUInt64DefVector(db.CTime, NID::kCTime );
/* if (headerOptions.WriteATime) */ WriteUInt64DefVector(db.ATime, NID::kATime ); /* if (headerOptions.WriteATime) */ WriteUInt64DefVector(db.ATime, NID::kATime );
/* if (headerOptions.WriteMTime) */ WriteUInt64DefVector(db.MTime, NID::kMTime ); /* if (headerOptions.WriteMTime) */ WriteUInt64DefVector(db.MTime, NID::kMTime );
WriteUInt64DefVector(db.StartPos, NID::kStartPos); WriteUInt64DefVector(db.StartPos, NID::kStartPos);
{ {
/* ---------- Write Attrib ---------- */ /* ---------- Write Attrib ---------- */
CBoolVector boolVector; CBoolVector boolVector;
boolVector.ClearAndSetSize(db.Files.Size()); boolVector.ClearAndSetSize(db.Files.Size());
unsigned numDefined = 0; unsigned numDefined = 0;
for (i = 0; i < db.Files.Size(); i++)
{ {
bool defined = db.Files[i].AttribDefined; FOR_VECTOR (i, db.Files)
boolVector[i] = defined; {
if (defined) bool defined = db.Files[i].AttribDefined;
numDefined++; boolVector[i] = defined;
if (defined)
numDefined++;
}
} }
if (numDefined != 0) if (numDefined != 0)
{ {
WriteAlignedBoolHeader(boolVector, numDefined, NID::kWinAttrib, 4); WriteAlignedBoolHeader(boolVector, numDefined, NID::kWinAttrib, 4);
for (i = 0; i < db.Files.Size(); i++) FOR_VECTOR (i, db.Files)
{ {
const CFileItem &file = db.Files[i]; const CFileItem &file = db.Files[i];
if (file.AttribDefined) if (file.AttribDefined)
WriteUInt32(file.Attrib); WriteUInt32(file.Attrib);
} }
} }
} }
/* /*
{ {
 End of changes. 8 change blocks. 
23 lines changed or deleted 30 lines changed or added

Home  |  About  |  All  |  Newest  |  Fossies Dox  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTPS