Merge pull request #4702 from BhaaLseN/fix-compress
Fix GCZ compression missing the header
This commit is contained in:
commit
c4710ec7fa
|
@ -216,6 +216,8 @@ bool CompressFileToBlob(const std::string& infile_path, const std::string& outfi
|
||||||
outfile.Seek(sizeof(CompressedBlobHeader), SEEK_CUR);
|
outfile.Seek(sizeof(CompressedBlobHeader), SEEK_CUR);
|
||||||
// seek past the offset and hash tables (we will write them at the end)
|
// seek past the offset and hash tables (we will write them at the end)
|
||||||
outfile.Seek((sizeof(u64) + sizeof(u32)) * header.num_blocks, SEEK_CUR);
|
outfile.Seek((sizeof(u64) + sizeof(u32)) * header.num_blocks, SEEK_CUR);
|
||||||
|
// seek to the start of the input file to make sure we get everything
|
||||||
|
infile.Seek(0, SEEK_SET);
|
||||||
|
|
||||||
// Now we are ready to write compressed data!
|
// Now we are ready to write compressed data!
|
||||||
u64 position = 0;
|
u64 position = 0;
|
||||||
|
@ -405,13 +407,18 @@ bool DecompressBlobToFile(const std::string& infile_path, const std::string& out
|
||||||
outfile.Resize(header.data_size);
|
outfile.Resize(header.data_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsGCZBlob(File::IOFile& file)
|
bool IsGCZBlob(File::IOFile& file)
|
||||||
{
|
{
|
||||||
|
const u64 position = file.Tell();
|
||||||
|
if (!file.Seek(0, SEEK_SET))
|
||||||
|
return false;
|
||||||
CompressedBlobHeader header;
|
CompressedBlobHeader header;
|
||||||
return file.Seek(0, SEEK_SET) && file.ReadArray(&header, 1) && header.magic_cookie == GCZ_MAGIC;
|
bool is_gcz = file.ReadArray(&header, 1) && header.magic_cookie == GCZ_MAGIC;
|
||||||
|
file.Seek(position, SEEK_SET);
|
||||||
|
return is_gcz;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
Loading…
Reference in New Issue