NAME

     termios,  tcgetattr,  tcsetattr,  cfgetispeed,  cfgetospeed,
     cfsetispeed,  cfsetospeed,  tcsendbreak,  tcdrain,  tcflush,
     tcflow - change terminal attributes


SYNOPSIS

     #include <termios.h>

     int tcgetattr(int fd, struct termios *tp)
     int tcsetattr(int fd, int action, const struct termios *tp)

     speed_t cfgetispeed(const struct termios *tp)
     speed_t cfgetospeed(const struct termios *tp)
     int cfsetispeed(struct termios *tp, speed_t speed)
     int cfsetospeed(struct termios *tp, speed_t speed)

     int tcsendbreak(int fd, int duration)
     int tcdrain(int fd)
     int tcflush(int fd, int queue_selector)
     int tcflow(int fd, int action)


DESCRIPTION

     These are the user functions that modify the tty  attributes
     mentioned in tty(4).  In the following, fd refers to an open
     terminal device file, tp is the address of a struct termios,
     and speed and values of type speed_t are equal to one of the
     B0, B50, etc. baud rate symbols.   All  functions,  symbols,
     and types are declared in <termios.h>.

     The effects of the tty functions are:

     tcgetattr(fd, tp)
          Get the current settings of the tty attributes.

     tcsetattr(fd, TCSANOW, tp)
          Set the terminal attributes.  The change occurs immedi-
          ately.

     tcsetattr(fd, TCSADRAIN, tp)
          Set the terminal attributes.  The  change  occurs  once
          all  the  output  waiting in the output queues has been
          transmitted.  This should be used when options  affect-
          ing output are changed.

     tcsetattr(fd, TCSAFLUSH, tp)
          Set the terminal attributes.  But first wait until  all
          the  output  waiting  in  the  output  queues  has been
          transmitted.  All input waiting in the input queues  is
          then  discarded and the change is made.  This should be
          used when switching  from  canonical  to  non-canonical
          mode or vice-versa.  (Oddly enough, this is seldom what
          you want, because it discards  typeahead.   An  editing
          shell  does the Right Thing if it uses TCSANOW instead.
          POSIX may not guarantee good results, but  in  practice
          most  systems make the canonical input available in raw
          mode.)

     cfgetispeed(tp)
          Return the input  baud  rate  encoded  in  the  termios
          structure.

     cfgetospeed(tp)
          Return the output baud  rate  encoded  in  the  termios
          structure.

     cfsetispeed(tp, speed)
          Encode the new input baud rate into the termios  struc-
          ture.

     cfsetospeed(tp, speed)
          Encode the new output baud rate into the termios struc-
          ture.

     tcsendbreak(fd, duration)
          Emit a break condition on a  serial  line  for  a  time
          indicated by duration.  (Always 0.4 seconds under MINIX
          3, duration is ignored.)

     tcdrain(fd)
          Wait until all output waiting in the output queues  has
          been transmitted.

     tcflush(fd, TCIFLUSH)
          Flush the input queue.  (I.e. discard it.)

     tcflush(fd, TCOFLUSH)
          Flush the output queue.

     tcflush(fd, TCIOFLUSH)
          Flush the input and output queues.

     tcflow(fd, TCOOFF)
          Suspend output.  (Like the effect of STOP.)

     tcflow(fd, TCOON)
          Restart output.  (Like the effect of START.)

     tcflow(fd, TCIOFF)
          Transmit a STOP character intended to make  the  remote
          device stop transmitting data.

     tcflow(fd, TCION)
          Transmit a START character to restart the  remote  dev-
          ice.


SEE ALSO

     stty(1), tty(4).


DIAGNOSTICS

     All functions return 0 unless otherwise specified, and -1 on
     error  with  errno  set  to indicate the type of error.  The
     most notable errors are ENOTTY if fd does  not  refer  to  a
     terminal  device,  and EINTR if one of the functions waiting
     for output to drain is interrupted.


NOTES

     It may be interesting to know that the  functions  operating
     on  the tty are directly translated into the following MINIX
     3 ioctl requests:  TCGETS, TCSETS  (now),  TCSETSW  (drain),
     TCSETSF,  (flush), TCSBRK, TCDRAIN, TCFLSH, and TCFLOW.  You
     should only use this knowledge when trying to understand the
     tty driver code, of course.


BUGS


AUTHOR

     Kees J. Bot (kjb@cs.vu.nl)