diff options
author | unknown <jani@ua141d10.elisa.omakaista.fi> | 2005-10-06 22:09:15 +0300 |
---|---|---|
committer | unknown <jani@ua141d10.elisa.omakaista.fi> | 2005-10-06 22:09:15 +0300 |
commit | 598d6422855b1c0352be1a76c589b4be21e791fa (patch) | |
tree | d9b0923b1057cc2b3333f6ad611ef198ccc3cf39 /mysys | |
parent | 3c2dca475dfa91c95f2488831fafacacaf852347 (diff) | |
download | mariadb-git-598d6422855b1c0352be1a76c589b4be21e791fa.tar.gz |
Fixed a bug in argument sending to get_one_option.
Fixed documentation for findopt().
Cleaned code a bit.
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/my_getopt.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index e9e20fe4024..31ef21632b9 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -358,7 +358,8 @@ invalid value '%s'\n", continue; } get_one_option(optp->id, optp, - value ? (char*) "1" : disabled_my_option); + *((my_bool*) value) ? + (char*) "1" : disabled_my_option); continue; } argument= optend; @@ -599,16 +600,27 @@ static int setval(const struct my_option *opts, gptr *value, char *argument, return 0; } -/* - function: findopt - Arguments: opt_pattern, length of opt_pattern, opt_struct, first found - name (ffname) +/* + Find option - Go through all options in the my_option struct. Return number - of options found that match the pattern and in the argument - list the option found, if any. In case of ambiguous option, store - the name in ffname argument + SYNOPSIS + findopt() + optpat Prefix of option to find (with - or _) + length Length of optpat + opt_res Options + ffname Place for pointer to first found name + + IMPLEMENTATION + Go through all options in the my_option struct. Return number + of options found that match the pattern and in the argument + list the option found, if any. In case of ambiguous option, store + the name in ffname argument + + RETURN + 0 No matching options + # Number of matching options + ffname points to first matching option */ static int findopt(char *optpat, uint length, @@ -623,12 +635,21 @@ static int findopt(char *optpat, uint length, if (!getopt_compare_strings(opt->name, optpat, length)) /* match found */ { (*opt_res)= opt; - if (!count) - *ffname= (char *) opt->name; /* We only need to know one prev */ if (!opt->name[length]) /* Exact match */ return 1; - if (!count || strcmp(*ffname, opt->name)) /* Don't count synonyms */ + if (!count) + { + count= 1; + *ffname= (char *) opt->name; /* We only need to know one prev */ + } + else if (strcmp(*ffname, opt->name)) + { + /* + The above test is to not count same option twice + (see mysql.cc, option "help") + */ count++; + } } } return count; |