|
|
1.1 root 1: /*
2: * Copyright (c) 1983 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: static char sccsid[] = "@(#)cu.c 5.9 (Berkeley) 6/1/90";
22: #endif /* not lint */
23:
24: #include "tip.h"
25:
26: void cleanup();
27:
28: /*
29: * Botch the interface to look like cu's
30: */
31: cumain(argc, argv)
32: char *argv[];
33: {
34: register int i;
35: static char sbuf[12];
36:
37: if (argc < 2) {
38: printf("usage: cu telno [-t] [-s speed] [-a acu] [-l line] [-#]\n");
39: exit(8);
40: }
41: CU = DV = NOSTR;
42: BR = DEFBR;
43: for (; argc > 1; argv++, argc--) {
44: if (argv[1][0] != '-')
45: PN = argv[1];
46: else switch (argv[1][1]) {
47:
48: case 't':
49: HW = 1, DU = -1;
50: --argc;
51: continue;
52:
53: case 'a':
54: CU = argv[2]; ++argv; --argc;
55: break;
56:
57: case 's':
58: if (argc < 3 || speed(atoi(argv[2])) == 0) {
59: fprintf(stderr, "cu: unsupported speed %s\n",
60: argv[2]);
61: exit(3);
62: }
63: BR = atoi(argv[2]); ++argv; --argc;
64: break;
65:
66: case 'l':
67: DV = argv[2]; ++argv; --argc;
68: break;
69:
70: case '0': case '1': case '2': case '3': case '4':
71: case '5': case '6': case '7': case '8': case '9':
72: if (CU)
73: CU[strlen(CU)-1] = argv[1][1];
74: if (DV)
75: DV[strlen(DV)-1] = argv[1][1];
76: break;
77:
78: default:
79: printf("Bad flag %s", argv[1]);
80: break;
81: }
82: }
83: signal(SIGINT, cleanup);
84: signal(SIGQUIT, cleanup);
85: signal(SIGHUP, cleanup);
86: signal(SIGTERM, cleanup);
87:
88: /*
89: * The "cu" host name is used to define the
90: * attributes of the generic dialer.
91: */
92: (void)sprintf(sbuf, "cu%d", BR);
93: if ((i = hunt(sbuf)) == 0) {
94: printf("all ports busy\n");
95: exit(3);
96: }
97: if (i == -1) {
98: printf("link down\n");
99: (void)uu_unlock(uucplock);
100: exit(3);
101: }
102: setbuf(stdout, NULL);
103: loginit();
104: user_uid();
105: vinit();
106: setparity("none");
107: boolean(value(VERBOSE)) = 0;
108: if (HW)
109: ttysetup(speed(BR));
110: if (connect()) {
111: printf("Connect failed\n");
112: daemon_uid();
113: (void)uu_unlock(uucplock);
114: exit(1);
115: }
116: if (!HW)
117: ttysetup(speed(BR));
118: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.