-#if B9600 == 9600
-/*
- * XXX assume speed_t values numerically equal bits per second
- * (so we can ask for any speed).
- */
-#define translate_speed(bps) (bps)
-#define baud_rate_of(speed) (speed)
-
-#else
-/*
- * List of valid speeds.
- */
-struct speed {
- int speed_int, speed_val;
-} speeds[] = {
-#ifdef B50
- { 50, B50 },
-#endif
-#ifdef B75
- { 75, B75 },
-#endif
-#ifdef B110
- { 110, B110 },
-#endif
-#ifdef B134
- { 134, B134 },
-#endif
-#ifdef B150
- { 150, B150 },
-#endif
-#ifdef B200
- { 200, B200 },
-#endif
-#ifdef B300
- { 300, B300 },
-#endif
-#ifdef B600
- { 600, B600 },
-#endif
-#ifdef B1200
- { 1200, B1200 },
-#endif
-#ifdef B1800
- { 1800, B1800 },
-#endif
-#ifdef B2000
- { 2000, B2000 },
-#endif
-#ifdef B2400
- { 2400, B2400 },
-#endif
-#ifdef B3600
- { 3600, B3600 },
-#endif
-#ifdef B4800
- { 4800, B4800 },
-#endif
-#ifdef B7200
- { 7200, B7200 },
-#endif
-#ifdef B9600
- { 9600, B9600 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef EXTA
- { 19200, EXTA },
-#endif
-#ifdef EXTB
- { 38400, EXTB },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
- { 0, 0 }
-};
-
-/*
- * Translate from bits/second to a speed_t.
- */
-int
-translate_speed(bps)
- int bps;
-{
- struct speed *speedp;
-
- if (bps == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (bps == speedp->speed_int)
- return speedp->speed_val;
- syslog(LOG_WARNING, "speed %d not supported", bps);
- return 0;
-}
-
-/*
- * Translate from a speed_t to bits/second.
- */
-int
-baud_rate_of(speed)
- int speed;
-{
- struct speed *speedp;
-
- if (speed == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (speed == speedp->speed_val)
- return speedp->speed_int;
- return 0;
-}
-#endif
-
-/*
- * set_up_tty: Set up the serial port on `fd' for 8 bits, no parity,
- * at the requested speed, etc. If `local' is true, set CLOCAL
- * regardless of whether the modem option was specified.
- */
-set_up_tty(fd, local)
- int fd, local;
-{
-#ifndef SGTTY
- int speed, x;
- struct termios tios;
-
- if (tcgetattr(fd, &tios) < 0) {
- syslog(LOG_ERR, "tcgetattr: %m");
- die(1);
- }
-
- if (!restore_term)
- inittermios = tios;
-
-#ifdef CRTSCTS
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL | CRTSCTS);
- if (crtscts == 1)
- tios.c_cflag |= CRTSCTS;
-#else
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
-#endif /* CRTSCTS */
-
- tios.c_cflag |= CS8 | CREAD | HUPCL;
- if (local || !modem)
- tios.c_cflag |= CLOCAL;
- tios.c_iflag = IGNBRK | IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- tios.c_cc[VMIN] = 1;
- tios.c_cc[VTIME] = 0;
-
- if (crtscts == 2) {
- tios.c_iflag |= IXOFF;
- tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */
- tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */
- }
-
- speed = translate_speed(inspeed);
- if (speed) {
- cfsetospeed(&tios, speed);
- cfsetispeed(&tios, speed);
- } else {
- speed = cfgetospeed(&tios);
- }
-
- if (tcsetattr(fd, TCSAFLUSH, &tios) < 0) {
- syslog(LOG_ERR, "tcsetattr: %m");
- die(1);
- }
-
-#ifdef ultrix
- x = 0;
- if (ioctl(fd, (crtscts || modem)? TIOCMODEM: TIOCNMODEM, &x) < 0)
- syslog(LOG_WARNING, "TIOC(N)MODEM: %m");
- if (ioctl(fd, (local || !modem)? TIOCNCAR: TIOCCAR) < 0)
- syslog(LOG_WARNING, "TIOC(N)CAR: %m");
-#endif
-
-#else /* SGTTY */
- int speed;
- struct sgttyb sgttyb;
-
- /*
- * Put the tty in raw mode.
- */
- if (ioctl(fd, TIOCGETP, &sgttyb) < 0) {
- syslog(LOG_ERR, "ioctl(TIOCGETP): %m");
- die(1);
- }
-
- if (!restore_term)
- initsgttyb = sgttyb;
-
- sgttyb.sg_flags = RAW | ANYP;
- speed = translate_speed(inspeed);
- if (speed)
- sgttyb.sg_ispeed = speed;
- else
- speed = sgttyb.sg_ispeed;
-
- if (ioctl(fd, TIOCSETP, &sgttyb) < 0) {
- syslog(LOG_ERR, "ioctl(TIOCSETP): %m");
- die(1);
- }
-#endif
-
- baud_rate = inspeed = baud_rate_of(speed);
- restore_term = TRUE;
-}
-
-/*
- * setdtr - control the DTR line on the serial port.
- * This is called from die(), so it shouldn't call die().
- */
-setdtr(fd, on)
-int fd, on;
-{
- int modembits = TIOCM_DTR;
-
- ioctl(fd, (on? TIOCMBIS: TIOCMBIC), &modembits);
-}
-
-