Skip to content

ArgRequired

Description

Register a required value option (--listen X / -l X / --listen=X). The target type is inferred from target. After ArgParseRun returns ARG_RUN_OK the target is guaranteed to have been written.

Usage example (from documentation)

  Zstr listen = NULL;
  ArgRequired(&p, "-l", "--listen", &listen, "host:port to listen on");

Success

Appends an ARG_ROLE_REQUIRED spec to the parser; the target is recorded for later population by ArgParseRun.

Failure

LOG_FATAL if parser is NULL, if target resolves to an unsupported type (ARG_KIND_INVALID), or if both short_ and long_ are NULL.

Usage example (Cross-references)

Usage examples (Cross-references)
    
            ArgParse ap = ArgParseInit("beam", "small reverse-proxy");
            ArgRequired(&ap, "-l", "--listen", &listen_spec, "host:port to listen on");
            ArgRequired(&ap, "-u", "--upstream", &upstream_spec, "upstream host:port");
            ArgParse ap = ArgParseInit("beam", "small reverse-proxy");
            ArgRequired(&ap, "-l", "--listen", &listen_spec, "host:port to listen on");
            ArgRequired(&ap, "-u", "--upstream", &upstream_spec, "upstream host:port");
    
            ArgRun rc = ArgParseRun(&ap, argc, argv);
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        char  *argv[] = {(char *)"prog", (char *)"--listen", (char *)"0.0.0.0:8080"};
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        char  *argv[] = {(char *)"prog", (char *)"--listen=0.0.0.0:8080"};
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        char  *argv[] = {(char *)"prog", (char *)"-l", (char *)"127.0.0.1:9"};
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "");
    
        char  *argv[] = {(char *)"prog"};
        ArgParse         p      = ArgParseInit("prog", NULL, &a);
        Zstr             listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
        char  *argv[] = {(char *)"prog", (char *)"--listen"};
        ArgRun rc     = ArgParseRun(&p, 2, argv);
        ArgParse         p      = ArgParseInit("prog", NULL, &a);
        Zstr             listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
        char  *argv[] = {(char *)"prog", (char *)"-lhost"};
        ArgRun rc     = ArgParseRun(&p, 2, argv);
    
        Zstr required = NULL;
        ArgRequired(&p, "-l", "--listen", &required, "host:port");
    
        char  *argv[] = {(char *)"prog", (char *)"--help"};
        bool verbose = false;
        ArgPositional(&p, "source", &src, "src file");
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
        ArgOptional(&p, NULL, "--timeout", &timeout, "secs");
        ArgFlag(&p, "-v", "--verbose", &verbose, "be loud");
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        // The auto-registered --help flag is the ONLY option-role spec, so
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, "-l", "--listen", &v, "addr");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, NULL, "--read-only", &v, "mode");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, NULL, "--port", &v, "p");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, "-x", NULL, &v, "x");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, NULL, "--ip6", &v, "x");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, NULL, "--gzip", &v, "x");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, NULL, "--abc", &v, "x");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, "-l", "--listen", &v, "addr");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        Zstr             v = NULL;
        ArgRequired(&p, "-l", "--listen", &v, "addr");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        Zstr             bb = NULL;
        ArgFlag(&p, "-a", "--a", &aa, "AAA");
        ArgRequired(&p, NULL, "--a-very-long-option-name", &bb, "BBB");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        char  *argv[] = {(char *)"prog", (char *)"--listen=host:9"};
        Zstr listen  = NULL;
        ArgCount(&p, "-v", "--verbose", &verbose, "v");
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        // Valid "-vv" bundle, but the required --listen is never supplied.
    
        Zstr listen = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
    
        char  *argv[] = {(char *)"prog"};
    
        Zstr v = NULL;
        ArgRequired(&p, NULL, name, &v, "x");
    
        // token = name + "=val": flag-name slice length is exactly 128.
        bool verbose  = false;
        Zstr hostname = NULL;
        ArgRequired(&p, "-l", "--listen", &listen, "host:port to listen on");
        ArgOptional(&p, NULL, "--timeout", &timeout, "connection timeout");
        ArgFlag(&p, "-v", "--verbose", &verbose, "verbose logging");
Last updated on