From 2b2d52cfaf147b86b9904c53532feb406c1d73d4 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 13 Jan 2011 16:08:22 -0800 Subject: [PATCH] config: keyring uses a search path again --- src/config.cc | 22 +++++++++++++++++++++- src/config.h | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/config.cc b/src/config.cc index d7149c79b16..69ab7acac9c 100644 --- a/src/config.cc +++ b/src/config.cc @@ -372,7 +372,7 @@ static struct config_option config_optionsp[] = { OPTION(debug_finisher, 0, OPT_INT, 1), OPTION(key, 0, OPT_STR, ""), OPTION(keyfile, 'K', OPT_STR, ""), - OPTION(keyring, 'k', OPT_STR, "/etc/ceph/keyring.bin"), + OPTION(keyring, 'k', OPT_STR, "/etc/ceph/keyring,/etc/ceph/keyring.bin"), OPTION(clock_lock, 0, OPT_BOOL, false), OPTION(clock_tare, 0, OPT_BOOL, false), OPTION(ms_tcp_nodelay, 0, OPT_BOOL, true), @@ -1328,6 +1328,7 @@ void parse_config_options(std::vector& args) nargs.push_back(args[i]); } + env_override(&g_conf.keyring, "CEPH_KEYRING"); install_sighandler(SIGHUP, sighup_handler, SA_RESTART); @@ -1342,3 +1343,22 @@ void parse_config_options(std::vector& args) args = nargs; } + +bool ceph_resolve_file_search(string& filename_list, string& result) +{ + list ls; + get_str_list(filename_list, ls); + + list::iterator iter; + for (iter = ls.begin(); iter != ls.end(); ++iter) { + int fd = ::open(iter->c_str(), O_RDONLY); + if (fd < 0) + continue; + + close(fd); + result = *iter; + return true; + } + + return false; +} diff --git a/src/config.h b/src/config.h index 93b454f8d12..d3774731343 100644 --- a/src/config.h +++ b/src/config.h @@ -531,6 +531,8 @@ bool conf_set_conf_val(void *field, opt_type_t type, const char *val); bool conf_cmd_equals(const char *cmd, const char *opt, char char_opt, unsigned int *val_pos); int ceph_def_conf_by_name(const char *name, char *buf, int len); +bool ceph_resolve_file_search(string& filename_list, string& result); + class ExportControl; ExportControl *conf_get_export_control();