|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: static char sccsid[] = "@(#)df.c 5.1 (Berkeley) 6/6/85"; ! 9: #endif not lint ! 10: ! 11: /* ! 12: * Dial the DF02-AC or DF03-AC ! 13: */ ! 14: ! 15: #include "tip.h" ! 16: ! 17: static jmp_buf Sjbuf; ! 18: static timeout(); ! 19: ! 20: df02_dialer(num, acu) ! 21: char *num, *acu; ! 22: { ! 23: ! 24: return (df_dialer(num, acu, 0)); ! 25: } ! 26: ! 27: df03_dialer(num, acu) ! 28: char *num, *acu; ! 29: { ! 30: ! 31: return (df_dialer(num, acu, 1)); ! 32: } ! 33: ! 34: df_dialer(num, acu, df03) ! 35: char *num, *acu; ! 36: int df03; ! 37: { ! 38: register int f = FD; ! 39: struct sgttyb buf; ! 40: int speed = 0, rw = 2; ! 41: char c = '\0'; ! 42: ! 43: ioctl(f, TIOCHPCL, 0); /* make sure it hangs up when done */ ! 44: if (setjmp(Sjbuf)) { ! 45: printf("connection timed out\r\n"); ! 46: df_disconnect(); ! 47: return (0); ! 48: } ! 49: if (boolean(value(VERBOSE))) ! 50: printf("\ndialing..."); ! 51: fflush(stdout); ! 52: #ifdef TIOCMSET ! 53: if (df03) { ! 54: int st = TIOCM_ST; /* secondary Transmit flag */ ! 55: ! 56: ioctl(f, TIOCGETP, &buf); ! 57: if (buf.sg_ospeed != B1200) { /* must dial at 1200 baud */ ! 58: speed = buf.sg_ospeed; ! 59: buf.sg_ospeed = buf.sg_ispeed = B1200; ! 60: ioctl(f, TIOCSETP, &buf); ! 61: ioctl(f, TIOCMBIC, &st); /* clear ST for 300 baud */ ! 62: } else ! 63: ioctl(f, TIOCMBIS, &st); /* set ST for 1200 baud */ ! 64: } ! 65: #endif ! 66: signal(SIGALRM, timeout); ! 67: alarm(5 * strlen(num) + 10); ! 68: ioctl(f, TIOCFLUSH, &rw); ! 69: write(f, "\001", 1); ! 70: sleep(1); ! 71: write(f, "\002", 1); ! 72: write(f, num, strlen(num)); ! 73: read(f, &c, 1); ! 74: #ifdef TIOCMSET ! 75: if (df03 && speed) { ! 76: buf.sg_ispeed = buf.sg_ospeed = speed; ! 77: ioctl(f, TIOCSETP, &buf); ! 78: } ! 79: #endif ! 80: return (c == 'A'); ! 81: } ! 82: ! 83: df_disconnect() ! 84: { ! 85: int rw = 2; ! 86: ! 87: write(FD, "\001", 1); ! 88: sleep(1); ! 89: ioctl(FD, TIOCFLUSH, &rw); ! 90: } ! 91: ! 92: ! 93: df_abort() ! 94: { ! 95: ! 96: df_disconnect(); ! 97: } ! 98: ! 99: ! 100: static ! 101: timeout() ! 102: { ! 103: ! 104: longjmp(Sjbuf, 1); ! 105: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.