Commit | Line | Data |
---|---|---|
6476f6e0 BJ |
1 | /* df.c 4.1 81/05/09 */ |
2 | /* | |
3 | * Dial the DF02-AC | |
4 | */ | |
5 | ||
6 | #include "tip.h" | |
7 | #if DF02 | |
8 | #include <setjmp.h> | |
9 | ||
10 | static jmp_buf Sjbuf; | |
11 | static timeout(); | |
12 | ||
13 | df_dialer(num, acu) | |
14 | char *num, *acu; | |
15 | { | |
16 | register int f = FD; | |
17 | int c; | |
18 | ||
19 | ioctl(f, TIOCHPCL, 0); /* make sure it hangs up when done */ | |
20 | if (setjmp(Sjbuf)) { | |
21 | printf("connection timed out\r\n"); | |
22 | df_disconnect(); | |
23 | return(0); | |
24 | } | |
25 | if (boolean(value(VERBOSE))) | |
26 | printf("\ndialing..."); | |
27 | fflush(stdout); | |
28 | signal(SIGALRM, timeout); | |
29 | alarm(5 * strlen(num) + 10); | |
30 | ioctl(f, TIOCFLUSH, 0); | |
31 | write(f, "\001", 1); | |
32 | sleep(0); /* this must waste 70 ms. */ | |
33 | write(f, "\002", 1); | |
34 | write(f, num, strlen(num)); | |
35 | c = 0; | |
36 | read(f, (char *)&c, 1); | |
37 | return(c == 'A'); | |
38 | } | |
39 | ||
40 | ||
41 | df_disconnect() | |
42 | { | |
43 | write(FD, "\001", 1); | |
44 | sleep(1); | |
45 | ioctl(FD, TIOCFLUSH, 0); | |
46 | } | |
47 | ||
48 | ||
49 | df_abort() | |
50 | { | |
51 | write(FD, "\001", 1); | |
52 | sleep(1); | |
53 | ioctl(FD, TIOCFLUSH, 0); | |
54 | } | |
55 | ||
56 | ||
57 | static | |
58 | timeout() | |
59 | { | |
60 | longjmp(Sjbuf, 1); | |
61 | } | |
62 | #endif |