diff options
-rw-r--r-- | usr.bin/tip/tip/cu.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/usr.bin/tip/tip/cu.c b/usr.bin/tip/tip/cu.c index f34bba2..d8d104d 100644 --- a/usr.bin/tip/tip/cu.c +++ b/usr.bin/tip/tip/cu.c @@ -60,7 +60,26 @@ cumain(int argc, char *argv[]) CU = DV = NOSTR; BR = DEFBR; parity = 0; /* none */ - while ((ch = getopt(argc, argv, "a:l:s:htoe0123456789")) != -1) { + + /* + * We want to accept -# as a speed. It's easiest to look through + * the arguments, replace -# with -s#, and let getopt() handle it. + */ + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-' && + argv[i][1] >= '0' && argv[i][1] <= '9') { + asprintf(&cp, "-s%s", argv[i] + 1); + if (cp == NULL) { + fprintf(stderr, + "%s: cannot convert -# to -s#\n", + __progname); + exit(3); + } + argv[i] = cp; + } + } + + while ((ch = getopt(argc, argv, "a:l:s:htoe")) != -1) { switch (ch) { case 'a': CU = optarg; @@ -105,13 +124,6 @@ cumain(int argc, char *argv[]) else parity = -1; /* even */ break; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - if (CU) - CU[strlen(CU)-1] = ch; - if (DV) - DV[strlen(DV)-1] = ch; - break; default: cuusage(); break; |