]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: CEPH_KEYRING overrides g_conf.keyring
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Sun, 2 Jan 2011 20:50:53 +0000 (12:50 -0800)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Sun, 2 Jan 2011 20:52:10 +0000 (12:52 -0800)
Allow users to choose different keyring files by setting an environment
variable, CEPH_KEYRING.

Signed-off-by: Colin McCabe <colinm@hq.newdream.net>
src/config.cc

index 28adc6c4fdf1b1b7b988ae731e3d7cb600b00ada..12b135b75838a50978ea792356125c75bc339250 100644 (file)
@@ -1277,6 +1277,16 @@ ExportControl *conf_get_export_control()
   return ec;
 }
 
+static void env_override(char **ceph_var, const char * const env_var)
+{
+  char *e = getenv(env_var);
+  if (!e)
+    return;
+  if (*ceph_var)
+    free(*ceph_var);
+  *ceph_var = strdup(e);
+}
+
 void parse_config_options(std::vector<const char*>& args)
 {
   int opt_len = sizeof(config_optionsp)/sizeof(config_option);
@@ -1305,6 +1315,8 @@ void parse_config_options(std::vector<const char*>& args)
         nargs.push_back(args[i]);
   }
 
+  env_override(&g_conf.keyring, "CEPH_KEYRING");
+
   install_sighandler(SIGHUP, sighup_handler, SA_RESTART);
   install_sighandler(SIGSEGV, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
   install_sighandler(SIGABRT, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);