Command-line processing — optproc()
The command-line processing function is a bit more interesting. The majority of variables derived from the command line are called opt*, where * is the option letter. You'll often see code like this:
if (optv) {
// do something when -v is present
}
By convention, the -v option controls verbosity; each -v
increments optv. Some code looks at the value of optv to determine
how much stuff
to print; other code just treats optv as a Boolean.
The -d option is often used to control debug output.
Command-line processing generally follows the POSIX convention: some options are
just flags (like -v) and some have values.
Flags are usually declared as int.
Valued options are handled in the command-line handler's
switch statement, including range checking.
One of the last things in most optproc() handlers is a final check on the command-line options:
- do we have all of the required options?
- are the values valid?
- are there any conflicting options?
The last thing in optproc() is the command-line argument handling.
POSIX says that all command-line options come first, followed by the argument list.
An initial pass of command-line validation is done right in the switch statement
after the getopt() call. Final validation is done after all
of the parameters have been scanned from the command-line.
