1 #ifndef lint 2 static char sccsid[] = "@(#)cu.c 4.6 (Berkeley) 06/28/83"; 3 #endif 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; 17 static char sbuf[12]; 18 19 if (argc < 2) { 20 printf("usage: cu telno [-t] [-s speed] [-a acu] [-l line] [-#]\n"); 21 exit(8); 22 } 23 CU = DV = NOSTR; 24 for (; argc > 1; argv++, argc--) { 25 if (argv[1][0] != '-') 26 PN = argv[1]; 27 else switch (argv[1][1]) { 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) { 40 fprintf(stderr, "cu: unsupported speed %s\n", 41 argv[2]); 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': 53 if (CU) 54 CU[strlen(CU)-1] = argv[1][1]; 55 if (DV) 56 DV[strlen(DV)-1] = argv[1][1]; 57 break; 58 59 default: 60 printf("Bad flag %s", argv[1]); 61 break; 62 } 63 } 64 signal(SIGINT, cleanup); 65 signal(SIGQUIT, cleanup); 66 signal(SIGHUP, cleanup); 67 signal(SIGTERM, cleanup); 68 69 /* 70 * The "cu" host name is used to define the 71 * attributes of the generic dialer. 72 */ 73 if ((i = hunt(sprintf(sbuf, "cu%d", BR))) == 0) { 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 } 82 setbuf(stdout, NULL); 83 loginit(); 84 setuid(getuid()); 85 setgid(getgid()); 86 vinit(); 87 setparity("none"); 88 boolean(value(VERBOSE)) = 0; 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 } 99