Bit me in https://github.com/thecoshman/http/issues/155: musl (and, thus, bionic) takes an int! Kill the "POSIX says 'request' is int" comment, POSIX says nothing about ioctl: it invented tc[gs]etattr() and tc[gs]etwinsize() to avoid having ioctl() at all, and STREAMS is long dead from POSIX. Note how the interface evolved in HISTORY. The NetBSD CVS has revision 1.1 date: 1993-03-21 10:45:37 +0100; author: cgd; state: Exp; branches: 1.1.1; Initial revision ---------------------------- revision 1.1.1.2 date: 1995-02-27 11:49:43 +0100; author: cgd; state: Exp; lines: +6 -6; from Lite ---------------------------- revision 1.1.1.1 date: 1993-03-21 10:45:37 +0100; author: cgd; state: Exp; lines: +0 -0; initial import of 386bsd-0.1 sources ---------------------------- and it's char * in 1.1.1.1 and 1.1.1.2 but ... in 1.1, so hell knows. Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx> --- man2/ioctl.2 | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/man2/ioctl.2 b/man2/ioctl.2 index 6b55d47c9..a658da354 100644 --- a/man2/ioctl.2 +++ b/man2/ioctl.2 @@ -20,9 +20,8 @@ .SH SYNOPSIS .nf .B #include <sys/ioctl.h> .PP -.BI "int ioctl(int " fd ", unsigned long " request ", ...);" -.\" POSIX says 'request' is int, but glibc has the above -.\" See https://bugzilla.kernel.org/show_bug.cgi?id=42705 +.BI "int ioctl(int " fd ", unsigned long " request ", ...);" "\fR /* glibc, BSD */\fP" +.BI "int ioctl(int " fd ", int " request ", ...);" "\fR /* musl, other UNIX */\fP" .fi .SH DESCRIPTION The @@ -103,7 +102,40 @@ .SH VERSIONS .SH STANDARDS None. .SH HISTORY -Version\~7 AT&T UNIX. +Version\~7 AT&T UNIX has +.nf +.ti +.5i +.BI "ioctl(int " fildes ", int " request ", struct sgttyb *" argp ); +.fi +(where +.B struct sgttyb +has historically been used by +.BR stty (2) +and +.BR gtty(2), +and is polymorphic by request type (like a +.B void * +would be, if it had been available)). +.PP +SysIII documents +.I arg +without a type at all. +.PP +4.3BSD has +.nf +.ti +.5i +.BI "ioctl(int " d ", unsigned long " request ", char *" argp ); +.fi +(with +.B char * +similarly in for +.BR "void *" ). +.PP +SysVr4 has +.nf +.ti +.5i +.BI "int ioctl(int " fildes ", int " request ", ... /* " arg " */);" +.fi .SH NOTES In order to use this call, one needs an open file descriptor. Often the -- 2.39.2
Attachment:
signature.asc
Description: PGP signature