Commit | Line | Data |
---|---|---|
05862919 | 1 | #ifndef lint |
dfec50f2 | 2 | static char sccsid[] = "@(#)cu.c 4.6 (Berkeley) %G%"; |
05862919 | 3 | #endif |
24f09632 SL |
4 | |
5 | #include "tip.h" | |
6 | ||
7 | int cleanup(); | |
8 | int timeout(); | |
9 | ||
10 | /* | |
11 | * Botch the interface to look like cu's | |
12 | */ | |
13 | cumain(argc, argv) | |
14 | char *argv[]; | |
15 | { | |
16 | register int i; | |
c731dacc | 17 | static char sbuf[12]; |
24f09632 | 18 | |
24f09632 | 19 | if (argc < 2) { |
c731dacc | 20 | printf("usage: cu telno [-t] [-s speed] [-a acu] [-l line] [-#]\n"); |
24f09632 SL |
21 | exit(8); |
22 | } | |
c731dacc | 23 | CU = DV = NOSTR; |
24f09632 SL |
24 | for (; argc > 1; argv++, argc--) { |
25 | if (argv[1][0] != '-') | |
26 | PN = argv[1]; | |
3f48242d | 27 | else switch (argv[1][1]) { |
24f09632 SL |
28 | |
29 | case 't': | |
30 | HW = 1, DU = -1; | |
31 | --argc; | |
32 | continue; | |
33 | ||
34 | case 'a': | |
35 | CU = argv[2]; ++argv; --argc; | |
36 | break; | |
37 | ||
38 | case 's': | |
39 | if (speed(atoi(argv[2])) == 0) { | |
c731dacc BS |
40 | fprintf(stderr, "cu: unsupported speed %s\n", |
41 | argv[2]); | |
24f09632 SL |
42 | exit(3); |
43 | } | |
44 | BR = atoi(argv[2]); ++argv; --argc; | |
45 | break; | |
46 | ||
47 | case 'l': | |
48 | DV = argv[2]; ++argv; --argc; | |
49 | break; | |
50 | ||
51 | case '0': case '1': case '2': case '3': case '4': | |
52 | case '5': case '6': case '7': case '8': case '9': | |
c731dacc BS |
53 | if (CU) |
54 | CU[strlen(CU)-1] = argv[1][1]; | |
55 | if (DV) | |
56 | DV[strlen(DV)-1] = argv[1][1]; | |
24f09632 SL |
57 | break; |
58 | ||
59 | default: | |
60 | printf("Bad flag %s", argv[1]); | |
61 | break; | |
62 | } | |
63 | } | |
c731dacc BS |
64 | signal(SIGINT, cleanup); |
65 | signal(SIGQUIT, cleanup); | |
66 | signal(SIGHUP, cleanup); | |
67 | signal(SIGTERM, cleanup); | |
68 | ||
24f09632 SL |
69 | /* |
70 | * The "cu" host name is used to define the | |
71 | * attributes of the generic dialer. | |
72 | */ | |
c731dacc | 73 | if ((i = hunt(sprintf(sbuf, "cu%d", BR))) == 0) { |
24f09632 SL |
74 | printf("all ports busy\n"); |
75 | exit(3); | |
76 | } | |
77 | if (i == -1) { | |
78 | printf("link down\n"); | |
79 | delock(uucplock); | |
80 | exit(3); | |
81 | } | |
c731dacc BS |
82 | setbuf(stdout, NULL); |
83 | loginit(); | |
84 | setuid(getuid()); | |
85 | setgid(getgid()); | |
86 | vinit(); | |
dfec50f2 | 87 | setparity("none"); |
c731dacc | 88 | boolean(value(VERBOSE)) = 0; |
24f09632 SL |
89 | if (HW) |
90 | ttysetup(speed(BR)); | |
91 | if (connect()) { | |
92 | printf("Connect failed\n"); | |
93 | delock(uucplock); | |
94 | exit(1); | |
95 | } | |
96 | if (!HW) | |
97 | ttysetup(speed(BR)); | |
98 | } |