@@ -12,15 +12,32 @@ static const char *const usages[] = {
12
12
13
13
struct cmd_struct {
14
14
const char * cmd ;
15
- int len ;
16
15
int (* fn ) (int , const char * * );
17
- const char * help ;
18
16
};
19
17
20
18
int
21
19
cmd_foo (int argc , const char * * argv )
22
20
{
23
21
printf ("executing subcommand foo\n" );
22
+ printf ("argc: %d\n" , argc );
23
+ for (int i = 0 ; i < argc ; i ++ ) {
24
+ printf ("argv[%d]: %s\n" , i , * (argv + i ));
25
+ }
26
+ int force = 0 ;
27
+ int test = 0 ;
28
+ const char * path = NULL ;
29
+ struct argparse_option options [] = {
30
+ OPT_HELP (),
31
+ OPT_BOOLEAN ('f' , "force" , & force , "force to do" , NULL , 0 , 0 ),
32
+ OPT_BOOLEAN ('t' , "test" , & test , "test only" , NULL , 0 , 0 ),
33
+ OPT_STRING ('p' , "path" , & path , "path to read" , NULL , 0 , 0 ),
34
+ OPT_END (),
35
+ };
36
+ struct argparse argparse ;
37
+ argparse_init (& argparse , options , usages , 0 );
38
+ argc = argparse_parse (& argparse , argc , argv );
39
+ printf ("after argparse_parse:\n" );
40
+ printf ("argc: %d\n" , argc );
24
41
for (int i = 0 ; i < argc ; i ++ ) {
25
42
printf ("argv[%d]: %s\n" , i , * (argv + i ));
26
43
}
@@ -38,8 +55,8 @@ cmd_bar(int argc, const char **argv)
38
55
}
39
56
40
57
static struct cmd_struct commands [] = {
41
- {"foo" , 3 , cmd_foo , NULL },
42
- {"bar" , 3 , cmd_bar , NULL },
58
+ {"foo" , cmd_foo },
59
+ {"bar" , cmd_bar },
43
60
};
44
61
45
62
int
@@ -50,7 +67,7 @@ main(int argc, const char **argv)
50
67
OPT_HELP (),
51
68
OPT_END (),
52
69
};
53
- argparse_init (& argparse , options , usages , 0 );
70
+ argparse_init (& argparse , options , usages , ARGPARSE_STOP_AT_NON_OPTION );
54
71
argc = argparse_parse (& argparse , argc , argv );
55
72
if (argc < 1 ) {
56
73
argparse_usage (& argparse );
0 commit comments