diff --git a/contrib/pzstd/utils/FileSystem.h b/contrib/pzstd/utils/FileSystem.h index cb682819d..979c82b7a 100644 --- a/contrib/pzstd/utils/FileSystem.h +++ b/contrib/pzstd/utils/FileSystem.h @@ -11,6 +11,7 @@ #include "utils/Range.h" #include +#include #include #include @@ -20,12 +21,21 @@ namespace pzstd { +#if defined(_MSC_VER) +using file_status = struct ::_stat64; +#else using file_status = struct ::stat; +#endif /// http://en.cppreference.com/w/cpp/filesystem/status inline file_status status(StringPiece path, std::error_code& ec) noexcept { file_status status; - if (stat(path.data(), &status)) { +#if defined(_MSC_VER) + const auto error = ::_stat64(path.data(), &status); +#else + const auto error = ::stat(path.data(), &status); +#endif + if (error) { ec.assign(errno, std::generic_category()); } else { ec.clear();