]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixes for windows compilation
authorSen Huang <senhuang96@fb.com>
Fri, 6 Sep 2019 20:20:50 +0000 (13:20 -0700)
committerSen Huang <senhuang96@fb.com>
Fri, 6 Sep 2019 20:20:50 +0000 (13:20 -0700)
programs/util.c
programs/zstdcli.c

index f00bfd608e513855be13907fda30086e56b5f942..920601fba29ee3f3f329602eba2ffde651fb2879 100644 (file)
@@ -20,6 +20,9 @@ extern "C" {
 #include <errno.h>
 #include <assert.h>
 
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined (__MSVCRT__)
+#include <direct.h>     /* needed for _mkdir in windows */
+#endif
 
 int UTIL_fileExist(const char* filename)
 {
@@ -93,7 +96,7 @@ int UTIL_createDir(const char* outDirName)
     if (UTIL_isDirectory(outDirName))
         return 0;   /* no need to create if directory already exists */
 
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined (__MSVCRT__)
     r = _mkdir(outDirName);
     if (r || !UTIL_isDirectory(outDirName)) return 1;
 #else
@@ -112,7 +115,7 @@ void UTIL_createDestinationDirTable(const char** filenameTable, unsigned nbFiles
 
     /* duplicate source file table */
     for (u = 0; u < nbFiles; ++u) {
-        char* filename;
+        const char* filename;
         size_t finalPathLen;
         finalPathLen = strlen(outDirName);
         filename = strrchr(filenameTable[u], c);    /* filename is the last bit of string after '/' */
index 606c162f77e1ea49e2ac5516e7c7fd283c1a670d..5fc6b8aa837f41cfecfcb095619da1da9a1af7d1 100644 (file)
@@ -1181,6 +1181,8 @@ int main(int argCount, const char* argv[])
             printf("ok\n");
             dstFilenameTable = (char**)malloc(filenameIdx * sizeof(char*));
             UTIL_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
+        } else {
+            dstFilenameTable = NULL;
         }
 
         if ((filenameIdx==1) && outFileName)
@@ -1205,7 +1207,10 @@ int main(int argCount, const char* argv[])
         if (outDirName) {
             dstFilenameTable = (char**)malloc(filenameIdx * sizeof(char*));
             UTIL_processMultipleFilenameDestinationDir(dstFilenameTable, filenameTable, filenameIdx, outFileName, outDirName);
+        } else {
+            dstFilenameTable = NULL;
         }
+        
         if (filenameIdx==1 && outFileName)
             operationResult = FIO_decompressFilename(prefs, outFileName, filenameTable[0], dictFileName);
         else