|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)vent.c 4.2 (Berkeley) 10/10/85"; ! 3: #endif ! 4: ! 5: #include "../condevs.h" ! 6: #ifdef VENTEL ! 7: ! 8: ventopn(telno, flds, dev) ! 9: char *flds[], *telno; ! 10: struct Devices *dev; ! 11: { ! 12: int dh; ! 13: int i, ok = -1; ! 14: char dcname[20]; ! 15: ! 16: sprintf(dcname, "/dev/%s", dev->D_line); ! 17: if (setjmp(Sjbuf)) { ! 18: DEBUG(1, "timeout ventel open\n", ""); ! 19: logent("ventel open", "TIMEOUT"); ! 20: if (dh >= 0) ! 21: close(dh); ! 22: delock(dev->D_line); ! 23: return CF_NODEV; ! 24: } ! 25: signal(SIGALRM, alarmtr); ! 26: getnextfd(); ! 27: alarm(10); ! 28: dh = open(dcname, 2); ! 29: next_fd = -1; ! 30: alarm(0); ! 31: if (dh < 0) { ! 32: DEBUG(4,"%s\n", errno == 4 ? "no carrier" : "can't open modem"); ! 33: delock(dev->D_line); ! 34: return errno == 4 ? CF_DIAL : CF_NODEV; ! 35: } ! 36: ! 37: /* modem is open */ ! 38: fixline(dh, dev->D_speed); ! 39: ! 40: /* translate - to % and = to & for VenTel */ ! 41: DEBUG(4, "calling %s -> ", telno); ! 42: for (i = 0; i < strlen(telno); ++i) { ! 43: switch(telno[i]) { ! 44: case '-': /* delay */ ! 45: telno[i] = '%'; ! 46: break; ! 47: case '=': /* await dial tone */ ! 48: telno[i] = '&'; ! 49: break; ! 50: case '<': ! 51: telno[i] = '%'; ! 52: break; ! 53: } ! 54: } ! 55: DEBUG(4, "%s\n", telno); ! 56: sleep(1); ! 57: for(i = 0; i < 5; ++i) { /* make up to 5 tries */ ! 58: slowrite(dh, "\r\r");/* awake, thou lowly VenTel! */ ! 59: ! 60: DEBUG(4, "wanted %s ", "$"); ! 61: ok = expect("$", dh); ! 62: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 63: if (ok != 0) ! 64: continue; ! 65: slowrite(dh, "K"); /* "K" (enter number) command */ ! 66: DEBUG(4, "wanted %s ", "DIAL: "); ! 67: ok = expect("DIAL: ", dh); ! 68: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 69: if (ok == 0) ! 70: break; ! 71: } ! 72: ! 73: if (ok == 0) { ! 74: slowrite(dh, telno); /* send telno, send \r */ ! 75: slowrite(dh, "\r"); ! 76: DEBUG(4, "wanted %s ", "ONLINE"); ! 77: ok = expect("ONLINE!", dh); ! 78: DEBUG(4, "got %s\n", ok ? "?" : "that"); ! 79: } ! 80: if (ok != 0) { ! 81: if (dh > 2) ! 82: close(dh); ! 83: DEBUG(4, "venDial failed\n", ""); ! 84: return CF_DIAL; ! 85: } ! 86: else ! 87: DEBUG(4, "venDial ok\n", ""); ! 88: return dh; ! 89: } ! 90: ! 91: ventcls(fd) ! 92: int fd; ! 93: { ! 94: if (fd > 0) { ! 95: close(fd); ! 96: sleep(5); ! 97: delock(devSel); ! 98: } ! 99: } ! 100: #endif VENTEL
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.