]> git.ipfire.org Git - thirdparty/git.git/commit - compat/mingw.c
mingw: use modern strftime implementation if possible
authorMatthias Aßhauer <mha1993@live.de>
Wed, 8 Apr 2020 17:58:49 +0000 (17:58 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 8 Apr 2020 19:15:50 +0000 (12:15 -0700)
commita748f3f3dc0adff1d8a83dfc098ed819658998d0
tree8f916fdb495b2d2e40c4741ef18d6a32d87f6c77
parent274b9cc25322d9ee79aa8e6d4e86f0ffe5ced925
mingw: use modern strftime implementation if possible

Microsoft introduced a new "Universal C Runtime Library" (UCRT) with
Visual Studio 2015. The UCRT comes with a new strftime() implementation
that supports more date formats. We link git against the older
"Microsoft Visual C Runtime Library" (MSVCRT), so to use the UCRT
strftime() we need to load it from ucrtbase.dll using
DECLARE_PROC_ADDR()/INIT_PROC_ADDR().

Most supported Windows systems should have recieved the UCRT via Windows
update, but in some cases only MSVCRT might be available. In that case
we fall back to using that implementation.

With this change, it is possible to use e.g. the `%g` and `%V` date
format specifiers, e.g.

git show -s --format=%cd --date=format:‘%g.%V’ HEAD

Without this change, the user would see this error message on Windows:

fatal: invalid strftime format: '‘%g.%V’'

This fixes https://github.com/git-for-windows/git/issues/2495

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/mingw.c