59 const char *argp_program_version =
61 const char *argp_program_bug_address =
62 "<bug-gnu-utils@gnu.org>";
66 "Argp example #3 -- a program with options and arguments using argp";
69 static char args_doc[] =
"ARG1 ARG2";
73 {
"verbose",
'v', 0, 0,
"Produce verbose output", 0},
74 {
"quiet",
'q', 0, 0,
"Don't produce any output", 0},
75 {
"silent",
's', 0, OPTION_ALIAS, 0, 0},
76 {
"output",
'o',
"FILE", 0,
77 "Output to FILE instead of standard output", 0},
91 parse_opt (
int key,
char *arg,
struct argp_state *state)
100 arguments->silent = 1;
103 arguments->verbose = 1;
106 arguments->output_file = arg;
110 if (state->arg_num >= 2)
114 arguments->args[state->arg_num] = arg;
119 if (state->arg_num < 2)
125 return ARGP_ERR_UNKNOWN;
131 static struct argp argp = { options, parse_opt, args_doc, doc, 0, 0, 0 };
133 int main (
int argc,
char **argv)
138 arguments.silent = 0;
139 arguments.verbose = 0;
140 arguments.output_file =
"-";
144 argp_parse (&argp, argc, argv, 0, 0, &arguments);
146 printf (
"ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n" 147 "VERBOSE = %s\nSILENT = %s\n",
148 arguments.args[0], arguments.args[1],
149 arguments.output_file,
150 arguments.verbose ?
"yes" :
"no",
151 arguments.silent ?
"yes" :
"no");