POSIX-2024 and dirent.h

Corinna Vinschen vinschen@redhat.com
Thu Aug 15 15:04:11 GMT 2024


On Aug 14 21:45, Corinna Vinschen wrote:
> On Aug 14 13:53, Joel Sherrill wrote:
> > Hi
> > 
> > POSIX Issue 8 (2024) adds the following to dirent.h:
> > 
> > DT_BLK, DT_CHR, DT_DIR, DT_FIFO, DT_LNK, DT_REG, DT_SOCK, DT_UNKNOWN,
> > DT_MQ, DT_SEM, DT_SHM, and DT_TMO
> > 
> > These were not mentioned in POSIX Issue 7 (2018).
> > 
> > The default dirent.h and sys/dirent.h do not support anything. I only see
> > the DT_ constants in the sys/rtems version.
> > 
> > The sys/rtems version has the constants inside a __BSD_VISIBLE guard.
> > 
> > I think these should also be under a (_POSIX_C_SOURCE >= 202405L) guard.
> > 
> > I am looking for concurrence and whether adding a check for 202405L has any
> > impact on sys/features.h. POSIX-2018 (Issue 7) still specifies
> > using 200809L for _POSIX_C_SOURCE.
> 
> Yes, this should be added to sys/features.h with a matching __POSIX_VISIBLE
> which in turn should be used in the affected headers.  _GNU_SOURCE and
> _DEFAULT_SOURCE should set _POSIX_C_SOURCE to 202405L. _XOPEN_SOURCE is
> unaffected.

There's an interesting twist.

Even the latest sources of GLibC define _POSIX_C_SOURCE to 200809L if
_GNU_SOURCE has been defined.

It's a good question what to do with _POSIX_C_SOURCE in this case.

- Compatibility with _GNU_SOURCE upstream means to keep _POSIX_C_SOURCE
at 200809L.

- But GLibC just didn't have to change features.h because none of the
  new interfaces is available in their headers yet.  And _GNU_SOURCE
  usually translates as "everything amd the kitchen sink".  That would
  speak for going forward and bump _POSIX_C_SOURCE to 202405L.

Personally I'd go for the second option.  Any strong reservations?


Thanks,
Corinna



More information about the Newlib mailing list