From 4bf12e00fbf51bc224d26bfee92ff80a2a44ce10 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 27 May 2024 23:17:01 +0200 Subject: [PATCH] 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. --- ChangeLog | 7 +++++++ doc/posix-functions/strftime.texi | 3 +++ lib/nstrftime.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index d089fb6234..6b90eb2bd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-05-27 Bruno Haible + + 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 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 -- 2.39.5