33void R__zipLZ4(
int cxlevel,
int *srcsize,
const char *src,
int *tgtsize,
char *tgt,
int *irep)
35 int LZ4_version = LZ4_versionNumber();
37 uint64_t in_size = (unsigned)(*srcsize);
46 if (
R__unlikely(*srcsize > 0xffffff || *srcsize < 0)) {
63 XXH64_hash_t checksumResult = XXH64(tgt +
kHeaderSize, returnStatus, 0);
67 tgt[2] = (LZ4_version / (100 * 100));
73 tgt[3] = (char)(out_size & 0xff);
74 tgt[4] = (char)((out_size >> 8) & 0xff);
75 tgt[5] = (char)((out_size >> 16) & 0xff);
77 tgt[6] = (char)(in_size & 0xff);
78 tgt[7] = (char)((in_size >> 8) & 0xff);
79 tgt[8] = (char)((in_size >> 16) & 0xff);
82 XXH64_canonicalFromHash(
reinterpret_cast<XXH64_canonical_t *
>(tgt +
kChecksumOffset), checksumResult);
87void R__unzipLZ4(
int *srcsize,
const unsigned char *src,
int *tgtsize,
unsigned char *tgt,
int *irep)
92 int LZ4_version = LZ4_versionNumber() / (100 * 100);
95 fprintf(stderr,
"R__unzipLZ4: algorithm run against buffer with incorrect header (got %d%d; expected %d%d).\n",
96 src[0], src[1],
'L',
'4');
101 "R__unzipLZ4: This version of LZ4 is incompatible with the on-disk version (got %d; expected %d).\n",
102 src[2], LZ4_version);
112 XXH64_hash_t checksumResult = XXH64(src +
kHeaderSize, inputBufferSize, 0);
113 XXH64_hash_t checksumFromFile =
114 XXH64_hashFromCanonical(
reinterpret_cast<const XXH64_canonical_t *
>(src +
kChecksumOffset));
116 if (
R__unlikely(checksumFromFile != checksumResult)) {
119 "R__unzipLZ4: Buffer corruption error! Calculated checksum %llu; checksum calculated in the file was %llu.\n",
120 (
unsigned long long) checksumResult, (
unsigned long long) checksumFromFile);
123 int returnStatus = LZ4_decompress_safe((
char *)(&src[
kHeaderSize]), (
char *)(tgt), inputBufferSize, *tgtsize);
125 fprintf(stderr,
"R__unzipLZ4: error in decompression around byte %d out of maximum %d.\n", -returnStatus,
130 *irep = returnStatus;
void R__zipLZ4(int cxlevel, int *srcsize, const char *src, int *tgtsize, char *tgt, int *irep)