19 rc = sscanf(size_str,
" %lld %c ", (
long long*) & size, &range);
60 pos += printf(
"=STRING");
64 pos += printf(
"=%.14f ", *(
double*) o->
variable);
68 pos += printf(
"=%.6f ", (
double) *(
float*) o->
variable);
72 pos += printf(
"=%d ", *(
int*) o->
variable);
78 pos += printf(
"=%s", *(
char**) o->
variable);
80 pos += printf(
"=STRING");
85 pos += printf(
"=%c", *(
char*) o->
variable);
89 pos += printf(
"=%lld", *(
long long*) o->
variable);
93 pos += printf(
"=%lu", *(uint64_t*) o->
variable);
99 pos += printf(
" (%d)", (*(
int*)o->
variable));
113 printf(
"%s\n", o->
help);
117 printf(
"\n%s\n", name);
127 pos += printf(
"--%s", o->
longVar);
132 for(
int i = 0 ; i < (30 - pos); i++){
135 printf(
"%s", o->
help);
156 pos += printf(
"=%.14f ", *(
double*) o->
variable);
160 pos += printf(
"=%.6f ", (
double) *(
float*) o->
variable);
164 pos += printf(
"=%d ", *(
int*) o->
variable);
168 pos += printf(
"=HIDDEN");
173 pos += printf(
"=%s", *(
char**) o->
variable);
180 pos += printf(
"=%c", *(
char*) o->
variable);
184 pos += printf(
"=%lld", *(
long long*) o->
variable);
188 pos += printf(
"=%lu", *(uint64_t*) o->
variable);
211 pos += printf(
"%s", o->
longVar);
215 pos += printf(
"%s", o->
longVar);
232 char * txt = argv[0];
233 char * arg = strstr(txt,
"=");
235 int replaced_equal = 0;
242 *flag_parsed_next = 0;
246 if(args ==
NULL)
continue;
249 if(
o->shortVar == 0 &&
o->longVar == 0 ){
253 if ( (txt[0] ==
'-' &&
o->shortVar == txt[1]) || (strlen(txt) > 2 && txt[0] ==
'-' && txt[1] ==
'-' &&
o->longVar !=
NULL && strcmp(txt + 2,
o->longVar) == 0)){
257 assert(
o->type ==
'd');
260 (*(
int*)
o->variable) = (val < 0) ? 0 : val;
262 (*(
int*)
o->variable)++;
270 if(
o->shortVar == txt[1] && txt[2] != 0){
276 *flag_parsed_next = 1;
281 const char str[] = {
o->shortVar, 0};
282 printf(
"Error, argument missing for option %s\n", (
o->longVar !=
NULL) ?
o->longVar : str);
289 void(*fp)() =
o->variable;
294 *(
double*)
o->variable = atof(arg);
298 *(
float*)
o->variable = atof(arg);
303 if (val > INT_MAX || val < INT_MIN){
304 printf(
"WARNING: parsing the number %s to integer, this produced an overflow!\n", arg);
306 *(
int*)
o->variable = val;
311 (*(
char **)
o->variable) = strdup(arg);
315 (*(
char *)
o->variable) = arg[0];
317 printf(
"Error, ignoring remainder of string for option %c (%s).\n",
o->shortVar,
o->longVar);
330 printf(
"ERROR: Unknown option type %c\n",
o->type);
339 (*requiredArgsSeen)++;
347 if(strcmp(txt,
"-h") == 0 || strcmp(txt,
"--help") == 0){
355 int flag_parsed_next;
357 int requiredArgsSeen = 0;
359 char * argv[2] = {val,
NULL};
360 option_parse_token(argv, & flag_parsed_next, & requiredArgsSeen, opt_all, & error, & print_help);
365 int flag_parsed_next;
367 int requiredArgsSeen = 0;
370 sprintf(value,
"%s=%s", key, val);
371 char * argv[2] = {value,
NULL};
372 option_parse_token(argv, & flag_parsed_next, & requiredArgsSeen, opt_all, & error, & print_help);
378 int requiredArgsSeen = 0;
379 int requiredArgsNeeded = 0;
385 if(args ==
NULL)
continue;
386 for(
option_help *
o = args;
o->shortVar != 0 ||
o->longVar != 0 ;
o++ ){
388 requiredArgsNeeded++;
393 for(i=1; i < argc; i++){
394 int flag_parsed_next;
395 option_parse_token(& argv[i], & flag_parsed_next, & requiredArgsSeen, opt_all, & error, & printhelp);
396 if (flag_parsed_next){
400 printf(
"Error invalid argument: %s\n", argv[i]);
404 if( requiredArgsSeen != requiredArgsNeeded ){
405 printf(
"Error: Missing some required arguments\n\n");
410 printf(
"Invalid options\n");
415 printf(
"Synopsis %s\n", argv[0]);
418 if(args ==
NULL)
continue;
421 printf(
"\n\nModule %s\n", prefix);
int option_parse(int argc, char **argv, options_all_t *opt_all)
void option_print_help(option_help *args)
static void print_current_option_section(option_help *args, option_value_type type)
static void option_parse_token(char **argv, int *flag_parsed_next, int *requiredArgsSeen, options_all_t *opt_all, int *error, int *print_help)
void option_print_current(option_help *args)
static int print_option_value(option_help *o)
int option_parse_key_value(char *key, char *val, options_all_t *opt_all)
int option_parse_str(char *val, options_all_t *opt_all)
static int print_value(option_help *o)
int64_t string_to_bytes(char *size_str)
static void print_help_section(option_help *args, option_value_type type, char *name)
static struct cephfs_options o