Annotation of coherent/a/usr/bob/uusrc/modemcap/fixtty.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *  fixtty.c
                      3:  *
                      4:  *  Set the tty properly on entry in dial() and exit in hangup().
                      5:  */
                      6: 
                      7: #include "dcp.h"
                      8: #include "dial.h"
                      9: 
                     10: #if SGTTY
                     11: #include <sgtty.h>
                     12: 
                     13: static struct sgttyb save;
                     14: 
                     15: ttyinit(fd, baud)
                     16: int fd, baud;
                     17: {
                     18:        struct sgttyb ttyb;
                     19: 
                     20:        gtty(fd, &ttyb);
                     21:        save = ttyb;
                     22:        if ( (ttyb.sg_ispeed=findspeed(baud)) == 0 )
                     23:                return( M_ILL_BD );
                     24:        ttyb.sg_ospeed = ttyb.sg_ispeed;
                     25:        ttyb.sg_flags = CBREAK;
                     26:        stripflg = 1;
                     27:        ttyb.sg_erase = -1;
                     28:        ttyb.sg_kill = -1;
                     29:        if ( stty(fd, &ttyb) == -1 )
                     30:                return( M_L_PROB );
                     31:        ioctl(fd, TIOCHPCL);
                     32: }
                     33: 
                     34: 
                     35: ttyexit(fd)
                     36: int fd;
                     37: {
                     38:        stty(fd, &save);
                     39:        sleep(2);
                     40:        stty(fd, &save);
                     41:        stripflg = 0;
                     42: }
                     43: 
                     44: 
                     45: #elif TERMIO
                     46: 
                     47: #include <termio.h>
                     48: 
                     49: static struct termio save;
                     50: 
                     51: ttyinit(fd, baud)
                     52: int fd, baud;
                     53: {
                     54:        struct termio tio;
                     55:        unsigned short tmp;
                     56: 
                     57:        ioctl(fd, TCGETA, &tio);
                     58:        save = tio;
                     59:        tio.c_iflag = ISTRIP;
                     60:        stripflg = 1;
                     61:        tio.c_oflag = 0;
                     62:        tio.c_cflag &= ~(CBAUD|CSIZE|PARENB);
                     63:        if ( (tmp=findspeed(baud)) == 0 )
                     64:                return( M_ILL_BD );
                     65:        tio.c_cflag |= tmp;
                     66:        tio.c_cflag |= (HUPCL|CS8);
                     67:        tio.c_lflag = 0;
                     68:        if ( ioctl(fd, TCSETA, &tio) == -1 )
                     69:                return(M_L_PROB);
                     70:        return(0);
                     71: }
                     72: 
                     73: ttyexit(fd)
                     74: int fd;
                     75: {
                     76:        ioctl(fd, TCSETA, &save);
                     77:        sleep (2);
                     78:        ioctl(fd, TCSETA, &save);
                     79:        stripflg = 0;
                     80: }
                     81: 
                     82: #endif
                     83: 
                     84: static struct speedlist {
                     85:        int     value;
                     86:        int     name;
                     87: } 
                     88: speeds[] = {
                     89:        {0,     0},
                     90:        {110,   B110},
                     91:        {300,   B300},
                     92:        {600,   B600},
                     93:        {1200,  B1200},
                     94:        {2400,  B2400},
                     95:        {4800,  B4800},
                     96:        {9600,  B9600},
                     97:        {19200, B19200},
                     98:        {-1, -1 }
                     99: };
                    100: 
                    101: static
                    102: findspeed(speed)
                    103: int speed;
                    104: {
                    105:        register struct speedlist *ps;
                    106: 
                    107:        for (ps=speeds; ps->value>=0; ps++)
                    108:                if (ps->value == speed)
                    109:                        return (ps->name);
                    110: 
                    111:        return (0);
                    112: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.