Re: Fw: [PATCH 1/2] strftime.c(__strftime): add %i, %q, %v, tests; tweak %Z docs

Corinna Vinschen <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
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.


Thanks,
Corinna
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.