|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T m ┃
Length: 2292 (0x8f4) Types: TextFile Names: »makeraw.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦this⟧ »EUUGD11/euug-87hel/sec8/uutty/makeraw.c«
/* Tell the device driver to do raw I/O on the device. * Unfortunately, this is done in different ways on different * brands of Unix. Make sure that your system is included * somewhere in the following list. */ #include <dbg.h> #ifdef BERK # include <sgtty.h> int ldisc = NETLDISC; struct sgttyb sgttyb; #endif #ifdef PCIX # include <termio.h> struct termio termio; #endif #ifdef SYS5 # include <termio.h> struct termio termio; #endif extern int baudmask; /* CBAUD mask, if baud rate specified */ extern int errno; int flowcontrol = 1; uint timeout = 100; /* Timeout in 0.1 second quanta */ makeraw(fn) int fn; /* File number */ { int i; D5("makeraw(%d)",fn); errno = 0; #ifdef SYS5 i = ioctl(fn,TCGETA,&termio); D4("makeraw: %d:\tcflag=%06o [old]",fn,termio.c_cflag); D4("makeraw: %d:\tiflag=%06o [old]",fn,termio.c_iflag); D4("makeraw: %d:\tlflag=%06o [old]",fn,termio.c_lflag); D4("makeraw: %d:\toflag=%06o [old]",fn,termio.c_oflag); D5("makeraw: ioctl(fn=%d,TCGETA=%d,&termio=%08X)=%d",fn,TCGETA,&termio,i); if (baudmask) /* Wipe out all of cflag but speed */ termio.c_cflag = baudmask; else termio.c_cflag &= CBAUD; termio.c_cflag |= CS8 | CREAD | HUPCL; termio.c_iflag = flowcontrol? (IXON | IXANY | IXOFF): 0; termio.c_lflag = 0; termio.c_oflag = 0; termio.c_cc[4] = 0; /* Number of bytes to buffer up */ termio.c_cc[5] = timeout; /* Timeout in 0.1 sec units */ D4("makeraw: %d:\tcflag=%06o [new]",fn,termio.c_cflag); D4("makeraw: %d:\tiflag=%06o [new]",fn,termio.c_iflag); D4("makeraw: %d:\tlflag=%06o [new]",fn,termio.c_lflag); D4("makeraw: %d:\toflag=%06o [new]",fn,termio.c_oflag); i = ioctl(fn,TCSETA,&termio); #endif #ifdef SYS3 i = ioctl(fn,TCGETA,&termio); termio.c_iflag |= IGNCR | IXON | IXANY | IXOFF; termio.c_lflag = 0; D5("makeraw: \tcflag=%06o",termio.c_cflag); D5("makeraw: \tiflag=%06o",termio.c_iflag); D5("makeraw: \tlflag=%06o",termio.c_lflag); D5("makeraw: \toflag=%06o",termio.c_oflag); i = ioctl(fn,TCSETA,&termio); #endif #ifdef BERK /* Berkeley Unix has its own conventions */ i = ioctl(fn,TIOCGETP,&sgttyb); sgttyb.sg_flags = RAW | TANDEM; ioctl(fn,TIOCSETP,&sgttyb); if (errno) { E("makeraw: Can't do raw i/o on \"%s\"",fnnam); exit(-1); } #endif D5("makeraw: %d is now raw",fn); }