Annotation of 43BSD/usr.bin/uucp/aculib/sy.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)sy.c       4.1 (Berkeley) 1/22/85";
                      3: #endif
                      4: 
                      5: #include "../condevs.h"
                      6: 
                      7: #ifdef SYTEK
                      8: 
                      9: /*
                     10:  *     sykopn: establish connection through a sytek port.
                     11:  *     Returns descriptor open to tty for reading and writing.
                     12:  *     Negative values (-1...-7) denote errors in connmsg.
                     13:  *     Will try to change baud rate of local port to match
                     14:  *     that of the remote side.
                     15:  */
                     16: char sykspeed[50];     /* speed to reset to on close */
                     17: 
                     18: sykopn(flds)
                     19: register char *flds[];
                     20: {
                     21:        extern errno;
                     22:        char *rindex(), *fdig(), dcname[20];
                     23:        int dh, ok = 0, speed;
                     24:        register FILE *dfp;
                     25:        struct Devices dev;
                     26:        char speedbuf[50];
                     27: 
                     28:        dfp = fopen(DEVFILE, "r");
                     29:        ASSERT(dfp != NULL, "Can't open", DEVFILE, 0);
                     30: 
                     31:        signal(SIGALRM, alarmtr);
                     32:        dh = -1;
                     33:        while(rddev(dfp, &dev) != FAIL) {
                     34: /* we'll set our own speed; F_CLASS is how cynthia configures it every night
                     35:                if (strcmp(flds[F_CLASS], dev.D_class) != SAME)
                     36:                        continue;
                     37: */
                     38:                if (snccmp(flds[F_LINE], dev.D_type) != SAME)
                     39:                        continue;
                     40:                if (mlock(dev.D_line) == FAIL)
                     41:                        continue;
                     42: 
                     43:                sprintf(dcname, "/dev/%s", dev.D_line);
                     44:                getnextfd();
                     45:                alarm(10);
                     46:                if (setjmp(Sjbuf)) {
                     47:                        delock(dev.D_line);
                     48:                        logent(dev.D_line,"sytek open TIMEOUT");
                     49:                        dh = -1;
                     50:                        break;
                     51:                        }
                     52:                dh = open(dcname, 2);
                     53:                alarm(0);
                     54:                next_fd = -1;
                     55:                if (dh > 0) {
                     56:                        break;
                     57:                        }
                     58:                devSel[0] = '\0';
                     59:                delock(dev.D_line);
                     60:        }
                     61:        fclose(dfp);
                     62:        if (dh < 0)
                     63:                return(CF_NODEV);
                     64: 
                     65:        speed = atoi(fdig(dev.D_class));
                     66:        fixline(dh, speed);
                     67:        sleep(1);
                     68: 
                     69:        /* negotiate with sytek */
                     70:        genbrk(dh, 3);
                     71:                
                     72:        DEBUG(4, "wanted %s ", "#");
                     73:        ok = expect("#", dh);
                     74:        DEBUG(4, "got %s\n", ok ? "?" : "that");
                     75:        if(ok != 0){
                     76:                if(atoi(fdig(dev.D_class)) == 9600){
                     77:                        fixline(dh, 2400);
                     78:                        speed = 2400;
                     79:                } else {
                     80:                        fixline(dh, 9600);
                     81:                        speed = 9600;
                     82:                }
                     83:                sleep(1);
                     84:                genbrk(dh, 3);
                     85:                ok = expect("#", dh);
                     86:                if(ok){
                     87:                        close(dh);
                     88:                        DEBUG(4, "sytek BREAK failed\n", "");
                     89:                        delock(dev.D_line);
                     90:                        return(CF_DIAL);
                     91:                }
                     92:        }
                     93:        write(dh, "done \r", 6);
                     94:        ok = expect("#", dh);
                     95:        DEBUG(4, "got %s\n", ok ? "?" : "that");
                     96:        if(speed != atoi(fdig(flds[F_CLASS]))){
                     97:                DEBUG(4, "changing speed\n", "");
                     98:                sprintf(speedbuf, "baud %s\r", fdig(flds[F_CLASS]));
                     99:                write(dh, speedbuf, strlen(speedbuf));
                    100:                sleep(1);
                    101:                speed = atoi(fdig(flds[F_CLASS]));
                    102:                fixline(dh, speed);
                    103:                genbrk(dh, 3);
                    104:                ok = expect("#", dh);
                    105:                DEBUG(4, "speed set %s\n", ok ? "failed" : flds[F_CLASS]);
                    106:        }
                    107:        strcpy(sykspeed, dev.D_class);
                    108:        write(dh, "command break\r", 14);
                    109:        ok = expect("#", dh);
                    110:        DEBUG(4, "got %s\n", ok ? "?" : "that");
                    111:        if (ok == 0) {
                    112:                write(dh, "call ", 5);
                    113:                write(dh, flds[F_PHONE], strlen(flds[F_PHONE]));
                    114:                write(dh, "\r", 1);
                    115:                DEBUG(4, "sytek dial %s\n", flds[F_PHONE]);
                    116:                DEBUG(4, "wanted %s ", "COMPLETED TO ");
                    117:                ok = expect("COMPLETED TO ", dh);
                    118:                DEBUG(4, "got %s\n", ok ? "?" : "that");
                    119:        }
                    120: 
                    121:        if (ok != 0) {
                    122:                close(dh);
                    123:                DEBUG(4, "sytek failed\n", "");
                    124:                delock(dev.D_line);
                    125:                return(CF_DIAL);
                    126:        } else
                    127:                DEBUG(4, "sytek ok\n", "");
                    128: 
                    129:        CU_end = sykcls;
                    130:        strcpy(devSel, dev.D_line);     /* for later unlock */
                    131:        return(dh);
                    132: 
                    133: }
                    134: 
                    135: sykcls(fd)
                    136: register int fd;
                    137: {
                    138:        register int ok, speed;
                    139: 
                    140: 
                    141:        if (fd > 0) {
                    142:                genbrk(fd, 3);
                    143:                ok = expect("#", fd);
                    144:                DEBUG(4, "got %s\n", ok ? "?" : "that");
                    145:                if(ok != 0){
                    146:                        genbrk(fd, 3);
                    147:                        ok = expect("#", fd);
                    148:                }
                    149:                if(ok == 0){
                    150:                        write(fd, "done 1\r", 7);
                    151:                        ok = expect("#", fd);
                    152:                        DEBUG(4, "got %s\n", ok ? "?" : "that");
                    153:                        DEBUG(4, "reset baud to %s\n", sykspeed);
                    154:                        write(fd, "baud ", 5);
                    155:                        write(fd, sykspeed, strlen(sykspeed));
                    156:                        write(fd, "\r", 1);
                    157:                        sleep(1);
                    158:                }
                    159:                close(fd);
                    160:                delock(devSel);
                    161:        }
                    162: }
                    163: #endif SYTEK

unix.superglobalmegacorp.com

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