[PATCH 0/1] newlib/libc/time/tzset_r.c(_tzset_unlocked_r): add POSIX <> quoted abbrs

Corinna Vinschen vinschen@redhat.com
Wed Feb 16 08:55:38 GMT 2022


On Feb 15 22:38, Brian Inglis wrote:
> On 2022-02-15 15:04, Brian Inglis wrote:
> > Submitted a newlib patch which builds okay, but cannot test, as I don't
> > have a newlib platform to run on, and Cygwin uses it's own TZ DB code
> > base.
> > It should accept up to 10 character abbreviations for STD and DST
> > matching POSIX specs including anything within < > quoted content.
> > If someone needing this could build, test, and send feedback, I'd
> > appreciate it.
> > ---
> >    newlib/libc/time/tzset_r.c | 68 ++++++++++++++++++++++++++++++++------
> >    1 file changed, 58 insertions(+), 10 deletions(-)
> 
> Regarding the 10 character limit above, reviewing the POSIX and tzset.c
> documentation, the size limit should be TZNAME_MAX, so some changes may need
> to be made to the values or the code, as _POSIX_TZNAME_MAX is the minimum
> acceptable value:
> 
> https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
> 
> and the value used should be that configured:
> 
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
> 
> also:
> 
> https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap08.html#tag_21_08_03_05
> 
> newlib/libc/include/sys/unistd.h:#define _SC_TZNAME_MAX			20
> newlib/libc/sys/rtems/include/limits.h:#define _POSIX_TZNAME_MAX	3
> newlib/libc/sys/rtems/include/limits.h:#define TZNAME_MAX		3
> winsup/cygwin/include/limits.h:#define _POSIX_TZNAME_MAX		6
> 
> Discussion of whether and how to define and align TZNAME_MAX values are
> welcome: Cygwin punts and leaves it undefined, so developers have a choice
> of using the alternatives unistd.h sysconf(_SC_TZNAME_MAX) or
> _POSIX_TZNAME_MAX.
> 
> I am inclined to use if defined in order:
> *	limits.h TZNAME_MAX
> *	unistd.h sysconf(_SC_TZNAME_MAX) if available
> *	limits.h _POSIX_TZNAME_MAX
> *	6!

I'd replace 6 with #error


Corinna



More information about the Newlib mailing list