From 4e451c1cf5dcda0bc4996c6c317efc19fe074a09 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 8 Jun 2009 13:22:03 -0700 Subject: [PATCH] conf: avoid parsing daemon related config options when not needed --- src/cconf.cc | 2 ++ src/common/common_init.cc | 2 +- src/config.cc | 16 ++++++++-------- src/config.h | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/cconf.cc b/src/cconf.cc index c7ed7a9a33dc4..398c53c12ca4d 100644 --- a/src/cconf.cc +++ b/src/cconf.cc @@ -43,6 +43,8 @@ int main(int argc, const char **argv) FOR_EACH_ARG(args) { if (CONF_ARG_EQ("type", 't')) { CONF_SAFE_SET_ARG_VAL(&type, OPT_STR); + } else if (CONF_ARG_EQ("id", 'i')) { + CONF_SAFE_SET_ARG_VAL(&g_conf.id, OPT_STR); } else { nargs.push_back(args[i]); } diff --git a/src/common/common_init.cc b/src/common/common_init.cc index 1edaad65a5abc..8dbed90f8c523 100644 --- a/src/common/common_init.cc +++ b/src/common/common_init.cc @@ -22,7 +22,7 @@ void common_init(std::vector& args, const char *module_type, bool d g_conf.logger = false; } - parse_startup_config_options(args, module_type); + parse_startup_config_options(args, daemon, module_type); parse_config_options(args); // open log file? diff --git a/src/config.cc b/src/config.cc index 9a51cbd000cb8..40dcd595517e0 100644 --- a/src/config.cc +++ b/src/config.cc @@ -877,7 +877,7 @@ bool is_bool_param(const char *param) return ((strcasecmp(param, "true")==0) || (strcasecmp(param, "false")==0)); } -void parse_startup_config_options(std::vector& args, const char *module_type) +void parse_startup_config_options(std::vector& args, bool isdaemon, const char *module_type) { DEFINE_CONF_VARS(NULL); std::vector nargs; @@ -897,20 +897,20 @@ void parse_startup_config_options(std::vector& args, const char *mo conf_specified = true; } else if (CONF_ARG_EQ("monmap", 'M')) { CONF_SAFE_SET_ARG_VAL(&g_conf.monmap, OPT_STR); - } else if (CONF_ARG_EQ("bind", 0)) { + } else if (CONF_ARG_EQ("show_conf", 'S')) { + show_config = true; + } else if (isdaemon && CONF_ARG_EQ("bind", 0)) { assert_warn(parse_ip_port(args[++i], g_my_addr)); - } else if (CONF_ARG_EQ("nodaemon", 'D')) { + } else if (isdaemon && CONF_ARG_EQ("nodaemon", 'D')) { g_conf.daemonize = false; g_conf.log_to_stdout = true; - } else if (CONF_ARG_EQ("daemonize", 'd')) { + } else if (isdaemon && CONF_ARG_EQ("daemonize", 'd')) { g_conf.daemonize = true; g_conf.log_to_stdout = false; - } else if (CONF_ARG_EQ("foreground", 'f')) { + } else if (isdaemon && CONF_ARG_EQ("foreground", 'f')) { g_conf.daemonize = false; g_conf.log_to_stdout = false; - } else if (CONF_ARG_EQ("show_conf", 'S')) { - show_config = true; - } else if (CONF_ARG_EQ("id", 'i')) { + } else if (isdaemon && CONF_ARG_EQ("id", 'i')) { CONF_SAFE_SET_ARG_VAL(&g_conf.id, OPT_STR); } else { nargs.push_back(args[i]); diff --git a/src/config.h b/src/config.h index b6dfb5398f0e1..884349a3d82e1 100644 --- a/src/config.h +++ b/src/config.h @@ -363,7 +363,7 @@ void env_to_deq(std::deque& args); void argv_to_deq(int argc, const char **argv, std::deque& args); -void parse_startup_config_options(std::vector& args, const char *module_type); +void parse_startup_config_options(std::vector& args, bool isdaemon, const char *module_type); void parse_config_options(std::vector& args); void parse_config_option_string(string& s); -- 2.39.5