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,
Roland McGrath, le Fri 07 Sep 2007 14:24:27 -0700, a écrit :
> Also, OLCUC and IUCLC are GNU extensions to termios that noone actually uses.
> So it wouldn't be a problem in practice to change those bit assignments.
>
> The termios bit assignments were chosen to match BSD bits.
Ok, I understand much better all of this. Here is a patch to clean that.
It moves *DLY definitions in termios.h (where it belongs actually), adds
*[0-3] definitions there, and fixes the confusion between VT and FF. It
moves the OLCUC oflag into the value 0x10, which is safe concerning the
BSD interface compatibility since in BSD that's ECHO, an lflag. It also
uses 0x100000 for VT1, which is safe too since in BSD it's MDMBUF, a
cflag.
Samuel
2007-09-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
* bits/ioctls.h (NL0, NL1, TAB0, TAB1, TAB2, TAB3, 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, TAB3, CR0, CR1, CR2, CR3, FF0, FF1, BS0, BS1): Likewise.
(OLCUC): Change value of macro.
[__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.
(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.9
diff -u -p -r1.9 ioctls.h
--- sysdeps/mach/hurd/bits/ioctls.h 10 Aug 2007 22:50:53 -0000 1.9
+++ sysdeps/mach/hurd/bits/ioctls.h 7 Sep 2007 22:23:47 -0000
@@ -25,6 +25,49 @@
/* 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 TAB3
+# 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,30 +327,26 @@ 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 7 Sep 2007 22:23:38 -0000
@@ -24,6 +24,53 @@
/* 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 TAB3
+# 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
@@ -97,8 +144,32 @@ struct termios
# define ONOEOT (1 << 3) /* Discard EOT (^D) on output. */
#endif
#ifdef __USE_GNU
-# define OLCUC (1 << 9) /* Translate lower case output to upper case */
+# define OLCUC (1 << 4) /* Translate lower case output to upper case */
#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 (3 << 10) /* 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. */
+#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. */
/* Control modes. */
tcflag_t c_cflag;