unsigned i, nbFiles;
char* buf = (char*)malloc(LIST_SIZE_INCREASE);
char* bufend = buf + LIST_SIZE_INCREASE;
- const char** fileTable;
if (!buf) return NULL;
if (!buf) return NULL;
}
if (buf + pos + len < bufend) {
- memcpy(buf+pos, inputNames[i], len+1); /* with final \0 */
+ memcpy(buf+pos, inputNames[i], len+1); /* including final \0 */
pos += len + 1;
nbFiles++;
}
if (nbFiles == 0) { free(buf); return NULL; }
- fileTable = (const char**)malloc((nbFiles+1) * sizeof(const char*));
- if (!fileTable) { free(buf); return NULL; }
+ { const char** const fileTable = (const char**)malloc((nbFiles + 1) * sizeof(*fileTable));
+ if (!fileTable) { free(buf); return NULL; }
- for (i=0, pos=0; i<nbFiles; i++) {
- fileTable[i] = buf + pos;
- pos += strlen(fileTable[i]) + 1;
- }
-
- if (buf + pos > bufend) { free(buf); free((void*)fileTable); return NULL; }
+ for (i = 0, pos = 0; i < nbFiles; i++) {
+ fileTable[i] = buf + pos;
+ if (buf + pos > bufend) { free(buf); free((void*)fileTable); return NULL; }
+ pos += strlen(fileTable[i]) + 1;
+ }
- *allocatedBuffer = buf;
- *allocatedNamesNb = nbFiles;
+ *allocatedBuffer = buf;
+ *allocatedNamesNb = nbFiles;
- return fileTable;
+ return fileTable;
+ }
}
touch tmp.zst # create destination file
$ZSTD -f tmp && die "attempt to compress a non existing file"
test -f tmp.zst # destination file should still be present
-rm tmp*
+rm -rf tmp* # may also erase tmp* directory from previous failed run
println "\n===> decompression only tests "
head -c 1048576 /dev/zero > tmp
test -f tmpOutDir/tmp2.zst
println "test : decompress multiple files into an output directory, --output-dir-flat"
mkdir tmpOutDirDecomp
-$ZSTD tmpOutDir/ -r -d --output-dir-flat tmpOutDirDecomp
+$ZSTD tmpOutDir -r -d --output-dir-flat tmpOutDirDecomp
test -f tmpOutDirDecomp/tmp2
test -f tmpOutDirDecomp/tmp1
rm -rf tmp*