Web lists-archives.com

Re: Cygwin strptime() is missing "%s" which strftime() has

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.

    $ gawk 'BEGIN { print mktime("2017 07 22 12 31 55") }'
    $ gawk 'BEGIN { print systime() }'

If you can install GNU Awk on a system, chances are you can get some real programming language, too, though. GNU Awk may be a little more common in that if, for your given OS, a bundle of freeware exists, chances are good
that GNU Awk is part of its core.

Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple