(my_strftime): Parse the colons of %:::z *after* the
authorJim Meyering <jim@meyering.net>
Wed, 14 Sep 2005 10:02:54 +0000 (10:02 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 14 Sep 2005 10:02:54 +0000 (10:02 +0000)
optional field width, not before, so we accept %9:z, not %:9z.

lib/strftime.c

index 16342da..932166e 100644 (file)
@@ -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)