bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nstrftime, c-nstrftime: Make %r work on native Windows


From: Bruno Haible
Subject: nstrftime, c-nstrftime: Make %r work on native Windows
Date: Mon, 27 May 2024 23:32:14 +0200

On mingw, I see that the %r specifier testing code runs into the assertion
of  ASSERT (n > 0).

This patch adds support for the %r specifier.


2024-05-27  Bruno Haible  <bruno@clisp.org>

        nstrftime, c-nstrftime: Make %r work on native Windows.
        * doc/posix-functions/strftime.texi: Mention the %r problem.
        * lib/strftime.c (__strftime_internal): On native Windows, for %r, use
        the English AM/PM format.

diff --git a/doc/posix-functions/strftime.texi 
b/doc/posix-functions/strftime.texi
index 7cba218a97..3a2eceb8ef 100644
--- a/doc/posix-functions/strftime.texi
+++ b/doc/posix-functions/strftime.texi
@@ -28,6 +28,9 @@
 The %h specifier produces empty output on some platforms:
 mingw, MSVC.
 @item
+The %r specifier produces empty output on some platforms:
+mingw, MSVC.
+@item
 The %r specifier produces empty output, at least in a French locale,
 on some platforms:
 macOS 12.5, FreeBSD 14.0.
diff --git a/lib/strftime.c b/lib/strftime.c
index ccfa79daac..8eeea45ef4 100644
--- a/lib/strftime.c
+++ b/lib/strftime.c
@@ -1717,8 +1717,9 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG 
(size_t maxsize)
 #elif USE_C_LOCALE && !HAVE_STRFTIME_L
           subfmt = L_("%I:%M:%S %p");
           goto subformat;
-#elif (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__
-          /* macOS, FreeBSD strftime() may produce empty output for "%r".  */
+#elif (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || 
(defined _WIN32 && !defined __CYGWIN__)
+          /* macOS, FreeBSD, native Windows strftime() may produce empty output
+             for "%r".  */
           subfmt = L_("%I:%M:%S %p");
           goto subformat;
 #else






reply via email to

[Prev in Thread] Current Thread [Next in Thread]