ok deraadt

> 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
> 

Reply via email to