summaryrefslogtreecommitdiff
path: root/lib/strftime.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/strftime.c')
-rw-r--r--lib/strftime.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/strftime.c b/lib/strftime.c
index 16342da8c..932166eaf 100644
--- a/lib/strftime.c
+++ b/lib/strftime.c
@@ -596,11 +596,6 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
pad = *f;
continue;
- /* This influences the %z format. */
- case L_(':'):
- colons++;
- continue;
-
/* This changes textual output. */
case L_('^'):
to_uppcase = true;
@@ -648,6 +643,19 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
break;
}
+ /* Parse the colons of %:::z *after* the optional field width,
+ not before, so we accept %9:z, not %:9z. */
+ {
+ const CHAR_T *q;
+ for (q = f; *q == ':' && q - f < 3; q++)
+ ; /* empty */
+ if (*q == 'z')
+ {
+ colons = q - f;
+ f = q;
+ }
+ }
+
/* Now do the specified format. */
format_char = *f;
switch (format_char)