|
Message-Id: <9F9B8A2F-E99E-4F88-94BF-26BF4A737DDE@gmail.com> Date: Mon, 25 Jul 2016 21:56:25 +0200 From: Julien Ramseier <j.ramseier@...il.com> To: musl@...ts.openwall.com Subject: [PATCH] strftime: fix %y format The following patch fixes the '%y' format in strftime/wcsftime when using negative tm_year values. Results: tm_year year before after ----------------------------------------- -2901 -1001 "-1" "01" -2900 -1000 "00" "00" -2899 -999 "-99" "99" -901 999 "-1" "99" -900 1000 "00" "00" -899 1001 "-99" "01" -1 1899 "-1" "99" 0 1900 "00" "00" 1 1901 "01" "01" --- src/time/strftime.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/time/strftime.c b/src/time/strftime.c index f1ccc4d..a303920 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -166,7 +166,8 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * item = T_FMT; goto nl_strftime; case 'y': - val = tm->tm_year % 100; + val = (tm->tm_year + 1900LL) % 100; + if (val < 0) val = -val; goto number; case 'Y': val = tm->tm_year + 1900LL; -- 2.9.2
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.