[tz] Question about bug seen in OpenBSD and FreeBSD related to tzname

Andras Farkas deepbluemistake at gmail.com
Sat Nov 23 06:40:38 UTC 2019


There's also HAVE_TZSET
(my bad for sending three emails in a row like this!)

On Sat, Nov 23, 2019 at 1:37 AM Andras Farkas <deepbluemistake at gmail.com> wrote:
>
> I noticed something in the NEWS file and in the code after sending this email.
> I see that in tzcode, along with USG_COMPAT for the XSI-required
> (optional in POSIX) daylight and timezone, there is HAVE_TZNAME for
> tzname, which is required by POSIX (and hence also in POSIX+XSI)
> Thus, the macros already exist for this separation of standards and
> optional/required stuff.
>
> On Sat, Nov 23, 2019 at 1:27 AM Andras Farkas <deepbluemistake at gmail.com> wrote:
> >
> > On Fri, Nov 22, 2019 at 9:30 PM Paul Eggert <eggert at cs.ucla.edu> wrote:
> > > What happens if you compile with -DHAVE_POSIX_DECLS=0? Arguably it
> > > should be set that way if FreeBSD does not declare the POSIX-required
> > > 'daylight' and 'timezone'.
> > With CFLAGS set to -DHAVE_POSIX_DECLS=0 alone, things compile and date
> > runs A-OK.
> > With CFLAGS set to '-DHAVE_POSIX_DECLS=0 -DUSG_COMPAT=1' the
> > compilation fails, albeit in a different way from with -DUSG_COMPAT=1
> > alone.  Should I send both sorts of failures as text files?
> > > I see now that POSIX marks 'daylight' and 'timezone' with "XSI", meaning
> > > it's optional and present only if the X/Open Systems Interfaces option
> > > is supported, so perhaps tzcode should have a different macro for
> > > identifiers that are XSI rather than core POSIX.
> > Correct.  The standard is separated into core POSIX, and POSIX+XSI
> > (known combined as SUS, UNIX, X/Open, and a bunch of other names)
> > The read-only (or intended to be read-only in your C program, and set
> > by the implementation, i.e. the OS) C macros are:
> > _POSIX_VERSION
> > _POSIX2_VERSION
> > _XOPEN_VERSION
> > The macros intended to be set within a C program's source are:
> > _POSIX_C_SOURCE
> > _XOPEN_SOURCE
> > In all these cases, if a XOPEN macro is set to something, you can
> > already assume a POSIX value too, since POSIX is a subset of XOPEN,
> > and XOPEN a superset of POSIX.
> > Hence, daylight and timezone might be considered XSI-required rather
> > than POSIX-required, when using those words specifically.
> > A quick grep shows tzcode does already uses _POSIX_VERSION and _XOPEN_VERSION
> > (I wonder if USG_COMPAT could be replaced entirely by POSIX and XOPEN
> > macros, but I'll have to look more deeply into that tonight before
> > saying what I think about that)
> >
> > As a historical note, I think more XSI extensions to POSIX are
> > SystemV-biased than BSD-biased, with a lot of them coming from the
> > SVID.  (though there are a couple BSD-biased XSI extensions, too)
> > That's just a note and not a judgment or anything. uwu


More information about the tz mailing list