From a5ed28f1fb35bfd29053d5bc4d5ec7c8c1d25b83 Mon Sep 17 00:00:00 2001 From: "W. Felix Handte" Date: Tue, 17 Jan 2023 14:08:22 -0800 Subject: [PATCH] Use Existing Src File Stat in `*_dstFile()` Funcs One fewer `stat()` call to make per operation! --- programs/fileio.c | 18 ++++++------------ .../compress-file-to-file.sh.stderr.exact | 2 -- .../decompress-file-to-file.sh.stderr.exact | 2 -- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/programs/fileio.c b/programs/fileio.c index 9122a1036..2067cfcda 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -1631,20 +1631,16 @@ static int FIO_compressFilename_dstFile(FIO_ctx_t* const fCtx, { int closeDstFile = 0; int result; - stat_t statbuf; int transferMTime = 0; FILE *dstFile; - (void)srcFileStat; - assert(AIO_ReadPool_getFile(ress.readCtx) != NULL); if (AIO_WritePool_getFile(ress.writeCtx) == NULL) { int dstFilePermissions = DEFAULT_FILE_PERMISSIONS; if ( strcmp (srcFileName, stdinmark) && strcmp (dstFileName, stdoutmark) - && UTIL_stat(srcFileName, &statbuf) - && UTIL_isRegularFileStat(&statbuf) ) { - dstFilePermissions = statbuf.st_mode; + && UTIL_isRegularFileStat(srcFileStat) ) { + dstFilePermissions = srcFileStat->st_mode; transferMTime = 1; } @@ -1671,7 +1667,7 @@ static int FIO_compressFilename_dstFile(FIO_ctx_t* const fCtx, result=1; } if (transferMTime) { - UTIL_utime(dstFileName, &statbuf); + UTIL_utime(dstFileName, srcFileStat); } if ( (result != 0) /* operation failure */ && strcmp(dstFileName, stdoutmark) /* special case : don't remove() stdout */ @@ -2474,7 +2470,6 @@ static int FIO_decompressDstFile(FIO_ctx_t* const fCtx, const stat_t* srcFileStat) { int result; - stat_t statbuf; int releaseDstFile = 0; int transferMTime = 0; @@ -2485,9 +2480,8 @@ static int FIO_decompressDstFile(FIO_ctx_t* const fCtx, int dstFilePermissions = DEFAULT_FILE_PERMISSIONS; if ( strcmp(srcFileName, stdinmark) /* special case : don't transfer permissions from stdin */ && strcmp(dstFileName, stdoutmark) - && UTIL_stat(srcFileName, &statbuf) - && UTIL_isRegularFileStat(&statbuf) ) { - dstFilePermissions = statbuf.st_mode; + && UTIL_isRegularFileStat(srcFileStat) ) { + dstFilePermissions = srcFileStat->st_mode; transferMTime = 1; } @@ -2514,7 +2508,7 @@ static int FIO_decompressDstFile(FIO_ctx_t* const fCtx, } if (transferMTime) { - UTIL_utime(dstFileName, &statbuf); + UTIL_utime(dstFileName, srcFileStat); } if ( (result != 0) /* operation failure */ diff --git a/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact b/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact index 34bb704c7..7297894c7 100644 --- a/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact +++ b/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact @@ -12,8 +12,6 @@ Trace:FileStat: < 1 Trace:FileStat: < 0 Trace:FileStat: > UTIL_stat(file) Trace:FileStat: < 1 -Trace:FileStat: > UTIL_stat(file) -Trace:FileStat: < 1 Trace:FileStat: > UTIL_isSameFile(file, file.zst) Trace:FileStat: > UTIL_stat(file) Trace:FileStat: < 1 diff --git a/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact b/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact index a2d7ad282..2af60eb43 100644 --- a/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact +++ b/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact @@ -10,8 +10,6 @@ Trace:FileStat: < 1 Trace:FileStat: < 0 Trace:FileStat: > UTIL_stat(file.zst) Trace:FileStat: < 1 -Trace:FileStat: > UTIL_stat(file.zst) -Trace:FileStat: < 1 Trace:FileStat: > UTIL_isSameFile(file.zst, file) Trace:FileStat: > UTIL_stat(file.zst) Trace:FileStat: < 1