From: Bruno Haible <bruno@clisp.org>
Date: Mon, 27 May 2024 21:17:01 +0000 (+0200)
Subject: nstrftime: Make %h work on native Windows.
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=b4632f937f13fd72956387a75a1e14cb4ce17b33;p=gnulib.git

nstrftime: Make %h work on native Windows.

* doc/posix-functions/strftime.texi: Mention the %h problem.
* lib/nstrftime.c (__strftime_internal): On native Windows, for %h, do a
%b directive.
---

diff --git a/ChangeLog b/ChangeLog
index 8a90f3e2f1..bc9c4e8901 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2024-05-27  Bruno Haible  <bruno@clisp.org>
+
+	nstrftime: Make %h work on native Windows.
+	* doc/posix-functions/strftime.texi: Mention the %h problem.
+	* lib/nstrftime.c (__strftime_internal): On native Windows, for %h, do a
+	%b directive.
+
 2024-05-27  Bruno Haible  <bruno@clisp.org>
 
 	nstrftime: Make %c work on native Windows.
diff --git a/doc/posix-functions/strftime.texi b/doc/posix-functions/strftime.texi
index a4b47dc343..b0bd2b536e 100644
--- a/doc/posix-functions/strftime.texi
+++ b/doc/posix-functions/strftime.texi
@@ -20,6 +20,9 @@ The %c specifier produces no weekday name and no month name, only a
 potentially ambiguous numerical output, on some platforms:
 mingw, MSVC.
 @item
+The %h specifier produces empty output on some platforms:
+mingw, MSVC.
+@item
 The Windows C runtime library (which is used by MinGW) does not
 support the %e specifier (and possibly the other more recent SUS
 specifiers too, i.e., %C, %D, %h, %n, %r, %R, %t, and %T).
diff --git a/lib/nstrftime.c b/lib/nstrftime.c
index a7b8a41146..ed9118ab1c 100644
--- a/lib/nstrftime.c
+++ b/lib/nstrftime.c
@@ -807,6 +807,9 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
             cpy (am_len, a_month);
           break;
 #else
+# if defined _WIN32 && !defined __CYGWIN__
+          format_char = L_('b');
+# endif
           goto underlying_strftime;
 #endif