diff --git a/include/fmt/std.h b/include/fmt/std.h index a9a9dc33..7cff1159 100644 --- a/include/fmt/std.h +++ b/include/fmt/std.h @@ -120,7 +120,7 @@ template struct formatter { format_specs specs_; detail::arg_ref width_ref_; bool debug_ = false; - char path_type_ = 'n'; + char path_type_ = 0; public: FMT_CONSTEXPR void set_debug_format(bool set = true) { debug_ = set; } @@ -137,7 +137,7 @@ template struct formatter { debug_ = true; ++it; } - if (it != end && (*it == 'g' || *it == 'n')) path_type_ = *it++; + if (it != end && (*it == 'g')) path_type_ = *it++; return it; } @@ -145,9 +145,9 @@ template struct formatter { auto format(const std::filesystem::path& p, FormatContext& ctx) const { auto specs = specs_; # ifdef _WIN32 - auto path_string = path_type_ == 'n' ? p.native() : p.generic_wstring(); + auto path_string = !path_type_ ? p.native() : p.generic_wstring(); # else - auto path_string = path_type_ == 'n' ? p.native() : p.generic_string(); + auto path_string = !path_type_ ? p.native() : p.generic_string(); # endif detail::handle_dynamic_spec(specs.width, width_ref_, diff --git a/test/std-test.cc b/test/std-test.cc index f288e144..de3feaa0 100644 --- a/test/std-test.cc +++ b/test/std-test.cc @@ -26,10 +26,9 @@ TEST(std_test, path) { EXPECT_EQ(fmt::format("{}", path("foo\"bar")), "foo\"bar"); EXPECT_EQ(fmt::format("{:?}", path("foo\"bar")), "\"foo\\\"bar\""); - EXPECT_EQ(fmt::format("{:n}", path("/usr/bin")), "/usr/bin"); EXPECT_EQ(fmt::format("{:g}", path("/usr/bin")), "/usr/bin"); # ifdef _WIN32 - EXPECT_EQ(fmt::format("{:n}", path("C:\\foo")), "C:\\foo"); + EXPECT_EQ(fmt::format("{}", path("C:\\foo")), "C:\\foo"); EXPECT_EQ(fmt::format("{:g}", path("C:\\foo")), "C:/foo"); EXPECT_EQ(fmt::format("{}", path(L"\x0428\x0447\x0443\x0447\x044B\x043D\x0448"