From 47f86754eae605bff97cd73a9d49e68f64eee99e Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 17 Apr 2012 18:26:21 +0200 Subject: [PATCH] Allow setting config file options also from command line --- include/transport/config.h | 4 +++- spectrum/src/main.cpp | 2 +- spectrum/src/sample.cfg | 6 +++--- src/config.cpp | 5 +++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/transport/config.h b/include/transport/config.h index 4ff5b8fa..7d01eaa0 100644 --- a/include/transport/config.h +++ b/include/transport/config.h @@ -50,7 +50,7 @@ typedef boost::program_options::variables_map Variables; class Config { public: /// Constructor. - Config() {} + Config(int argc = 0, char **argv = NULL) : m_argc(argc), m_argv(argv) {} /// Destructor virtual ~Config() {} @@ -99,6 +99,8 @@ class Config { boost::signal onConfigReloaded; private: + int m_argc; + char **m_argv; Variables m_variables; std::map m_unregistered; std::string m_file; diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index 82540d11..ea3b288e 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -114,7 +114,7 @@ static void daemonize(const char *cwd, const char *lock_file) { int main(int argc, char **argv) { - Config config; + Config config(argc, argv); boost::program_options::variables_map vm; bool no_daemon = false; diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 5018ae8b..9097e3b4 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -8,13 +8,13 @@ backend_host=localhost pidfile=./test.pid # < this option doesn't work yet #backend_port=10001 -admin_jid=admin@localhost +#admin_jid=admin@localhost admin_password=test #cert=server.pfx #patch to PKCS#12 certificate #cert_password=test #password to that certificate if any users_per_backend=10 -#backend=../..//backends/libpurple/spectrum2_libpurple_backend -backend=../../backends/template/template_backend.py +backend=../..//backends/libpurple/spectrum2_libpurple_backend +#backend=../../backends/template/template_backend.py protocol=prpl-jabber #protocol=prpl-msn #protocol=any diff --git a/src/config.cpp b/src/config.cpp index 9672f00d..2505614e 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -187,6 +187,11 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description } } + // Load configs passed by command line + if (m_argc != 0 && m_argv) { + store(parse_command_line(m_argc, m_argv, opts), m_variables); + } + store(parsed, m_variables); notify(m_variables);