This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
Hi,
There was neither comment nor commit about this:
Samuel Thibault, le Sat 08 Sep 2007 02:53:04 +0200, a écrit :
> Roland McGrath, le Fri 07 Sep 2007 17:26:46 -0700, a écrit :
> > > Erf, defining OLCUC to 0x10 was actually a bad idea since it's OCRNL in
> > > BSD's oflags. In the patch below I used bit 7 since in BSD ioctl that
> > > was EVENP which is !PARODD cflag in termio. But maybe BSD people will
> > > define a flag for bit 7 someday so we should choose something else?
> >
> > OLCUC is a c_oflag bit. It only matters that it not conflict with other
> > c_oflag bits.
>
> Did all the old BSD ioctl flags get an equivalent in the termios
> interface? If not, it matters that OLCUC's value in oflag won't
> conflict with a value of an old BSD ioctl flag which would get added
> without name change into termios' oflags.
>
> > Since 0x80 is the next one BSD would add for something else,
> > it might be better to use a higher bit.
>
> Ok.
>
> > > There's also a problem with BSD's CDTRCTS, which is CRTS_IFLOW in GNU
> > > (part of CRTSCTS). I don't see how to fix it without either not support
> > > DTR/CTS on GNU or make existing binaries that use RTSCTS suddenly try to
> > > use DTR/CTS too (or just half of it).
> >
> > The Hurd term server doesn't actually support any of those bits, so there
> > is no practical compatibility problem with changing them for GNU. Neither
> > BSD nor Linux supports separate CRTS_IFLOW and CCTS_OFLOW bits, just a
> > single CRTSCTS bit. So I think it is fine to just harmonize completely
> > with the BSD bits here.
>
> Ok.
>
> > > +# ifdef BS1
> > > +# undef
> > > +# endif
> >
> > Need VT[01] in these lists too.
>
> These are not defined in the old BSD ioctl interface, so they don't
> conflict.
>
> > > +#endif /* __USE_MISC || __USE_XOPEN */
> > > +#define VTDLY (1 << 20) /* VT delay. */
> > > +#define VT0 (0 << 20) /* VT delay type 0. */
> > > +#define VT1 (1 << 20) /* VT delay type 1. */
> >
> > These belong inside that #if.
>
> Then the linux versions need that fix too.
>
> > > +#ifdef __USE_BSD
> > > +#define B7200 7200
> > > +#define B14400 14400
> > > +#define B28800 28800
> > > +#define B76800 76800
> > > +#endif
> > > #define B57600 57600
> >
> > There's no need to protect these. B[0-9]+ are all allowed.
>
> Ok.
>
> Samuel
>
> 2007-09-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
>
> * bits/ioctls.h (NL0, NL1, TAB0, TAB1, TAB2, CR0, CR1, CR2, CR3, FF0,
> FF1, BS0, BS1): Undefine these at start if they are already defined to
> avoid collision with termios.h.
> (NLDLY, TABDLY, CRDLY, VTDLY, BSDLY): Remove macros.
> * bits/termios.h [__USE_MISC || __USE_XOPEN] (NL0, NL1, TAB0,
> TAB1, TAB2, CR0, CR1, CR2, CR3, FF0, FF1, BS0, BS1): Likewise.
> (OLCUC): Change value of macro.
> [__USE_BSD || __USE_XOPEN] (OCRNL, ONOCR, ONLRET): New macros.
> [__USE_MISC || __USE_XOPEN] (NLDLY, NL0, NL1, TABDLY, TAB0, TAB1, TAB2,
> TAB3, CRDLY, CR0, CR1, CR2, CR3, FFDLY, FF0, FF1, BSDLY, BS0, BS1): New
> macros.
> [__USE_BSD] (CRTSCTS): Change value.
> (CRTS_IFLOW, CCTS_OFLOW): Change into compatibility macros.
> (CDTRCTS, CHWFLOW): New macros.
> [__USE_BSD] (B7200, B14400, B28800, B76800): New macros.
> (VTDLY, VT0, VT1): New macros.
>
> Index: sysdeps/mach/hurd/bits/ioctls.h
> ===================================================================
> RCS file: /cvs/glibc/libc/sysdeps/mach/hurd/bits/ioctls.h,v
> retrieving revision 1.10
> diff -u -p -r1.10 ioctls.h
> --- sysdeps/mach/hurd/bits/ioctls.h 7 Sep 2007 20:38:57 -0000 1.10
> +++ sysdeps/mach/hurd/bits/ioctls.h 8 Sep 2007 00:48:57 -0000
> @@ -25,6 +25,46 @@
>
> /* These macros are also defined in <bits/termios.h> (with numerically
> identical values) but this serves to shut up cpp's complaining. */
> +
> +#ifdef NL0
> +# undef
> +#endif
> +#ifdef NL1
> +# undef
> +#endif
> +#ifdef TAB0
> +# undef
> +#endif
> +#ifdef TAB1
> +# undef
> +#endif
> +#ifdef TAB2
> +# undef
> +#endif
> +#ifdef CR0
> +# undef
> +#endif
> +#ifdef CR1
> +# undef
> +#endif
> +#ifdef CR2
> +# undef
> +#endif
> +#ifdef CR3
> +# undef
> +#endif
> +#ifdef FF0
> +# undef
> +#endif
> +#ifdef FF1
> +# undef
> +#endif
> +#ifdef BS0
> +# undef
> +#endif
> +#ifdef BS1
> +# undef
> +#endif
> #ifdef MDMBUF
> # undef MDMBUF
> #endif
> @@ -284,31 +324,25 @@ enum __ioctl_datum { IOC_8, IOC_16, IOC_
> #define ODDP 0x00000040 /* get/send odd parity */
> #define EVENP 0x00000080 /* get/send even parity */
> #define ANYP 0x000000c0 /* get any parity/send none */
> -#define NLDLY 0x00000300 /* \n delay */
> -#define NLDELAY NLDLY /* traditional BSD name */
> +#define NLDELAY 0x00000300 /* \n delay */
> #define NL0 0x00000000
> #define NL1 0x00000100 /* tty 37 */
> #define NL2 0x00000200 /* vt05 */
> #define NL3 0x00000300
> -#define TABDLY 0x00000c00 /* horizontal tab delay */
> -#define TBDELAY TABDLY /* traditional BSD name */
> +#define TBDELAY 0x00000c00 /* horizontal tab delay */
> #define TAB0 0x00000000
> #define TAB1 0x00000400 /* tty 37 */
> #define TAB2 0x00000800
> -#define TAB3 0x00000c00
> #define XTABS 0x00000c00 /* expand tabs on output */
> -#define CRDLY 0x00003000 /* \r delay */
> -#define CRDELAY CRDLY /* traditional BSD name */
> +#define CRDELAY 0x00003000 /* \r delay */
> #define CR0 0x00000000
> #define CR1 0x00001000 /* tn 300 */
> #define CR2 0x00002000 /* tty 37 */
> #define CR3 0x00003000 /* concept 100 */
> -#define VTDLY 0x00004000 /* vertical tab delay */
> -#define VTDELAY VTDLY /* traditional BSD name */
> +#define VTDELAY 0x00004000 /* vertical tab delay */
> #define FF0 0x00000000
> #define FF1 0x00004000 /* tty 37 */
> -#define BSDLY 0x00008000 /* \b delay */
> -#define BSDELAY BSDLY /* traditional BSD name */
> +#define BSDELAY 0x00008000 /* \b delay */
> #define BS0 0x00000000
> #define BS1 0x00008000
> #define ALLDELAY (NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
> Index: bits/termios.h
> ===================================================================
> RCS file: /cvs/glibc/libc/bits/termios.h,v
> retrieving revision 1.7
> diff -u -p -r1.7 termios.h
> --- bits/termios.h 26 Jul 2001 21:23:31 -0000 1.7
> +++ bits/termios.h 8 Sep 2007 00:48:55 -0000
> @@ -24,6 +24,50 @@
> /* These macros are also defined in some <bits/ioctls.h> files (with
> numerically identical values), but this serves to shut up cpp's
> complaining. */
> +#if defined __USE_MISC || defined __USE_XOPEN
> +
> +# ifdef NL0
> +# undef
> +# endif
> +# ifdef NL1
> +# undef
> +# endif
> +# ifdef TAB0
> +# undef
> +# endif
> +# ifdef TAB1
> +# undef
> +# endif
> +# ifdef TAB2
> +# undef
> +# endif
> +# ifdef CR0
> +# undef
> +# endif
> +# ifdef CR1
> +# undef
> +# endif
> +# ifdef CR2
> +# undef
> +# endif
> +# ifdef CR3
> +# undef
> +# endif
> +# ifdef FF0
> +# undef
> +# endif
> +# ifdef FF1
> +# undef
> +# endif
> +# ifdef BS0
> +# undef
> +# endif
> +# ifdef BS1
> +# undef
> +# endif
> +
> +#endif /* __USE_MISC || __USE_XOPEN */
> +
> #ifdef __USE_BSD
>
> # ifdef MDMBUF
> @@ -93,11 +137,40 @@ struct termios
> #define OPOST (1 << 0) /* Perform output processing. */
> #ifdef __USE_BSD
> # define ONLCR (1 << 1) /* Map NL to CR-NL on output. */
> -# define OXTABS (1 << 2) /* Expand tabs to spaces. */
> +# define OXTABS TAB3 /* Expand tabs to spaces. */
> # define ONOEOT (1 << 3) /* Discard EOT (^D) on output. */
> #endif
> +#if defined __USE_BSD || defined __USE_XOPEN
> +# define OCRNL (1 << 4) /* Map CR to NL. */
> +# define ONOCR (1 << 5) /* Discard CR's when on column 0. */
> +# define ONLRET (1 << 6) /* Move to column 0 on NL. */
> +#endif
> +#if defined __USE_MISC || defined __USE_XOPEN
> +# define NLDLY (3 << 8) /* NL delay. */
> +# define NL0 (0 << 8) /* NL type 0. */
> +# define NL1 (1 << 8) /* NL type 1. */
> +# define TABDLY (3 << 10) /* TAB delay. */
> +# define TAB0 (0 << 10) /* TAB delay type 0. */
> +# define TAB1 (1 << 10) /* TAB delay type 1. */
> +# define TAB2 (2 << 10) /* TAB delay type 2. */
> +# define TAB3 (1 << 2) /* Expand tabs to spaces. */
> +# define CRDLY (3 << 12) /* CR delay. */
> +# define CR0 (0 << 12) /* CR delay type 0. */
> +# define CR1 (1 << 12) /* CR delay type 1. */
> +# define CR2 (2 << 12) /* CR delay type 2. */
> +# define CR3 (3 << 12) /* CR delay type 3. */
> +# define FFDLY (1 << 14) /* FF delay. */
> +# define FF0 (0 << 14) /* FF delay type 0. */
> +# define FF1 (1 << 14) /* FF delay type 1. */
> +# define BSDLY (1 << 15) /* BS delay. */
> +# define BS0 (0 << 15) /* BS delay type 0. */
> +# define BS1 (1 << 15) /* BS delay type 1. */
> +# define VTDLY (1 << 20) /* VT delay. */
> +# define VT0 (0 << 20) /* VT delay type 0. */
> +# define VT1 (1 << 20) /* VT delay type 1. */
> +#endif /* __USE_MISC || __USE_XOPEN */
> #ifdef __USE_GNU
> -# define OLCUC (1 << 9) /* Translate lower case output to upper case */
> +# define OLCUC (1 << 22) /* Translate lower case output to upper case */
> #endif
>
> /* Control modes. */
> @@ -117,10 +190,12 @@ struct termios
> #define HUPCL (1 << 14) /* Hang up on last close. */
> #define CLOCAL (1 << 15) /* Ignore modem status lines. */
> #ifdef __USE_BSD
> -# define CCTS_OFLOW (1 << 16) /* CTS flow control of output. */
> -# define CRTS_IFLOW (1 << 17) /* RTS flow control of input. */
> -# define CRTSCTS (CCTS_OFLOW|CRTS_IFLOW) /* CTS/RTS flow control. */
> -# define MDMBUF (1 << 20) /* Carrier flow control of output. */
> +# define CRTSCTS (1 << 16) /* RTS/CTS flow control. */
> +# define CRTS_IFLOW CRTSCTS /* Compatibility. */
> +# define CCTS_OFLOW CRTSCTS /* Compatibility. */
> +# define CDTRCTS (1 << 17) /* DTR/CTS flow control. */
> +# define MDMBUF (1 << 20) /* DTR/DCD flow control. */
> +# define CHWFLOW (MDMBUF|CRTSCTS|CDTRCTS) /* All types of flow control. */
> #endif
>
> /* Local modes. */
> @@ -210,13 +285,17 @@ struct termios
> #define B2400 2400 /* 2400 baud. */
> #define B4800 4800 /* 4800 baud. */
> #define B9600 9600 /* 9600 baud. */
> +#define B7200 7200 /* 7200 baud. */
> +#define B14400 14400 /* 14400 baud. */
> #define B19200 19200 /* 19200 baud. */
> +#define B28800 28800 /* 28800 baud. */
> #define B38400 38400 /* 38400 baud. */
> #ifdef __USE_MISC
> # define EXTA 19200
> # define EXTB 38400
> #endif
> #define B57600 57600
> +#define B76800 76800
> #define B115200 115200
> #define B230400 230400
> #define B460800 460800
- References:
- TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD
- Re: TAB*, NL*, BS* etc in <sys/ioctls.h> in GNU/Hurd and GNU/BSD