diff options
author | Alexey Botchkov <holyfoot@mysql.com> | 2009-02-24 15:29:49 +0400 |
---|---|---|
committer | Alexey Botchkov <holyfoot@mysql.com> | 2009-02-24 15:29:49 +0400 |
commit | a34bb2b8d86bfb08884660d280863bc02c52e7ca (patch) | |
tree | 39b638f3059d5a325a196d7040c92179045f1882 /mysys | |
parent | 5a7d6382bf5992b22e3f347258ab68b72b528930 (diff) | |
parent | be66e43dabe2681705a9adfe3d385496dc827882 (diff) | |
download | mariadb-git-a34bb2b8d86bfb08884660d280863bc02c52e7ca.tar.gz |
merging.
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/default.c | 10 | ||||
-rw-r--r-- | mysys/my_getopt.c | 14 |
2 files changed, 14 insertions, 10 deletions
diff --git a/mysys/default.c b/mysys/default.c index 6b2b31d43ec..c7e1e513e1e 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -144,6 +144,7 @@ static char *remove_end_comment(char *ptr); RETURN 0 ok 1 given cinf_file doesn't exist + 2 out of memory The global variable 'my_defaults_group_suffix' is updated with value for --defaults_group_suffix @@ -190,7 +191,7 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv, if (!(extra_groups= (const char**)alloc_root(ctx->alloc, (2*group->count+1)*sizeof(char*)))) - goto err; + DBUG_RETURN(2); for (i= 0; i < group->count; i++) { @@ -199,7 +200,7 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv, len= strlen(extra_groups[i]); if (!(ptr= alloc_root(ctx->alloc, len+instance_len+1))) - goto err; + DBUG_RETURN(2); extra_groups[i+group->count]= ptr; @@ -254,12 +255,11 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv, } } - DBUG_RETURN(error); + DBUG_RETURN(0); err: fprintf(stderr,"Fatal error in defaults handling. Program aborted\n"); - exit(1); - return 0; /* Keep compiler happy */ + DBUG_RETURN(1); } diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index f97550d4429..48174a40c21 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -100,10 +100,10 @@ static void default_reporter(enum loglevel level, one. Call function 'get_one_option()' once for each option. */ -static uchar** (*getopt_get_addr)(const char *, uint, const struct my_option *); +static uchar** (*getopt_get_addr)(const char *, uint, const struct my_option *, int *); void my_getopt_register_get_addr(uchar** (*func_addr)(const char *, uint, - const struct my_option *)) + const struct my_option *, int *)) { getopt_get_addr= func_addr; } @@ -362,8 +362,12 @@ int handle_options(int *argc, char ***argv, my_progname, optp->name); return EXIT_NO_ARGUMENT_ALLOWED; } + error= 0; value= optp->var_type & GET_ASK_ADDR ? - (*getopt_get_addr)(key_name, (uint) strlen(key_name), optp) : optp->value; + (*getopt_get_addr)(key_name, (uint) strlen(key_name), optp, &error) : + optp->value; + if (error) + return error; if (optp->arg_type == NO_ARG) { @@ -1092,7 +1096,7 @@ static void init_variables(const struct my_option *options, if (options->value) init_one_value(options, options->value, options->def_value); if (options->var_type & GET_ASK_ADDR && - (variable= (*getopt_get_addr)("", 0, options))) + (variable= (*getopt_get_addr)("", 0, options, 0))) init_one_value(options, variable, options->def_value); } DBUG_VOID_RETURN; @@ -1196,7 +1200,7 @@ void my_print_variables(const struct my_option *options) for (optp= options; optp->id; optp++) { uchar* *value= (optp->var_type & GET_ASK_ADDR ? - (*getopt_get_addr)("", 0, optp) : optp->value); + (*getopt_get_addr)("", 0, optp, 0) : optp->value); if (value) { printf("%s ", optp->name); |