Skip to content

ArgPositional

Description

Register a positional argument. Slot order on the command line matches registration order. Always required.

name is both the help-text label and the metavar shown in usage output (rendered as <NAME>). It is not parsed for -- prefixes – positionals never start with -.

Usage example (from documentation)

  const char *hostname = NULL;
  ArgPositional(&p, "hostname", &hostname, "name to resolve");

Usage example (Cross-references)

Usage examples (Cross-references)
        const char *src = NULL;
        const char *dst = NULL;
        ArgPositional(&p, "source", &src, "from");
        ArgPositional(&p, "dest", &dst, "to");
        const char *dst = NULL;
        ArgPositional(&p, "source", &src, "from");
        ArgPositional(&p, "dest", &dst, "to");
    
        char  *argv[] = {(char *)"cp", (char *)"a.txt", (char *)"b.txt"};
        const char *dst     = NULL;
        bool        verbose = false;
        ArgPositional(&p, "source", &src, "from");
        ArgPositional(&p, "dest", &dst, "to");
        ArgFlag(&p, "-v", "--verbose", &verbose, "v");
        bool        verbose = false;
        ArgPositional(&p, "source", &src, "from");
        ArgPositional(&p, "dest", &dst, "to");
        ArgFlag(&p, "-v", "--verbose", &verbose, "v");
        const char *src = NULL;
        const char *dst = NULL;
        ArgPositional(&p, "source", &src, "");
        ArgPositional(&p, "dest", &dst, "");
        const char *dst = NULL;
        ArgPositional(&p, "source", &src, "");
        ArgPositional(&p, "dest", &dst, "");
    
        char  *argv[] = {(char *)"cp", (char *)"a.txt"};
    
        const char *x = NULL;
        ArgPositional(&p, "x", &x, "");
    
        char  *argv[] = {(char *)"prog", (char *)"first", (char *)"extra"};
    
        const char *file = NULL;
        ArgPositional(&p, "file", &file, "input file");
    
        // "--unusual-name" would normally be parsed as an option; "--"
        }
        if (role == ARG_ROLE_POSITIONAL && !long_name) {
            LOG_FATAL("arg_register: ArgPositional needs a non-NULL name");
        }
        if (role != ARG_ROLE_POSITIONAL && !short_name && !long_name) {
    
            ArgParse ap = ArgParseInit("resolve", "look up a hostname via /etc/hosts and DNS");
            ArgPositional(&ap, "hostname", &hostname, "name to resolve");
    
            ArgRun rc = ArgParseRun(&ap, argc, argv);
Last updated on