1 // Copyright (C) 2021 Harry Godden (hgn)
13 static int csr_argi
= 1;
14 static int csr_argj
= 1;
15 static int csr_argc
= 0;
16 static int csr_consume_next
= 0;
17 static char **csr_argv
;
19 // Will return 0 if exhausted
20 int csr_argp( int argc
, char *argv
[] )
25 static int delta_i
= 0;
26 static int delta_j
= 0;
28 if( csr_argj
!= 1 && !csr_argv
[ csr_argi
][ csr_argj
] )
34 if( csr_consume_next
)
40 if( csr_argi
>= argc
)
43 if( (delta_i
== csr_argi
) && (delta_j
== csr_argj
) )
45 char *cur
= &csr_argv
[ csr_argi
][ csr_argj
];
49 log_error( "Unknown opt '-%c'\n", *cur
);
53 log_error( "Unknown opt '--%s'\n", cur
+ 1 );
65 // Example: see if -c is set
68 char *carg
= csr_argv
[ csr_argi
];
75 if( carg
[ csr_argj
] == c
)
86 // Example: get -c *value*
87 char *csr_opt_arg( char c
)
91 if( csr_argi
< csr_argc
-1 )
93 if( csr_argv
[ csr_argi
+ 1 ][0] != '-' )
96 return csr_argv
[ csr_argi
+ 1 ];
100 log_error( "Option '%c' requires argument!\n", c
);
107 // Example see if --big is set
108 int csr_long_opt( char *name
)
110 char *carg
= csr_argv
[ csr_argi
];
116 if( !strcmp( name
, carg
+2 ) )
118 csr_consume_next
= 1;
127 // Example: get --big=value
128 char *csr_long_opt_arg( char *name
)
130 char *carg
= csr_argv
[ csr_argi
];
136 int k
= 2; int set
= 0;
139 if( carg
[ k
] == '=' )
148 if( !strncmp( name
, carg
+2, k
-2 ) )
150 csr_consume_next
= 1;
159 log_error( "Long option '%s' requires argument\n", name
);
170 char *carg
= csr_argv
[ csr_argi
];
174 csr_consume_next
= 1;