From df6718512cd0b32989152a767366bdbe3d57079a Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sat, 27 Jul 2024 20:51:46 +0200 Subject: [PATCH] fix: windows build was broken after refactoring --- include/dwarfs/util.h | 3 +++ src/dwarfs/filesystem_extractor.cpp | 1 + src/dwarfs/util.cpp | 14 ++++++++++++++ src/dwarfs_main.cpp | 5 +++-- src/dwarfsck_main.cpp | 6 +----- src/mkdwarfs_main.cpp | 4 +--- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/include/dwarfs/util.h b/include/dwarfs/util.h index ef641b1d..9c3182d9 100644 --- a/include/dwarfs/util.h +++ b/include/dwarfs/util.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -75,4 +76,6 @@ void setup_default_locale(); std::string_view basename(std::string_view path); +void ensure_binary_mode(std::ostream& os); + } // namespace dwarfs diff --git a/src/dwarfs/filesystem_extractor.cpp b/src/dwarfs/filesystem_extractor.cpp index 5f7e17a0..464a97bf 100644 --- a/src/dwarfs/filesystem_extractor.cpp +++ b/src/dwarfs/filesystem_extractor.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include diff --git a/src/dwarfs/util.cpp b/src/dwarfs/util.cpp index 8f422672..a231fc58 100644 --- a/src/dwarfs/util.cpp +++ b/src/dwarfs/util.cpp @@ -23,7 +23,9 @@ #include #include #include +#include #include +#include #if __has_include() #include @@ -35,6 +37,8 @@ #include #include +#include +#include #include #include @@ -363,4 +367,14 @@ std::string_view basename(std::string_view path) { return path.substr(pos + 1); } +void ensure_binary_mode(std::ostream& os [[maybe_unused]]) { +#ifdef _WIN32 + if (&os == &std::cout) { + _setmode(_fileno(stdout), _O_BINARY); + } else if (&os == &std::cerr) { + _setmode(_fileno(stderr), _O_BINARY); + } +#endif +} + } // namespace dwarfs diff --git a/src/dwarfs_main.cpp b/src/dwarfs_main.cpp index fd11be66..284afa9d 100644 --- a/src/dwarfs_main.cpp +++ b/src/dwarfs_main.cpp @@ -33,7 +33,7 @@ #include #include -#ifndef WIN32 +#ifndef _WIN32 #if __has_include() #define BOOST_PROCESS_VERSION 2 #include @@ -48,6 +48,7 @@ #include #include #include +#include #ifndef DWARFS_FUSE_LOWLEVEL #define DWARFS_FUSE_LOWLEVEL 1 @@ -290,7 +291,7 @@ void checked_reply_err(LogProxy& log_, fuse_req_t req, T&& f) { #endif void check_fusermount(dwarfs_userdata& userdata) { -#ifndef WIN32 +#ifndef _WIN32 #if FUSE_USE_VERSION >= 30 static constexpr std::string_view const fusermount_name = "fusermount3"; diff --git a/src/dwarfsck_main.cpp b/src/dwarfsck_main.cpp index 01d08b81..3f9da523 100644 --- a/src/dwarfsck_main.cpp +++ b/src/dwarfsck_main.cpp @@ -296,11 +296,7 @@ int dwarfsck_main(int argc, sys_char** argv, iolayer const& iol) { if (print_header) { if (auto hdr = filesystem_v2::header(mm, fsopts.image_offset)) { -#ifdef _WIN32 - if (&iol.out == &std::cout) { - ::_setmode(::_fileno(stdout), _O_BINARY); - } -#endif + ensure_binary_mode(iol.out); iol.out.write(reinterpret_cast(hdr->data()), hdr->size()); if (iol.out.bad() || iol.out.fail()) { LOG_ERROR << "error writing header"; diff --git a/src/mkdwarfs_main.cpp b/src/mkdwarfs_main.cpp index ff04b428..438c67c2 100644 --- a/src/mkdwarfs_main.cpp +++ b/src/mkdwarfs_main.cpp @@ -1142,9 +1142,7 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) { os.emplace>(std::move(stream)); } else { -#ifdef _WIN32 - ::_setmode(::_fileno(stdout), _O_BINARY); -#endif + ensure_binary_mode(iol.out); } } else { os.emplace();