Skip to content

Handling subcommands, options, option-arguments and operands

License

Notifications You must be signed in to change notification settings

ntnn/libargparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libargparse is a C library to handle subcommands, options, option-arguments and operands conforming to the XBD Utility Conventions included in POSIX.1-2008.

For usage check the examples in the examples/ directory and the header file argparse.h.

Using this code:

The following arguments will be recognized and parsed:

  • -f
  • +f
  • --feature
  • --enable-feature
  • --disable-feature
  • --no-feature
  • --with-feature
  • --without-feature

Given opt->accepts_arguments = true or opt->requires_arguments = true option-arguments will be parsed in this manner:

  • a positive prefix sets a positive opt->present, a negative sets negative
  • a negative option-argument inverts opt->present

This behaviour is similar to GNU autoconf's parameter handling.

Examples:

  • -f -> positive present
  • +f -> negative present
  • -f=no -> negative present
  • +f=no -> positive present
  • --feature -> positive present
  • --enable-feature -> positive present
  • --with-feature=disable -> negative present
  • --without-feature=true -> negative present
  • --disable-feature true -> negative present

A passend option-argument like "disable", "true", etc. pp. are still saved as the first option-argument.

Argparse does not provide a way to link options as mutually exclusive or to set the same value. It is encouraged to make use of the functionality above, otherwise this logic has to be implemented separately.

Using the _help() functions it is possible to print help output generated from the description, short_description, name members to a stream.

#include <argparse.h>
#include <stdio.h>

int main(int argc, char **argv) {
    args *args = args_new();

    args_add_option(args, option_new("f", "feature", "description of feature"));
    args_help(args, stdout);

    args_free(args);
}

Results in:

-f --feature description of feature

About

Handling subcommands, options, option-arguments and operands

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published