| .TH GETFLAGS 8 |
| .SH NAME |
| getflags, usage \- command-line parsing for shell scripts |
| .SH SYNOPSIS |
| .B getflags $* |
| .PP |
| .B usage [ progname ] |
| .SH DESCRIPTION |
| .I Getflags |
| parses the options in its command-line arguments |
| according to the environment variable |
| .BR $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. |
| .I Getflags |
| prints an |
| .IR rc (1) |
| script on standard output which initializes the |
| environment variable |
| .BI $flag x |
| for every option mentioned in |
| .BR $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 |
| .BR 1 . |
| The script also sets the variable |
| .B $* |
| to the list of arguments following the options. |
| The final line in the script sets the |
| .B $status |
| variable, to the empty string on success |
| and to the string |
| .B usage |
| when there is an error parsing the command line. |
| .PP |
| .I Usage |
| prints a usage message to standard error. |
| It creates the message using |
| .BR $flagfmt , |
| as described above, |
| .BR $args , |
| which should contain the string to be printed explaining |
| non-option arguments, |
| and |
| .BR $0 , |
| the program name |
| (see |
| .IR rc (1)). |
| If run under |
| .IR sh (1), |
| which does not set |
| .BR $0 , |
| the program name must be given explicitly on the command line. |
| .SH EXAMPLE |
| Parse the arguments for |
| .IR leak (1): |
| .IP |
| .EX |
| flagfmt='b,s,f binary,r res,x width' |
| args='name | pid list' |
| if(! ifs=() eval `{getflags $*} || ~ $#* 0){ |
| usage |
| exit usage |
| } |
| .EE |
| .SH SOURCE |
| .B \*9/src/cmd/getflags.c |
| .br |
| .B \*9/src/cmd/usage.c |
| .SH SEE ALSO |
| .IR arg (3) |