diff options
author | jani@a80-186-24-72.elisa-laajakaista.fi <> | 2004-11-11 16:59:36 +0200 |
---|---|---|
committer | jani@a80-186-24-72.elisa-laajakaista.fi <> | 2004-11-11 16:59:36 +0200 |
commit | 54dac2cfacd931a3afc972d380ae2a27ee38be6b (patch) | |
tree | 3c950aff04c4c79bf3637d8b226f8e44bb1e8e3b /mysys/default.c | |
parent | 4f0421787936ead1927aa3d33d6942023559ad4a (diff) | |
download | mariadb-git-54dac2cfacd931a3afc972d380ae2a27ee38be6b.tar.gz |
Some code clean-up and optimization.
Diffstat (limited to 'mysys/default.c')
-rw-r--r-- | mysys/default.c | 90 |
1 files changed, 60 insertions, 30 deletions
diff --git a/mysys/default.c b/mysys/default.c index d260dd4b370..16e166a3ca5 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -68,7 +68,12 @@ static const char *f_extensions[]= { ".cnf", 0 }; static int search_default_file(DYNAMIC_ARRAY *args,MEM_ROOT *alloc, const char *dir, const char *config_file, - const char *ext, TYPELIB *group); + TYPELIB *group); + +static int search_default_file_with_ext(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, + const char *dir, const char *ext, + const char *config_file, + TYPELIB *group); static char *remove_end_comment(char *ptr); @@ -164,15 +169,16 @@ int load_defaults(const char *conf_file, const char **groups, goto err; if (forced_default_file) { - if ((error= search_default_file(&args, &alloc, "", - forced_default_file, "", &group)) < 0) + if ((error= search_default_file_with_ext(&args, &alloc, "", "", + forced_default_file, + &group)) < 0) goto err; } else if (dirname_length(conf_file)) { for (ext= (char**) f_extensions; *ext; *ext++) if ((error= search_default_file(&args, &alloc, NullS, conf_file, - *ext, &group)) < 0) + &group)) < 0) goto err; } else @@ -180,33 +186,31 @@ int load_defaults(const char *conf_file, const char **groups, #ifdef __WIN__ char system_dir[FN_REFLEN]; GetWindowsDirectory(system_dir,sizeof(system_dir)); - for (ext= (char**) f_extensions; *ext; *ext++) - if ((search_default_file(&args, &alloc, system_dir, conf_file, - *ext, &group))) - goto err; + if ((search_default_file(&args, &alloc, system_dir, conf_file, &group))) + goto err; #endif #if defined(__EMX__) || defined(OS2) - for (ext= (char**) f_extensions; *ext; *ext++) - if (getenv("ETC") && - (search_default_file(&args, &alloc, getenv("ETC"), conf_file, - *ext, &group)) < 0) - goto err; + { + const char *etc; + if ((etc= getenv("ETC")) && + (search_default_file(&args, &alloc, etc, conf_file, + &group)) < 0) + goto err; + } #endif for (dirs=default_directories ; *dirs; dirs++) { if (**dirs) { - for (ext= (char**) f_extensions; *ext; *ext++) - if (search_default_file(&args, &alloc, *dirs, conf_file, - *ext, &group) < 0) - goto err; + if (search_default_file(&args, &alloc, *dirs, conf_file, + &group) < 0) + goto err; } else if (defaults_extra_file) { - for (ext= (char**) f_extensions; *ext; *ext++) - if (search_default_file(&args, &alloc, NullS, defaults_extra_file, - *ext, &group) < 0) - goto err; /* Fatal error */ + if (search_default_file(&args, &alloc, NullS, defaults_extra_file, + &group) < 0) + goto err; /* Fatal error */ } } } @@ -267,11 +271,28 @@ void free_defaults(char **argv) } +static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, + const char *dir, + const char *config_file, TYPELIB *group) +{ + char **ext; + + for (ext= (char**) f_extensions; *ext; *ext++) + { + int error; + if ((error= search_default_file_with_ext(args, alloc, dir, *ext, + config_file, group)) < 0) + return error; + } + return 0; +} + + /* Open a configuration file (if exists) and read given options from it SYNOPSIS - search_default_file() + search_default_file_with_ext() args Store pointer to found options here alloc Allocate strings in this object dir directory to read @@ -286,9 +307,10 @@ void free_defaults(char **argv) 2 File is not a regular file (Warning) */ -static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, - const char *dir, const char *config_file, - const char *ext, TYPELIB *group) +static int search_default_file_with_ext(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, + const char *dir, const char *ext, + const char *config_file, + TYPELIB *group) { char name[FN_REFLEN+10],buff[4096],*ptr,*end,*value,*tmp; FILE *fp; @@ -482,7 +504,7 @@ static char *remove_end_comment(char *ptr) void print_defaults(const char *conf_file, const char **groups) { #ifdef __WIN__ - bool have_ext=fn_ext(conf_file)[0] != 0; + my_bool have_ext= fn_ext(conf_file)[0] != 0; #endif char name[FN_REFLEN], **ext; const char **dirs; @@ -495,16 +517,24 @@ void print_defaults(const char *conf_file, const char **groups) { #ifdef __WIN__ GetWindowsDirectory(name,sizeof(name)); - if (have_ext) + if (!have_ext) + { for (ext= (char**) f_extensions; *ext; *ext++) printf("%s\\%s%s ", name, conf_file, *ext); + } else printf("%s\\%s ", name, conf_file); #endif #if defined(__EMX__) || defined(OS2) - for (ext= (char**) f_extensions; *ext; *ext++) - if (getenv("ETC")) - printf("%s\\%s%s ", getenv("ETC"), conf_file, *ext); + { + const char *etc; + + if ((etc= getenv("ETC"))) + { + for (ext= (char**) f_extensions; *ext; *ext++) + printf("%s\\%s%s ", etc, conf_file, *ext); + } + } #endif for (dirs=default_directories ; *dirs; dirs++) { |