Several utilities have command line parsing that predates getopt. Several of these are the old kmem grovellers, which allowed specifying the custom nlist, etc.
I think this is kind of unusual and think that generally, the fewer undocumented features the better. This is as likely to trap people who make typos as anything. Here's a sample diff for netstat. I kept the interval parsing, because I suspect people use that. unifdef the compat code, since it's realistically not going anywhere. But delete the old memf handling. Finally, check argc is sane, so that "netstat 1 apple banana cat dog elephant" doesn't just run without error. More to come for assorted other programs with similar blocks if we like this. Index: main.c =================================================================== RCS file: /cvs/src/usr.bin/netstat/main.c,v retrieving revision 1.106 diff -u -p -r1.106 main.c --- main.c 12 Feb 2015 01:49:02 -0000 1.106 +++ main.c 1 Oct 2015 20:23:40 -0000 @@ -263,23 +263,18 @@ main(int argc, char *argv[]) argv += optind; argc -= optind; -#define BACKWARD_COMPATIBILITY -#ifdef BACKWARD_COMPATIBILITY if (*argv) { if (isdigit((unsigned char)**argv)) { interval = strtonum(*argv, 1, INT_MAX, &errstr); if (errstr) errx(1, "interval is %s", errstr); ++argv; + --argc; iflag = 1; } - if (*argv) { - nlistf = *argv; - if (*++argv) - memf = *argv; - } } -#endif + if (argc) + usage(); /* * Show per-interface statistics which don't need access to