This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]