Hello Alex, On 4/22/21 10:44 AM, Alejandro Colomar wrote: > I can't see a reason to include it. <fcntl.h> provides O_* > constants for 'flags', S_* constants for 'mode', and mode_t. > > Probably a long time ago, some of those weren't defined in > <fcntl.h>, and both headers needed to be included, or maybe it's > a historical error. > > Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx> So, I am uncertain what to do about this patch. I agree that we don't need the <sys/stat.h> on Linux. But, look at open(3p): SYNOPSIS #include <sys/stat.h> #include <fcntl.h> int open(const char *path, int oflag, ...); O_CREAT [...] and the access permission bits (see <sys/stat.h>) of the file mode shall be set to the value of the argument following the oflag argument taken as type mode_t modified as follows... But, seemingly in contradiction, fcntl.h(0p) says: The <fcntl.h> header shall define the symbolic constants for file modes for use as values of mode_t as described in <sys/stat.h>. It almost seems like a small bug in POSIX. I see also that open(2) on FreeBSD mentions only the need to include <fcntl.h>. What are your thoughts on the above. I'm willing to apply your patch if you still think we should apply it. Thanks, Michael > --- > man2/open.2 | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/man2/open.2 b/man2/open.2 > index bac1ee806..1bcd995f4 100644 > --- a/man2/open.2 > +++ b/man2/open.2 > @@ -53,7 +53,6 @@ > open, openat, creat \- open and possibly create a file > .SH SYNOPSIS > .nf > -.B #include <sys/stat.h> > .B #include <fcntl.h> > .PP > .BI "int open(const char *" pathname ", int " flags ); > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/