1*1402Sbill static char *sccsid ="@(#)stty.c 4.2 (Berkeley) 10/11/80"; 21179Sbill /* 31179Sbill * set teletype modes 41179Sbill */ 51179Sbill 61179Sbill #include <stdio.h> 71179Sbill #include <sgtty.h> 81179Sbill 91179Sbill struct 101179Sbill { 111179Sbill char *string; 121179Sbill int speed; 131179Sbill } speeds[] = { 141179Sbill "0", B0, 151179Sbill "50", B50, 161179Sbill "75", B75, 171179Sbill "110", B110, 181179Sbill "134", B134, 191179Sbill "134.5",B134, 201179Sbill "150", B150, 211179Sbill "200", B200, 221179Sbill "300", B300, 231179Sbill "600", B600, 241179Sbill "1200", B1200, 251179Sbill "1800", B1800, 261179Sbill "2400", B2400, 271179Sbill "4800", B4800, 281179Sbill "9600", B9600, 291179Sbill "exta", EXTA, 301179Sbill "extb", EXTB, 311179Sbill 0, 321179Sbill }; 331179Sbill struct 341179Sbill { 351179Sbill char *string; 361179Sbill int set; 371179Sbill int reset; 381179Sbill int lset; 391179Sbill int lreset; 401179Sbill } modes[] = { 411179Sbill "even", EVENP, 0, 0, 0, 421179Sbill "-even", 0, EVENP, 0, 0, 431179Sbill "odd", ODDP, 0, 0, 0, 441179Sbill "-odd", 0, ODDP, 0, 0, 451179Sbill "raw", RAW, 0, 0, 0, 461179Sbill "-raw", 0, RAW, 0, 0, 471179Sbill "cooked", 0, RAW, 0, 0, 481179Sbill "-nl", CRMOD, 0, 0, 0, 491179Sbill "nl", 0, CRMOD, 0, 0, 501179Sbill "echo", ECHO, 0, 0, 0, 511179Sbill "-echo", 0, ECHO, 0, 0, 521179Sbill "LCASE", LCASE, 0, 0, 0, 531179Sbill "lcase", LCASE, 0, 0, 0, 541179Sbill "-LCASE", 0, LCASE, 0, 0, 551179Sbill "-lcase", 0, LCASE, 0, 0, 561179Sbill "-tabs", XTABS, 0, 0, 0, 571179Sbill "tabs", 0, XTABS, 0, 0, 581179Sbill "tandem", TANDEM, 0, 0, 0, 591179Sbill "-tandem", 0, TANDEM, 0, 0, 601179Sbill "cbreak", CBREAK, 0, 0, 0, 611179Sbill "-cbreak", 0, CBREAK, 0, 0, 621179Sbill "cr0", CR0, CR3, 0, 0, 631179Sbill "cr1", CR1, CR3, 0, 0, 641179Sbill "cr2", CR2, CR3, 0, 0, 651179Sbill "cr3", CR3, CR3, 0, 0, 661179Sbill "tab0", TAB0, XTABS, 0, 0, 671179Sbill "tab1", TAB1, XTABS, 0, 0, 681179Sbill "tab2", TAB2, XTABS, 0, 0, 691179Sbill "nl0", NL0, NL3, 0, 0, 701179Sbill "nl1", NL1, NL3, 0, 0, 711179Sbill "nl2", NL2, NL3, 0, 0, 721179Sbill "nl3", NL3, NL3, 0, 0, 731179Sbill "ff0", FF0, FF1, 0, 0, 741179Sbill "ff1", FF1, FF1, 0, 0, 751179Sbill "bs0", BS0, BS1, 0, 0, 761179Sbill "bs1", BS1, BS1, 0, 0, 771179Sbill "33", CR1, ALLDELAY, 0, 0, 781179Sbill "tty33", CR1, ALLDELAY, 0, 0, 791179Sbill "37", FF1+CR2+TAB1+NL1, ALLDELAY, 0, 0, 801179Sbill "tty37", FF1+CR2+TAB1+NL1, ALLDELAY, 0, 0, 811179Sbill "05", NL2, ALLDELAY, 0, 0, 821179Sbill "vt05", NL2, ALLDELAY, 0, 0, 831179Sbill "tn", CR1, ALLDELAY, 0, 0, 841179Sbill "tn300", CR1, ALLDELAY, 0, 0, 851179Sbill "ti", CR2, ALLDELAY, 0, 0, 861179Sbill "ti700", CR2, ALLDELAY, 0, 0, 871179Sbill "tek", FF1, ALLDELAY, 0, 0, 881179Sbill "crtbs", 0, 0, LCRTBS, LPRTERA, 891179Sbill "-crtbs", 0, 0, 0, LCRTBS, 901179Sbill "prterase", 0, 0, LPRTERA, LCRTBS+LCRTKIL+LCRTERA, 911179Sbill "-prterase", 0, 0, 0, LPRTERA, 921179Sbill "crterase", 0, 0, LCRTERA, LPRTERA, 931179Sbill "-crterase", 0, 0, 0, LCRTERA, 941179Sbill "crtkill", 0, 0, LCRTKIL, LPRTERA, 951179Sbill "-crtkill", 0, 0, 0, LCRTKIL, 961179Sbill "tilde", 0, 0, LTILDE, 0, 971179Sbill "-tilde", 0, 0, 0, LTILDE, 981179Sbill "mdmbuf", 0, 0, LMDMBUF, 0, 991179Sbill "-mdmbuf", 0, 0, 0, LMDMBUF, 1001179Sbill "litout", 0, 0, LLITOUT, 0, 1011179Sbill "-litout", 0, 0, 0, LLITOUT, 1021179Sbill "tostop", 0, 0, LTOSTOP, 0, 1031179Sbill "-tostop", 0, 0, 0, LTOSTOP, 1041179Sbill "flusho", 0, 0, LFLUSHO, 0, 1051179Sbill "-flusho", 0, 0, 0, LFLUSHO, 1061179Sbill "nohang", 0, 0, LNOHANG, 0, 1071179Sbill "-nohang", 0, 0, 0, LNOHANG, 1081179Sbill "etxack", 0, 0, LETXACK, 0, 1091179Sbill "-etxack", 0, 0, 0, LETXACK, 1101179Sbill "intrup", 0, 0, LINTRUP, 0, 1111179Sbill "-intrup", 0, 0, 0, LINTRUP, 1121179Sbill "ctlecho", 0, 0, LCTLECH, 0, 1131179Sbill "-ctlecho", 0, 0, 0, LCTLECH, 1141179Sbill "pendin", 0, 0, LPENDIN, 0, 1151179Sbill "-pendin", 0, 0, 0, LPENDIN, 1161179Sbill 0, 1171179Sbill }; 1181179Sbill 1191179Sbill struct tchars tc; 1201179Sbill struct ltchars ltc; 1211179Sbill struct sgttyb mode; 1221179Sbill int lmode; 1231179Sbill int oldisc, ldisc; 1241179Sbill 1251179Sbill #define CTRL(x) ('x'&037) 1261179Sbill 1271179Sbill struct special { 1281179Sbill char *name; 1291179Sbill char *cp; 1301179Sbill char def; 1311179Sbill } special[] = { 1321179Sbill "erase", &mode.sg_erase, CTRL(h), 1331179Sbill "kill", &mode.sg_kill, '@', 1341179Sbill "intr", &tc.t_intrc, 0177, 1351179Sbill "quit", &tc.t_quitc, CTRL(\\\\), 1361179Sbill "start", &tc.t_startc, CTRL(q), 1371179Sbill "stop", &tc.t_stopc, CTRL(s), 1381179Sbill "eof", &tc.t_eofc, CTRL(d), 1391179Sbill "brk", &tc.t_brkc, 0377, 1401179Sbill "susp", <c.t_suspc, CTRL(z), 1411179Sbill "dsusp", <c.t_dsuspc, CTRL(y), 1421179Sbill "rprnt", <c.t_rprntc, CTRL(r), 1431179Sbill "flush", <c.t_flushc, CTRL(o), 1441179Sbill "werase", <c.t_werasc, CTRL(w), 1451179Sbill "lnext", <c.t_lnextc, CTRL(v), 1461179Sbill 0 1471179Sbill }; 1481179Sbill char *arg; 1491179Sbill 1501179Sbill int argc; 1511179Sbill char **argv; 1521179Sbill main(iargc, iargv) 1531179Sbill char **iargv; 1541179Sbill { 1551179Sbill int i; 1561179Sbill register struct special *sp; 1571179Sbill char obuf[BUFSIZ]; 1581179Sbill 1591179Sbill setbuf(stderr, obuf); 1601179Sbill argc = iargc; 1611179Sbill argv = iargv; 1621179Sbill gtty(1, &mode); 1631179Sbill ioctl(1, TIOCGETD, &ldisc); 1641179Sbill oldisc = ldisc; 1651179Sbill ioctl(1, TIOCGETC, &tc); 1661179Sbill ioctl(1, TIOCLGET, &lmode); 1671179Sbill ioctl(1, TIOCGLTC, <c); 1681179Sbill if(argc == 1) { 1691179Sbill prmodes(0); 1701179Sbill exit(0); 1711179Sbill } 1721179Sbill if (argc == 2 && !strcmp(argv[1], "all")) { 1731179Sbill prmodes(1); 1741179Sbill exit(0); 1751179Sbill } 1761179Sbill if (argc == 2 && !strcmp(argv[1], "everything")) { 1771179Sbill prmodes(2); 1781179Sbill exit(0); 1791179Sbill } 1801179Sbill /* 1811179Sbill if (argc == 2 && !strcmp(argv[1], "all")) { 1821179Sbill prmodes(2); 1831179Sbill exit(0); 1841179Sbill } 1851179Sbill */ 1861179Sbill while(--argc > 0) { 1871179Sbill arg = *++argv; 1881179Sbill if (eq("ek")){ 1891179Sbill mode.sg_erase = '#'; 1901179Sbill mode.sg_kill = '@'; 1911179Sbill continue; 1921179Sbill } 1931179Sbill if (eq("new")){ 1941179Sbill ldisc = NTTYDISC; 1951179Sbill if (ioctl(1, TIOCSETD, &ldisc)<0) 1961179Sbill perror("ioctl"); 1971179Sbill continue; 1981179Sbill } 1991179Sbill if (eq("newcrt")){ 2001179Sbill ldisc = NTTYDISC; 2011179Sbill lmode &= ~LPRTERA; 2021179Sbill lmode |= LCRTBS|LCTLECH; 2031179Sbill if (mode.sg_ospeed >= B1200) 2041179Sbill lmode |= LCRTERA|LCRTKIL; 2051179Sbill if (ioctl(1, TIOCSETD, &ldisc)<0) 2061179Sbill perror("ioctl"); 2071179Sbill continue; 2081179Sbill } 2091179Sbill if (eq("crt")){ 2101179Sbill lmode &= ~LPRTERA; 2111179Sbill lmode |= LCRTBS|LCTLECH; 2121179Sbill if (mode.sg_ospeed >= B1200) 2131179Sbill lmode |= LCRTERA|LCRTKIL; 2141179Sbill continue; 2151179Sbill } 2161179Sbill if (eq("old")){ 2171179Sbill ldisc = 0; 2181179Sbill if (ioctl(1, TIOCSETD, &ldisc)<0) 2191179Sbill perror("ioctl"); 2201179Sbill continue; 2211179Sbill } 2221179Sbill for (sp = special; sp->name; sp++) 2231179Sbill if (eq(sp->name)) { 2241179Sbill if (--argc == 0) 2251179Sbill goto done; 2261179Sbill if (**++argv == 'u') 2271179Sbill *sp->cp = 0377; 2281179Sbill else if (**argv == '^') 2291179Sbill *sp->cp = (*(argv[1]) == '?') ? 2301179Sbill 0177 : (*argv)[1] & 037; 2311179Sbill else 2321179Sbill *sp->cp = **argv; 2331179Sbill goto cont; 2341179Sbill } 2351179Sbill if (eq("gspeed")) { 2361179Sbill mode.sg_ispeed = B300; 2371179Sbill mode.sg_ospeed = B9600; 2381179Sbill continue; 2391179Sbill } 2401179Sbill if (eq("hup")) { 2411179Sbill ioctl(1, TIOCHPCL, NULL); 2421179Sbill continue; 2431179Sbill } 2441179Sbill for(i=0; speeds[i].string; i++) 2451179Sbill if(eq(speeds[i].string)) { 2461179Sbill mode.sg_ispeed = mode.sg_ospeed = speeds[i].speed; 2471179Sbill goto cont; 2481179Sbill } 2491179Sbill if (eq("speed")) { 2501179Sbill gtty(open("/dev/tty", 0), &mode); 2511179Sbill for(i=0; speeds[i].string; i++) 2521179Sbill if (mode.sg_ospeed == speeds[i].speed) { 2531179Sbill printf("%s\n", speeds[i].string); 2541179Sbill exit(0); 2551179Sbill } 2561179Sbill printf("unknown\n"); 2571179Sbill exit(1); 2581179Sbill } 2591179Sbill for(i=0; modes[i].string; i++) 2601179Sbill if(eq(modes[i].string)) { 2611179Sbill mode.sg_flags &= ~modes[i].reset; 2621179Sbill mode.sg_flags |= modes[i].set; 2631179Sbill lmode &= ~modes[i].lreset; 2641179Sbill lmode |= modes[i].lset; 2651179Sbill } 2661179Sbill if(arg) 2671179Sbill fprintf(stderr,"unknown mode: %s\n", arg); 2681179Sbill cont: 2691179Sbill ; 2701179Sbill } 2711179Sbill done: 2721179Sbill ioctl(1, TIOCSETN, &mode); 2731179Sbill ioctl(1, TIOCSETC, &tc); 2741179Sbill ioctl(1, TIOCSLTC, <c); 2751179Sbill ioctl(1, TIOCLSET, &lmode); 2761179Sbill } 2771179Sbill 2781179Sbill eq(string) 2791179Sbill char *string; 2801179Sbill { 2811179Sbill int i; 2821179Sbill 2831179Sbill if(!arg) 2841179Sbill return(0); 2851179Sbill i = 0; 2861179Sbill loop: 2871179Sbill if(arg[i] != string[i]) 2881179Sbill return(0); 2891179Sbill if(arg[i++] != '\0') 2901179Sbill goto loop; 2911179Sbill arg = 0; 2921179Sbill return(1); 2931179Sbill } 2941179Sbill 2951179Sbill prmodes(all) 2961179Sbill { 2971179Sbill register m; 2981179Sbill int any; 2991179Sbill 3001179Sbill if(ldisc==NETLDISC) 3011179Sbill fprintf(stderr, "net discipline, "); 3021179Sbill else if(ldisc==NTTYDISC) 3031179Sbill fprintf(stderr, "new tty, "); 3041179Sbill else if(all==2) 3051179Sbill fprintf(stderr, "old tty, "); 3061179Sbill if(mode.sg_ispeed != mode.sg_ospeed) { 3071179Sbill prspeed("input speed ", mode.sg_ispeed); 3081179Sbill prspeed("output speed ", mode.sg_ospeed); 3091179Sbill } else 3101179Sbill prspeed("speed ", mode.sg_ispeed); 3111179Sbill fprintf(stderr, all==2 ? "\n" : "; "); 3121179Sbill m = mode.sg_flags; 3131179Sbill if(all==2 || (m&(EVENP|ODDP))!=(EVENP|ODDP)) { 3141179Sbill if(m & EVENP) fprintf(stderr,"even "); 3151179Sbill if(m & ODDP) fprintf(stderr,"odd "); 3161179Sbill } 3171179Sbill if(all==2 || m&RAW) 3181179Sbill fprintf(stderr,"-raw "+((m&RAW)!=0)); 3191179Sbill if(all==2 || (m&CRMOD)==0) 3201179Sbill fprintf(stderr,"-nl "+((m&CRMOD)==0)); 3211179Sbill if(all==2 || (m&ECHO)==0) 3221179Sbill fprintf(stderr,"-echo "+((m&ECHO)!=0)); 3231179Sbill if(all==2 || (m&LCASE)) 3241179Sbill fprintf(stderr,"-lcase "+((m&LCASE)!=0)); 3251179Sbill if(all==2 || (m&TANDEM)) 3261179Sbill fprintf(stderr,"-tandem "+((m&TANDEM)!=0)); 3271179Sbill fprintf(stderr,"-tabs "+((m&XTABS)!=XTABS)); 3281179Sbill if(all==2 || (m&CBREAK)) 3291179Sbill fprintf(stderr,"-cbreak "+((m&CBREAK)!=0)); 3301179Sbill if(all==2 || (m&NLDELAY)) 3311179Sbill delay((m&NLDELAY)/NL1, "nl"); 3321179Sbill if ((m&TBDELAY)!=XTABS) 3331179Sbill delay((m&TBDELAY)/TAB1, "tab"); 3341179Sbill if(all==2 || (m&CRDELAY)) 3351179Sbill delay((m&CRDELAY)/CR1, "cr"); 3361179Sbill if(all==2 || (m&VTDELAY)) 3371179Sbill delay((m&VTDELAY)/FF1, "ff"); 3381179Sbill if(all==2 || (m&BSDELAY)) 3391179Sbill delay((m&BSDELAY)/BS1, "bs"); 3401179Sbill if (all) 3411179Sbill fprintf(stderr,"\n"); 3421179Sbill #define lpit(what,str) \ 3431179Sbill if (all==2||(lmode&what)) { \ 3441179Sbill fprintf(stderr,str+((lmode&what)!=0)); any++; \ 3451179Sbill } 3461179Sbill if (ldisc == NTTYDISC) { 3471179Sbill int newcrt = (lmode&(LCTLECH|LCRTBS)) == (LCTLECH|LCRTBS) && 3481179Sbill (lmode&(LCRTERA|LCRTKIL)) == 3491179Sbill ((mode.sg_ospeed > B300) ? LCRTERA|LCRTKIL : 0); 3501179Sbill if (newcrt) { 3511179Sbill if (all==2) 352*1402Sbill fprintf(stderr, "crt: (crtbs crterase crtkill ctlecho) "); 3531179Sbill else 354*1402Sbill fprintf(stderr, "crt "); 3551179Sbill any++; 3561179Sbill } else { 3571179Sbill lpit(LCRTBS, "-crtbs "); 3581179Sbill lpit(LCRTERA, "-crterase "); 3591179Sbill lpit(LCRTKIL, "-crtkill "); 3601179Sbill lpit(LCTLECH, "-ctlecho "); 3611179Sbill lpit(LPRTERA, "-prterase "); 3621179Sbill } 3631179Sbill lpit(LTOSTOP, "-tostop "); 3641179Sbill lpit(LINTRUP, "-intrup "); 3651179Sbill if (all==2) { 3661179Sbill fprintf(stderr, "\n"); 3671179Sbill any = 0; 3681179Sbill } 3691179Sbill lpit(LTILDE, "-tilde "); 3701179Sbill lpit(LFLUSHO, "-flusho "); 3711179Sbill lpit(LMDMBUF, "-mdmbuf "); 3721179Sbill lpit(LLITOUT, "-litout "); 3731179Sbill lpit(LNOHANG, "-nohang "); 3741179Sbill lpit(LETXACK, "-etxack "); 3751179Sbill lpit(LPENDIN, "-pendin "); 3761179Sbill if (any) 3771179Sbill fprintf(stderr,"\n"); 3781179Sbill } else if (!all) 3791179Sbill fprintf(stderr,"\n"); 3801179Sbill if (all) { 3811179Sbill switch (ldisc) { 3821179Sbill 3831179Sbill case 0: 3841179Sbill fprintf(stderr,"\ 3851179Sbill erase kill intr quit stop eof\ 3861179Sbill \n"); 3871179Sbill pcol(mode.sg_erase, -1); 3881179Sbill pcol(mode.sg_kill, -1); 3891179Sbill pcol(tc.t_intrc, -1); 3901179Sbill pcol(tc.t_quitc, -1); 3911179Sbill pcol(tc.t_stopc, tc.t_startc); 3921179Sbill pcol(tc.t_eofc, tc.t_brkc); 3931179Sbill fprintf(stderr,"\n"); 3941179Sbill break; 3951179Sbill 3961179Sbill case NTTYDISC: 3971179Sbill fprintf(stderr,"\ 3981179Sbill erase kill werase rprnt flush lnext susp intr quit stop eof\ 3991179Sbill \n"); 4001179Sbill pcol(mode.sg_erase, -1); 4011179Sbill pcol(mode.sg_kill, -1); 4021179Sbill pcol(ltc.t_werasc, -1); 4031179Sbill pcol(ltc.t_rprntc, -1); 4041179Sbill pcol(ltc.t_flushc, -1); 4051179Sbill pcol(ltc.t_lnextc, -1); 4061179Sbill pcol(ltc.t_suspc, ltc.t_dsuspc); 4071179Sbill pcol(tc.t_intrc, -1); 4081179Sbill pcol(tc.t_quitc, -1); 4091179Sbill pcol(tc.t_stopc, tc.t_startc); 4101179Sbill pcol(tc.t_eofc, tc.t_brkc); 4111179Sbill fprintf(stderr,"\n"); 4121179Sbill break; 4131179Sbill } 4141179Sbill } else if (ldisc != NETLDISC) { 4151179Sbill register struct special *sp; 4161179Sbill int first = 1; 4171179Sbill for (sp = special; sp->name; sp++) { 4181179Sbill if ((*sp->cp&0377) != (sp->def&0377)) { 4191179Sbill pit(*sp->cp, sp->name, first ? "" : ", "); 4201179Sbill first = 0; 4211179Sbill }; 4221179Sbill if (sp->cp == &tc.t_brkc && ldisc == 0) 4231179Sbill break; 4241179Sbill } 4251179Sbill if (first == 0) 4261179Sbill fprintf(stderr, "\n"); 4271179Sbill } 4281179Sbill } 4291179Sbill 4301179Sbill pcol(ch1, ch2) 4311179Sbill int ch1, ch2; 4321179Sbill { 4331179Sbill int nout = 0; 4341179Sbill 4351179Sbill ch1 &= 0377; 4361179Sbill ch2 &= 0377; 4371179Sbill if (ch1 == ch2) 4381179Sbill ch2 = 0377; 4391179Sbill for (; ch1 != 0377 || ch2 != 0377; ch1 = ch2, ch2 = 0377) { 4401179Sbill if (ch1 == 0377) 4411179Sbill continue; 4421179Sbill if (ch1 & 0200) { 4431179Sbill fprintf(stderr, "M-"); 4441179Sbill nout += 2; 4451179Sbill ch1 &= ~ 0200; 4461179Sbill } 4471179Sbill if (ch1 == 0177) { 4481179Sbill fprintf(stderr, "^"); 4491179Sbill nout++; 4501179Sbill ch1 = '?'; 4511179Sbill } else if (ch1 < ' ') { 4521179Sbill fprintf(stderr, "^"); 4531179Sbill nout++; 4541179Sbill ch1 += '@'; 4551179Sbill } 4561179Sbill fprintf(stderr, "%c", ch1); 4571179Sbill nout++; 4581179Sbill if (ch2 != 0377) { 4591179Sbill fprintf(stderr, "/"); 4601179Sbill nout++; 4611179Sbill } 4621179Sbill } 4631179Sbill while (nout < 7) { 4641179Sbill fprintf(stderr, " "); 4651179Sbill nout++; 4661179Sbill } 4671179Sbill } 4681179Sbill 4691179Sbill pit(what, itsname, sep) 4701179Sbill unsigned what; 4711179Sbill char *itsname, *sep; 4721179Sbill { 4731179Sbill 4741179Sbill what &= 0377; 4751179Sbill fprintf(stderr, "%s%s", sep, itsname); 4761179Sbill if (what == 0377) { 4771179Sbill fprintf(stderr, " <undef>"); 4781179Sbill return; 4791179Sbill } 4801179Sbill fprintf(stderr, " = "); 4811179Sbill if (what & 0200) { 4821179Sbill fprintf(stderr, "M-"); 4831179Sbill what &= ~ 0200; 4841179Sbill } 4851179Sbill if (what == 0177) { 4861179Sbill fprintf(stderr, "^"); 4871179Sbill what = '?'; 4881179Sbill } else if (what < ' ') { 4891179Sbill fprintf(stderr, "^"); 4901179Sbill what += '@'; 4911179Sbill } 4921179Sbill fprintf(stderr, "%c", what); 4931179Sbill } 4941179Sbill 4951179Sbill delay(m, s) 4961179Sbill char *s; 4971179Sbill { 4981179Sbill 4991179Sbill if(m) 5001179Sbill fprintf(stderr,"%s%d ", s, m); 5011179Sbill } 5021179Sbill 5031179Sbill int speed[] = { 5041179Sbill 0,50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,0,0 5051179Sbill }; 5061179Sbill 5071179Sbill prspeed(c, s) 5081179Sbill char *c; 5091179Sbill { 5101179Sbill 5111179Sbill fprintf(stderr,"%s%d baud", c, speed[s]); 5121179Sbill } 513