This is the mail archive of the
mailing list for the Cygwin project.
Re: Cygwin strptime() is missing "%s" which strftime() has
- From: Brian Inglis <Brian dot Inglis at SystematicSw dot ab dot ca>
- To: cygwin at cygwin dot com
- Date: Tue, 29 Aug 2017 18:25:08 -0600
- Subject: Re: Cygwin strptime() is missing "%s" which strftime() has
- Authentication-results: sourceware.org; auth=none
- References: <BY1PR09MB0343663DE41D927E67CF0CCEA5BB0@BY1PR09MB0343.namprd09.prod.outlook.com> <email@example.com> <a7b1040f-baf7-cf7f-80c0-90349583ad14@Shaw.ca> <firstname.lastname@example.org> <f31c3fdb-7e17-0238-4bb2-a0e6c8dd6b5e@SystematicSw.ab.ca>
- Reply-to: Brian dot Inglis at SystematicSw dot ab dot ca
On 2017-07-25 10:47, Brian Inglis wrote:
> On 2017-07-24 17:18, Kaz Kylheku wrote:
>> On 24.07.2017 15:51, Brian Inglis wrote:
>>> On 2017-07-24 15:02, Hans-Bernhard Bröker wrote:
>>>> Am 24.07.2017 um 04:09 schrieb Lavrentiev, Anton (NIH/NLM/NCBI) [C]:
>>>>> rather it's a question about portability of code that
>>>>> uses %s for both functions and expects it to work unchanged in the
>>>>> Cygwin environment.
>>>> And the answer to that question is: such code _is_not_portable_, and therefore
>>>> that expectation is wrong.
>>>> If that code claims to be portable, then its use of %s in either of those
>>>> functions constitutes a _bug_.
>>>> In the old days there was a well-known fallacy known by the slogan "all the
>>>> world's a VAX." Nowadays it appears to have been replaced by an equally
>>>> wide-spread, and equally incorrect belief that all the world is Linux. Well,
>>>> it's not. Not even the whole Un*x world is Linux.
>>> Rather "all the world's a GNU" i.e. glibc, but there's also BSD libc, RTEMS and
>>> Cygwin newlib, and others.
>> Since the utilities depend on the C library functionality for strptime and
>> strftime, even having GNU utilities won't help.
>> There doesn't appear any nice way in POSIX shell scripting to have access to
>> the seconds since the Epoch.
>> If you have GNU Awk, it has some time functions like mktime, which don't rely
>> on any C library extensions.
> If you have GNU gawk you probably also have GNU coreutils date, which supports
> +%s for output and -d@nnnnnnnnnn for input, whether or not the system strftime
> and strptime support %s.
> GNU coreutils date with shell arithmetic is adequate to support shell script
> conversions between time scales with different epochs e.g. Julian Day, Modified
> Julian Day, NTP, Unix, GPS, and calculations using those values.
> Awk, JS, or some other language supporting FP is required for subsecond or
> fractional day accuracy with convenient output.
Patch in latest test release provides %s support for strptime(3) used by
Another strptime(3) patch was just submitted to fix %F handling.
More newlib time patches coming to fix handling years around INT_MAX and high
values of time_t.
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple