For my personal use and tail, I've arrived at:
        if(argv[0] && argv[1] && (!argv[2] || !argv[3]) &&
           (*argv[1] == '-' || *argv[1] == '+') &&
           (*argv[1] != '-' || (*(argv[1] + 1) != 'c' && *(argv[1] + 1) != 'f' 
&& *(argv[1] + 1) != 'r')) && (!argv[2] || *argv[2] != '-')) {
                // V7-style parsing; goto getopt;s on format misuse
        } else
        getopt:
                // normal getopt parsing
which allows the
  tail ±[count][l|c|b][f|r] [file]
usage, so long as it wouldn't otherwise form a valid (or invalid)
standard tail invocation (incl. any of the arguments being --).

You could generalise this to more files but I don't think that's really
useful; skimming through the DCO corpus for "tail \+[0-9lcbfr]" shows
that the vast majority of legacy usages are in the form of tail +5
or tail +5c, with a few also passing a file.

This fully supports Mouse's and RVPs usages and unbreaks the standard
ones.

Attachment: signature.asc
Description: PGP signature

Reply via email to