Re: Fw: [PATCH 1/2] strftime.c(__strftime): add %i, %q, %v, tests; tweak %Z docs
Brian Inglis <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Organization | Systematic Software |
| Message-ID | <[email protected]> |
On 2022-10-21 06:12, Corinna Vinschen wrote: > On Oct 20 16:07, Brian Inglis wrote: >> On 2022-10-18 08:03, Corinna Vinschen wrote: >>> On Sep 19 11:51, C Howland wrote: >>>> On Saturday, September 17, 2022 1:00 AM, Brian Inglis wrote: >>>>> newlib/libc/time/strftime.c(__strftime): >>>>> %i year in century [00..99] Synonym for "%y". Non-POSIX extension. >>>>> [tm_year] >>>>> %q GNU quarter of the year (from `<<1>>' to `<<4>>') [tm_mon] >>>>> %v OSX/Ruby VMS/Oracle date "%d-%b-%Y". Non-POSIX extension. [tm_mday, >>>>> tm_mon, tm_year] >>>>> add %i %q %v tests >>>>> %Z clarify current time zone *abbreviation* not "name" [tm_isdst] >>>>> --- >>>>> newlib/libc/time/strftime.c | 67 +++++++++++++++++++++++++++++++++++-- >>>>> 1 file changed, 64 insertions(+), 3 deletions(-) >> >>> - %i: Where is used and documented? I don't see this in glibc, not even >>> in the latest from the glibc git repo. >> >> Some portable language implementations for non-Unix platforms that I came >> across and documented but did not keep track of, and now can't find! > > So we don't have that in either BSD, nor GNU, nor POSIX, but only > in other non-POSIX platforms. Hmm. Along these lines, we could also > make a case for supporting Microsoft's %I64 printf format and I'm > not so hot on that... > > For the time being, please let's drop %i. Defining it now may result in > accidental collisions with the POSIX standard, should it get extended. > >>> - %q: Ditto. For a GNU extension, it's surprisingly absent from the >>> most recent glibc code, or do I miss something? >> >> Looks like this may have been lost in the discussion: >> >> https://inbox.sourceware.org/libc-alpha/[email protected]/ >> >> but as he says, it was already in gnulib, and made it into date the same month: >> >> https://git.savannah.gnu.org/cgit/coreutils.git/diff/?id=30012b290facf66551cdf395ace397903d00483d > > Ok, that's fine then. > >>> - %v: OSX/Ruby? Isn't that already gone? Also, it introduces another >>> ambiguous date format where %F or equivalent should be used instead. >> >> All the BSDs, Darwin, Oracle, and Ruby support it: it is localized, but not >> ambiguous, as it's dd-Mon-yyyy. > > I found it in all three BSDs with a comment > > /* > ** From Arnold Robbins' strftime version 3.0: > ** "date as dd-bbb-YYYY" > ** (ado, 1993-05-24) > */ > > Also, it's defined as a recursion with the format "%e-%b-%Y", > unconditionally (no padding, etc). Maybe we should replicate that > verbatim (including the comment) to keep in line with BSD. > > Also, the BSDs do *not* define %v in strptime, so I think we shouldn't > do this either. It may accidentally collide with a standards extension, > just as %i. Consensus seems to be that, as it's been claimed by BSDs, it may be standardized or will have to be avoided: but no problem with your decision to drop from strptime. Noticed "%+" in man-pages-linux and BSD strftime(3) defined as default locale (C/POSIX) date(1) format like as/ctime with %Z - "%a %b %e %T %Z %Y". Presumably added so that the previous default locale output could easily be provided for backward compatibility once %c %x %X could be localized. Should I also add this to our newlib strftime patch? Are there pointers to that default locale and "%c" format in newlib and Cygwin? I will search and check but could miss something defined away in the wild. Presumably I should also drop %i and %v from Cygwin strptime.cc patch on cygwin-patches? -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry