DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
A Flexible UNIX Command Line Processing Facility - Args(3C++)

Invocation errors

The end user can make several command-line errors when invoking a program. The first error is specifying an illegal option:

       cc -Z foo.c  # illegal option!

The second error is failing to specify a value for an option that expects one:

       cc -o -- foo.c  # missing value!

Notice that if an option taking a value appears in an option block, it is treated as missing a value:

       cc -co foo.c  # missing value!

This is consistent with the intended (but currently unenforced) behavior of getopt(3C).

The third error is a missing option:

       cc - foo.c  # missing option!

Args uses Objections to signal such errors. In the first case, Args::unexpected_option is raised; in the second case, Args::missing_val is raised; and in the third case, Args::missing_opt is raised. In each case both the default and recovery actions is to (1) print an error message, (2) ignore the offending (or missing) option, and (3) set the ``error state'' of the Args object.

This error state can be inquired by calling error():

       main(int argc, const char*const* argv) {
           Args args(argc, argv, "co:OI:D;p",
               Args::intermix | Args::plusoptions,
               keywords);
           if (args.error()) exit(1);
           // ...
       }

The reason Args does not itself exit is to allow programs that wish to continue to do so.


Next topic: The final program
Previous topic: Keyword options

© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 27 April 2004