The getsubopt man page documents the return value on error as: Otherwise, -1 is returned and *valuep is the entire name[=value] string. without mentioning that this is a nonstandard extension. A couple times now this has been raised against musl libc, which does not support the extension, and we looked into supporting it, but it looks like it violates our criteria for not supporting extensions where historical implementations have conflicting behavior, which POSIX's APPLICATION USAGE notes claim: The value of *valuep when getsubopt() returns -1 is unspecified. Historical implementations provide various incompatible extensions to allow an application to access the suboption text that was not found in the keylistp array. Source: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html It's also not entirely clear that presence of the extension conforms to the specified behavior. Perhaps the text could be amended to something like: Otherwise, -1 is returned. In this case, the GNU C Library stores a pointer to the entire name[=value] string in *valuep as an extension; other implementations may differ in their behavior. Rich