]> sourceware.org Git - glibc.git/blobdiff - bits/termios.h
stdio-common: Handle -1 buffer size in __sprintf_chk & co (bug 30039)
[glibc.git] / bits / termios.h
index b05bc18e88435d16baa1a1cf96851f307f68a2af..4439c2f14e95c0aae2d872144047e17521de4e5f 100644 (file)
@@ -1,21 +1,20 @@
 /* termios type and macro definitions.  4.4 BSD/generic GNU version.
-   Copyright (C) 1993,94,96,97,99 Free Software Foundation, Inc.
+   Copyright (C) 1993-2023 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
    The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
 
 #ifndef _TERMIOS_H
 # error "Never include <bits/termios.h> directly; use <termios.h> instead."
 /* These macros are also defined in some <bits/ioctls.h> files (with
    numerically identical values), but this serves to shut up cpp's
    complaining. */
-#ifdef __USE_BSD
+#if defined __USE_MISC || defined __USE_XOPEN
+
+# ifdef NL0
+#  undef NL0
+# endif
+# ifdef NL1
+#  undef NL1
+# endif
+# ifdef TAB0
+#  undef TAB0
+# endif
+# ifdef TAB1
+#  undef TAB1
+# endif
+# ifdef TAB2
+#  undef TAB2
+# endif
+# ifdef CR0
+#  undef CR0
+# endif
+# ifdef CR1
+#  undef CR1
+# endif
+# ifdef CR2
+#  undef CR2
+# endif
+# ifdef CR3
+#  undef CR3
+# endif
+# ifdef FF0
+#  undef FF0
+# endif
+# ifdef FF1
+#  undef FF1
+# endif
+# ifdef BS0
+#  undef BS0
+# endif
+# ifdef BS1
+#  undef BS1
+# endif
+
+#endif /* __USE_MISC || __USE_XOPEN */
+
+#ifdef __USE_MISC
 
 # ifdef MDMBUF
 #  undef MDMBUF
@@ -36,7 +79,7 @@
 #  undef PENDIN
 # endif
 
-#endif /* __USE_BSD */
+#endif /* __USE_MISC */
 
 #ifdef ECHO
 # undef ECHO
@@ -80,23 +123,66 @@ struct termios
 #define        ICRNL   (1 << 8)        /* Map CR to NL on input.  */
 #define        IXON    (1 << 9)        /* Enable start/stop output control.  */
 #define        IXOFF   (1 << 10)       /* Enable start/stop input control.  */
-#ifdef __USE_BSD
-#define        IXANY   (1 << 11)       /* Any character will restart after stop.  */
-#define        IMAXBEL (1 << 13)       /* Ring bell when input queue is full.  */
+#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_XOPEN2K8
+# define IXANY (1 << 11)       /* Any character will restart after stop.  */
+#endif
+#ifdef __USE_MISC
+# define IMAXBEL (1 << 13)     /* Ring bell when input queue is full.  */
+#endif
+#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
+# define IUCLC (1 << 14)       /* Translate upper case input to lower case. */
 #endif
 
   /* Output modes.  */
   tcflag_t c_oflag;
 #define        OPOST   (1 << 0)        /* Perform output processing.  */
-#ifdef __USE_BSD
+#if defined __USE_MISC || defined __USE_XOPEN
 # define ONLCR (1 << 1)        /* Map NL to CR-NL on output.  */
-# define OXTABS        (1 << 2)        /* Expand tabs to spaces.  */
-# define ONOEOT        (1 << 8)        /* Discard EOT (^D) on output.  */
+#endif
+#ifdef __USE_MISC
+# define OXTABS        TAB3            /* Expand tabs to spaces.  */
+# define ONOEOT        (1 << 3)        /* Discard EOT (^D) on output.  */
+#endif
+#if defined __USE_MISC || 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 | 1 << 2)      /* 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 << 16)       /* VT delay.  */
+# define VT0   (0 << 16)       /* VT delay type 0.  */
+# define VT1   (1 << 16)       /* VT delay type 1.  */
+#endif /* __USE_MISC || __USE_XOPEN */
+#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
+# define OLCUC (1 << 17)       /* Translate lower case output to upper case */
+#endif
+#ifdef __USE_XOPEN
+# define OFILL (1 << 18)       /* Send fill characters for delays.  */
+# define OFDEL (1 << 19)       /* Fill is DEL.  */
 #endif
 
   /* Control modes.  */
   tcflag_t c_cflag;
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define CIGNORE       (1 << 0)        /* Ignore these control flags.  */
 #endif
 #define        CSIZE   (CS5|CS6|CS7|CS8)       /* Number of bits per byte (mask).  */
@@ -110,16 +196,18 @@ struct termios
 #define        PARODD  (1 << 13)       /* Odd parity instead of even.  */
 #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.  */
+#ifdef __USE_MISC
+# 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.  */
   tcflag_t c_lflag;
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define ECHOKE        (1 << 0)        /* Visual erase for KILL.  */
 #endif
 #define        _ECHOE  (1 << 1)        /* Visual erase for ERASE.  */
@@ -130,7 +218,7 @@ struct termios
 #define        ECHO    _ECHO
 #define        _ECHONL (1 << 4)        /* Echo NL even if ECHO is off.  */
 #define        ECHONL  _ECHONL
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define ECHOPRT       (1 << 5)        /* Hardcopy visual erase.  */
 # define ECHOCTL       (1 << 6)        /* Echo control characters as ^X.  */
 #endif
@@ -138,51 +226,58 @@ struct termios
 #define        ISIG    _ISIG
 #define        _ICANON (1 << 8)        /* Do erase and kill processing.  */
 #define        ICANON  _ICANON
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define ALTWERASE (1 << 9)    /* Alternate WERASE algorithm.  */
 #endif
 #define        _IEXTEN (1 << 10)       /* Enable DISCARD and LNEXT.  */
 #define        IEXTEN  _IEXTEN
-#define        EXTPROC (1 << 11)       /* External processing.  */
+#ifdef __USE_MISC
+# define EXTPROC       (1 << 11)       /* External processing.  */
+#endif
 #define        _TOSTOP (1 << 22)       /* Send SIGTTOU for background output.  */
 #define        TOSTOP  _TOSTOP
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define FLUSHO        (1 << 23)       /* Output being flushed (state).  */
+#endif
+#if defined __USE_XOPEN && !defined __USE_XOPEN2K
+# define XCASE (1 << 24)       /* Canonical upper/lower case.  */
+#endif
+#ifdef __USE_MISC
 # define NOKERNINFO (1 << 25)  /* Disable VSTATUS.  */
 # define PENDIN        (1 << 29)       /* Retype pending input (state).  */
 #endif
-#define        _NOFLSH (1 << 31)       /* Disable flush after interrupt.  */
+#define        _NOFLSH (1U << 31)      /* Disable flush after interrupt.  */
 #define        NOFLSH  _NOFLSH
 
   /* Control characters.  */
 #define        VEOF    0               /* End-of-file character [ICANON].  */
 #define        VEOL    1               /* End-of-line character [ICANON].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VEOL2 2               /* Second EOL character [ICANON].  */
 #endif
 #define        VERASE  3               /* Erase character [ICANON].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VWERASE       4               /* Word-erase character [ICANON].  */
 #endif
 #define        VKILL   5               /* Kill-line character [ICANON].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VREPRINT 6            /* Reprint-line character [ICANON].  */
 #endif
 #define        VINTR   8               /* Interrupt character [ISIG].  */
 #define        VQUIT   9               /* Quit character [ISIG].  */
 #define        VSUSP   10              /* Suspend character [ISIG].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VDSUSP        11              /* Delayed suspend character [ISIG].  */
 #endif
 #define        VSTART  12              /* Start (X-ON) character [IXON, IXOFF].  */
 #define        VSTOP   13              /* Stop (X-OFF) character [IXON, IXOFF].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VLNEXT        14              /* Literal-next character [IEXTEN].  */
 # define VDISCARD 15           /* Discard character [IEXTEN].  */
 #endif
 #define        VMIN    16              /* Minimum number of bytes read at once [!ICANON].  */
 #define        VTIME   17              /* Time-out value (tenths of a second) [!ICANON].  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define VSTATUS       18              /* Status character [ICANON].  */
 #endif
 #define        NCCS    20              /* Value duplicated in <hurd/tioctl.defs>.  */
@@ -204,12 +299,31 @@ 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_BSD
+#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
+#define        B500000 500000
+#define        B576000 576000
+#define        B921600 921600
+#define        B1000000 1000000
+#define        B1152000 1152000
+#define        B1500000 1500000
+#define        B2000000 2000000
+#define        B2500000 2500000
+#define        B3000000 3000000
+#define        B3500000 3500000
+#define        B4000000 4000000
 };
 
 #define _IOT_termios /* Hurd ioctl type field.  */ \
@@ -219,7 +333,7 @@ struct termios
 #define        TCSANOW         0       /* Change immediately.  */
 #define        TCSADRAIN       1       /* Change when pending output is written.  */
 #define        TCSAFLUSH       2       /* Flush pending input before changing.  */
-#ifdef __USE_BSD
+#ifdef __USE_MISC
 # define TCSASOFT      0x10    /* Flag: Don't alter hardware state.  */
 #endif
 
This page took 0.036628 seconds and 5 git commands to generate.