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
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.