int result;
int transferStat = 0;
FILE *dstFile;
+ int dstFd = -1;
assert(AIO_ReadPool_getFile(ress.readCtx) != NULL);
if (AIO_WritePool_getFile(ress.writeCtx) == NULL) {
DISPLAYLEVEL(6, "FIO_compressFilename_dstFile: opening dst: %s \n", dstFileName);
dstFile = FIO_openDstFile(fCtx, prefs, srcFileName, dstFileName, dstFileInitialPermissions);
if (dstFile==NULL) return 1; /* could not open dstFileName */
+ dstFd = fileno(dstFile);
AIO_WritePool_setFile(ress.writeCtx, dstFile);
/* Must only be added after FIO_openDstFile() succeeds.
* Otherwise we may delete the destination file if it already exists,
if (closeDstFile) {
clearHandler();
+ if (transferStat) {
+ UTIL_setFDStat(dstFd, dstFileName, srcFileStat);
+ }
+
DISPLAYLEVEL(6, "FIO_compressFilename_dstFile: closing dst: %s \n", dstFileName);
if (AIO_WritePool_closeFile(ress.writeCtx)) { /* error closing file */
DISPLAYLEVEL(1, "zstd: %s: %s \n", dstFileName, strerror(errno));
result=1;
}
+
if (transferStat) {
- UTIL_setFileStat(dstFileName, srcFileStat);
+ UTIL_utime(dstFileName, srcFileStat);
}
+
if ( (result != 0) /* operation failure */
&& strcmp(dstFileName, stdoutmark) /* special case : don't remove() stdout */
) {
int result;
int releaseDstFile = 0;
int transferStat = 0;
+ int dstFd = 0;
if ((AIO_WritePool_getFile(ress.writeCtx) == NULL) && (prefs->testMode == 0)) {
FILE *dstFile;
dstFile = FIO_openDstFile(fCtx, prefs, srcFileName, dstFileName, dstFilePermissions);
if (dstFile==NULL) return 1;
+ dstFd = fileno(dstFile);
AIO_WritePool_setFile(ress.writeCtx, dstFile);
/* Must only be added after FIO_openDstFile() succeeds.
if (releaseDstFile) {
clearHandler();
+
+ if (transferStat) {
+ UTIL_setFDStat(dstFd, dstFileName, srcFileStat);
+ }
+
if (AIO_WritePool_closeFile(ress.writeCtx)) {
DISPLAYLEVEL(1, "zstd: %s: %s \n", dstFileName, strerror(errno));
result = 1;
}
if (transferStat) {
- UTIL_setFileStat(dstFileName, srcFileStat);
+ UTIL_utime(dstFileName, srcFileStat);
}
if ( (result != 0) /* operation failure */
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 1
Trace:FileStat: < 65537
-Trace:FileStat: > UTIL_setFileStat(-1, file.zst)
-Trace:FileStat: > UTIL_stat(-1, file.zst)
+Trace:FileStat: > UTIL_setFileStat(4, file.zst)
+Trace:FileStat: > UTIL_stat(4, file.zst)
Trace:FileStat: < 1
-Trace:FileStat: > UTIL_utime(file.zst)
-Trace:FileStat: < 0
Trace:FileStat: > UTIL_chmod(file.zst, 0642)
-Trace:FileStat: > chmod
+Trace:FileStat: > fchmod
Trace:FileStat: < 0
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_utime(file.zst)
+Trace:FileStat: < 0
Trace:FileStat: > UTIL_stat(-1, file)
Trace:FileStat: < 1
Trace:FileStat: < 1
-Trace:FileStat: > UTIL_setFileStat(-1, file)
-Trace:FileStat: > UTIL_stat(-1, file)
+Trace:FileStat: > UTIL_setFileStat(4, file)
+Trace:FileStat: > UTIL_stat(4, file)
Trace:FileStat: < 1
-Trace:FileStat: > UTIL_utime(file)
-Trace:FileStat: < 0
Trace:FileStat: > UTIL_chmod(file, 0642)
-Trace:FileStat: > chmod
+Trace:FileStat: > fchmod
Trace:FileStat: < 0
Trace:FileStat: < 0
Trace:FileStat: < 0
+Trace:FileStat: > UTIL_utime(file)
+Trace:FileStat: < 0