}
{
+ int isDstRegFile;
#if defined(_WIN32)
/* Windows requires opening the file as a "binary" file to avoid
* mangling. This macro doesn't exist on unix. */
}
#endif
+ /* Check regular file after opening with O_CREAT */
+ isDstRegFile = UTIL_isFdRegularFile(fd);
if (prefs->sparseFileSupport == 1) {
prefs->sparseFileSupport = ZSTD_SPARSE_DEFAULT;
- /* Check regular file after opening with O_CREAT */
- if (!UTIL_isFdRegularFile(fd)) {
+ if (!isDstRegFile) {
prefs->sparseFileSupport = 0;
DISPLAYLEVEL(4, "Sparse File Support is disabled when output is not a file \n");
}
stat_t statbuf;
int ret;
UTIL_TRACE_CALL("UTIL_isFdRegularFile(%d)", fd);
- ret = UTIL_fstat(fd, "", &statbuf) && UTIL_isRegularFileStat(&statbuf);
+ ret = fd >= 0 && UTIL_fstat(fd, "", &statbuf) && UTIL_isRegularFileStat(&statbuf);
UTIL_TRACE_RET(ret);
return ret;
}
Trace:FileStat: > UTIL_stat(-1, out/file.zst)
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_isFdRegularFile(-1)
+Trace:FileStat: < 0
Trace:FileStat: > UTIL_isFileDescriptorPipe(out/file.zst)
Trace:FileStat: < 0
zstd: out/file.zst: Permission denied
Trace:FileStat: > UTIL_stat(-1, file.zst)
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_isFdRegularFile(*)
+Trace:FileStat: > UTIL_stat(*, )
+Trace:FileStat: < 1
+Trace:FileStat: < 1
Trace:FileStat: > UTIL_isRegularFile(file.zst)
Trace:FileStat: > UTIL_stat(-1, file.zst)
Trace:FileStat: < 1
Trace:FileStat: > UTIL_stat(-1, file.zst)
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_isFdRegularFile(*)
+Trace:FileStat: > UTIL_stat(*, )
+Trace:FileStat: < 1
+Trace:FileStat: < 1
Trace:FileStat: > UTIL_isRegularFile(file.zst)
Trace:FileStat: > UTIL_stat(-1, file.zst)
Trace:FileStat: < 1
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_isFdRegularFile(*)
+Trace:FileStat: > UTIL_stat(*, )
+Trace:FileStat: < 1
+Trace:FileStat: < 1
Trace:FileStat: > UTIL_isRegularFile(file)
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 1
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_isFdRegularFile(*)
+Trace:FileStat: > UTIL_stat(*, )
+Trace:FileStat: < 1
+Trace:FileStat: < 1
Trace:FileStat: > UTIL_isRegularFile(file)
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 1