]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
[pzstd] Changes to compile on VS2015
authorNick Terrell <terrelln@fb.com>
Tue, 6 Sep 2016 19:43:07 +0000 (12:43 -0700)
committerNick Terrell <terrelln@fb.com>
Tue, 6 Sep 2016 19:43:07 +0000 (12:43 -0700)
contrib/pzstd/Pzstd.cpp
contrib/pzstd/utils/FileSystem.h

index ddfa595567e9768dbcc1060d88c80aaa379406ad..09eab90f161461cc531e9c95d447af9fd93107a2 100644 (file)
@@ -41,7 +41,7 @@ size_t pzstdMain(const Options& options, ErrorHolder& errorHolder) {
       return 0;
     }
     std::error_code ec;
-    inputSize = file_size(options.inputFile, ec);
+    inputSize = static_cast<size_t>(file_size(options.inputFile, ec));
     if (ec) {
       inputSize = 0;
     }
@@ -155,7 +155,7 @@ static void compress(
     ZSTD_parameters parameters) {
   auto guard = makeScopeGuard([&] { out->finish(); });
   // Initialize the CCtx
-  std::unique_ptr<ZSTD_CStream, size_t (&)(ZSTD_CStream*)> ctx(
+  std::unique_ptr<ZSTD_CStream, size_t (*)(ZSTD_CStream*)> ctx(
       ZSTD_createCStream(), ZSTD_freeCStream);
   if (!errorHolder.check(ctx != nullptr, "Failed to allocate ZSTD_CStream")) {
     return;
@@ -311,7 +311,7 @@ static void decompress(
     std::shared_ptr<BufferWorkQueue> out) {
   auto guard = makeScopeGuard([&] { out->finish(); });
   // Initialize the DCtx
-  std::unique_ptr<ZSTD_DStream, size_t (&)(ZSTD_DStream*)> ctx(
+  std::unique_ptr<ZSTD_DStream, size_t (*)(ZSTD_DStream*)> ctx(
       ZSTD_createDStream(), ZSTD_freeDStream);
   if (!errorHolder.check(ctx != nullptr, "Failed to allocate ZSTD_DStream")) {
     return;
index deae0b5b7384b776749f9cc1c75903b771de3099..cb682819d99efd3dd7323aa0ce0977dbc2f343aa 100644 (file)
@@ -20,7 +20,7 @@
 
 namespace pzstd {
 
-using file_status = struct stat;
+using file_status = struct ::stat;
 
 /// http://en.cppreference.com/w/cpp/filesystem/status
 inline file_status status(StringPiece path, std::error_code& ec) noexcept {
@@ -35,7 +35,13 @@ inline file_status status(StringPiece path, std::error_code& ec) noexcept {
 
 /// http://en.cppreference.com/w/cpp/filesystem/is_regular_file
 inline bool is_regular_file(file_status status) noexcept {
+#if defined(S_ISREG)
   return S_ISREG(status.st_mode);
+#elif !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
+  return (status.st_mode & S_IFMT) == S_IFREG;
+#else
+  static_assert(false, "No POSIX stat() support.");
+#endif
 }
 
 /// http://en.cppreference.com/w/cpp/filesystem/is_regular_file