From 4306bb6246d4bdf02c2f8bcfa4e78ef6539ed0bf Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 5 Mar 2022 11:23:01 -0800 Subject: [PATCH] date: fix newly-introduced %%-N bug MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/date.c (adjust_resolution): Don’t mishandle %%-N. * tests/misc/date.pl (pct-pct): New test. --- src/date.c | 15 ++++++++++----- tests/misc/date.pl | 3 +++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/date.c b/src/date.c index 163141adcb..9a282e2f56 100644 --- a/src/date.c +++ b/src/date.c @@ -310,12 +310,17 @@ adjust_resolution (char const *format) char *copy = NULL; for (char const *f = format; *f; f++) - if (f[0] == '%' && f[1] == '-' && f[2] == 'N') + if (f[0] == '%') { - if (!copy) - copy = xstrdup (format); - copy[f + 1 - format] = '0' + res_width (gettime_res ()); - f += 2; + if (f[1] == '-' && f[2] == 'N') + { + if (!copy) + copy = xstrdup (format); + copy[f + 1 - format] = '0' + res_width (gettime_res ()); + f += 2; + } + else + f += f[1] == '%'; } return copy; diff --git a/tests/misc/date.pl b/tests/misc/date.pl index ef7080e334..f40a377023 100755 --- a/tests/misc/date.pl +++ b/tests/misc/date.pl @@ -313,6 +313,9 @@ my @Tests = ['mtz4', '-u -d "09:00T" +%T', {OUT => '16:00:00'}], ['mtz5', '-u -d "09:00X" +%T', {OUT => '20:00:00'}], ['mtz6', '-u -d "09:00Z" +%T', {OUT => '09:00:00'}], + + # test with %%-N + ['pct-pct', '+%%-N', {OUT => '%-N'}], ); # Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364. -- 2.47.2