]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
use strerror() to generate error message
authorYann Collet <cyan@fb.com>
Thu, 20 Dec 2018 17:16:40 +0000 (09:16 -0800)
committerYann Collet <cyan@fb.com>
Thu, 20 Dec 2018 17:16:40 +0000 (09:16 -0800)
as suggested by @terrelln .

also:
- hopefully fixed Windows version
- changed the test, so that it passes on non-english OS stdlib errors.

programs/fileio.c
programs/util.c
tests/playTests.sh

index ee9d060b05ba22cdb3892c0e6cfc6584a975215a..7666b0725a4d4cdd53f6f0711fc072876c1fb63c 100644 (file)
@@ -365,7 +365,7 @@ void FIO_setNoProgress(unsigned noProgress) {
 static int FIO_remove(const char* path)
 {
     if (!UTIL_isRegularFile(path)) {
-        DISPLAYLEVEL(2, "zstd: Refusing to remove non-regular file %s\n", path);
+        DISPLAYLEVEL(2, "zstd: Refusing to remove non-regular file %s \n", path);
         return 0;
     }
 #if defined(_WIN32) || defined(WIN32)
@@ -383,14 +383,14 @@ static FILE* FIO_openSrcFile(const char* srcFileName)
 {
     assert(srcFileName != NULL);
     if (!strcmp (srcFileName, stdinmark)) {
-        DISPLAYLEVEL(4,"Using stdin for input\n");
+        DISPLAYLEVEL(4,"Using stdin for input \n");
         SET_BINARY_MODE(stdin);
         return stdin;
     }
 
     if (!UTIL_fileExist(srcFileName)) {
-        DISPLAYLEVEL(1, "zstd: %s : No such file or directory (can't stat) -- ignored \n",
-                        srcFileName);
+        DISPLAYLEVEL(1, "zstd: can't stat %s : %s -- ignored \n",
+                        srcFileName, strerror(errno));
         return NULL;
     }
 
@@ -414,7 +414,7 @@ static FILE* FIO_openDstFile(const char* srcFileName, const char* dstFileName)
 {
     assert(dstFileName != NULL);
     if (!strcmp (dstFileName, stdoutmark)) {
-        DISPLAYLEVEL(4,"Using stdout for output\n");
+        DISPLAYLEVEL(4,"Using stdout for output \n");
         SET_BINARY_MODE(stdout);
         if (g_sparseFileSupport==1) {
             g_sparseFileSupport = 0;
@@ -425,11 +425,12 @@ static FILE* FIO_openDstFile(const char* srcFileName, const char* dstFileName)
     if (srcFileName != NULL) {
         stat_t srcStat;
         stat_t dstStat;
-        if (UTIL_getFileStat(srcFileName, &srcStat) && UTIL_getFileStat(dstFileName, &dstStat)) {
-            if (srcStat.st_dev == dstStat.st_dev && srcStat.st_ino == dstStat.st_ino) {
-                DISPLAYLEVEL(1, "zstd: Refusing to open a output file which will overwrite the input file \n");
-                return NULL;
-            }
+        if ( UTIL_getFileStat(srcFileName, &srcStat)
+          && UTIL_getFileStat(dstFileName, &dstStat)
+          && srcStat.st_dev == dstStat.st_dev
+          && srcStat.st_ino == dstStat.st_ino ) {
+            DISPLAYLEVEL(1, "zstd: Refusing to open a output file which will overwrite the input file \n");
+            return NULL;
         }
     }
 
@@ -438,12 +439,12 @@ static FILE* FIO_openDstFile(const char* srcFileName, const char* dstFileName)
     }
 
     if (UTIL_isRegularFile(dstFileName)) {
-        FILE* fCheck;
+        /* Check if destination file already exists */
+        FILE* const fCheck = fopen( dstFileName, "rb" );
         if (!strcmp(dstFileName, nulmark)) {
-            EXM_THROW(40, "%s is unexpectedly a regular file", dstFileName);
+            EXM_THROW(40, "%s is unexpectedly categorized as a regular file",
+                        dstFileName);
         }
-        /* Check if destination file already exists */
-        fCheck = fopen( dstFileName, "rb" );
         if (fCheck != NULL) {  /* dst file exists, authorization prompt */
             fclose(fCheck);
             if (!g_overwrite) {
index c8140b7ad286a726a937826761d67b0316f42d6e..4ef988c266dc9d08ab9074f1cbd35451e9b32a9e 100644 (file)
@@ -24,8 +24,12 @@ extern "C" {
 int UTIL_fileExist(const char* filename)
 {
     stat_t statbuf;
-    int const stat_success = stat(filename, &statbuf);
-    return !stat_success;
+#if defined(_MSC_VER)
+    int const stat_error = _stat64(filename, &statbuf);
+#else
+    int const stat_error = stat(filename, &statbuf);
+#endif
+    return !stat_error;
 }
 
 int UTIL_isRegularFile(const char* infilename)
index a86476abb8e5ce1e57a208ff69c84e8827ced550..fc45ef5ec59d30ec4dcd1796d4914bec7e6f8cee 100755 (executable)
@@ -187,7 +187,7 @@ $ECHO "test: overwrite input file (must fail)"
 $ZSTD tmp -fo tmp && die "zstd overwrote the input file"
 $ZSTD tmp.zst -dfo tmp.zst && die "zstd overwrote the input file"
 $ECHO "test: properly detect input file does not exist"
-$ZSTD nothere 2>&1 | grep "o such file"
+$ZSTD nothere && die "zstd hasn't detected that input file does not exist"
 
 $ECHO "test : file removal"
 $ZSTD -f --rm tmp