getflags, usage – command–line parsing for shell scripts

aux/getflags $*


Getflags parses the options in its command–line arguments according to the environment variable $flagfmt. This variable should be a list of comma–separated options. Each option can be a single letter, indicating that it does not take arguments, or a letter followed by the space–separated names of its arguments. Getflags prints an rc(1) script on standard output which initializes the environment variable $flagx for every option mentioned in $flagfmt. If the option is not present on the command–line, the script sets that option's flag variable to an empty list. Otherwise, the script sets that option's flag variable with a list containing the option's arguments or, if the option takes no arguments, with the string 1. The script also sets the variable $* to the list of arguments following the options. The final line in the script sets the $status variable, to the empty string on success and to the string usage when there is an error parsing the command line.

Usage prints a usage message to standard error. It creates the message using $flagfmt, as described above, $args, which should contain the string to be printed explaining non–option arguments, and $0, the program name (see rc(1)).

Parse the arguments for leak(1):
flagfmt='b,s,f binary,r res,x width'
args='name | pid list'
if(! ifs=() eval `{aux/getflags $*} || ~ $#* 0){
exit usage