Re: [PATCH] grantpt.3: explicitly mention #define _XOPEN_SOURCE requirement

Emanuele Torre
2024-05-26T14:19:34Z

On Sun, May 26, 2024 at 12:39:07PM +0200, Alejandro Colomar wrote:
> Hi Emanuele,
>
> On Sun, May 26, 2024 at 08:42:18AM GMT, Emanuele Torre wrote:
> > Like the unlockpt(3) function, grantpt(3) requires _XOPEN_SOURCE to be
> > defined before including stdlib.h.
> >
> > unlockpt.3 explicitly shows this requirement in its SYNOPSIS:
> >
> > SYNOPSIS
> > #define _XOPEN_SOURCE
> > #include <stdlib.h>
> >
> > int unlockpt(int fd);
> >
> > But grantpt.3 did not:
> >
> > SYNOPSIS
> > #include <stdlib.h>
> >
> > int grantpt(int fd);
> >
> > o/
> > emanuele6
>
> Patch applied; thanks.

I've just noticed that ptsname.3 is also missing #define _XOPEN_SOURCE
in its synopsis; however #define _XOPEN_SOURCE does not seem to work.

Even if _XOPEN_SOURCE is defined, #include <stdlib.h> does not include
the prototype of ptsname(3). It seems to only be included when
_GNU_SOURCE is defined.

This may be a glibc bug because ptsname(3) is supposed to be a POSIX XSI
function like grantpt(3) and unlockpt(3). Only ptsname_r(3) is an
extension.

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ptsname.html

$ gcc -fsyntax-only -D_XOPEN_SOURCE -includestdlib.h -x c - <<< 'int main(){ptsname(0);}'
<stdin>: In function ‘main’:
<stdin>:1:12: error: implicit declaration of function ‘ptsname’ [-Wimplicit-function-declaration]

$ gcc -fsyntax-only -D_GNU_SOURCE -includestdlib.h -x c - <<< 'int main(){ptsname(0);}'

I am using the version of glibc packaged by ArchLinux
(package version 2.39+r52+gf8e4623421-1).

I added libc-alpha@sourceware.org to CC in case it is actually a bug.

>
> Have a lovely day!

You too! :-)

> Alex

o/
emanuele6