xref: /original-bsd/usr.bin/tip/aculib/df.c (revision 6c57d260)
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
63