On 3/9/21 1:34 PM, Eric Blake via austin-group-l at The Open Group wrote: > On 3/9/21 10:14 AM, shwaresyst wrote: >> >> To me that looks like a conformance violation and should be reverted. There >> is no _SC_SIGSTKSZ defined in <unistd.h> by the standard, to begin with, so >> that use of sysconf() is a non-portable extension on its own. > > Portable apps can't use _SC_SIGSTKSZ, but the standard generally permits > implementations to define further constants. Then again, re-reading XSH > 2.2.2: > > " Implementations may add symbols to the headers shown in the following > table, provided the identifiers for those symbols either: > > Begin with the corresponding reserved prefixes in the table, or > ..." > > but the table lacks a row for <unistd.h> with _CS_* and _SC_* constants. > Looks like you found an independent defect.
Not quite, because later it states "The following identifiers are reserved regardless of the inclusion of headers: 1. With the exception of identifiers beginning with the prefix _POSIX_, all identifiers that begin with an <underscore> and either an uppercase letter or another <underscore> are always reserved for any use by the implementation.", so an implementation can blindly add _SC_* constants at will without violating the standard. Still, I opened: https://www.austingroupbugs.net/view.php?id=1456 to try and add some clarification. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org