summaryrefslogtreecommitdiff
path: root/cpp/lib/common
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-04-26 16:21:23 +0000
committerAlan Conway <aconway@apache.org>2007-04-26 16:21:23 +0000
commitb418805cf2a2e1ac5336b0cd6335c4400c12e1c6 (patch)
treeb0e272b825fa7e2c0700e8f818cc84f6d461992c /cpp/lib/common
parent0a90e5db613b035e15af3b7358205ed1f7960d2c (diff)
downloadqpid-python-b418805cf2a2e1ac5336b0cd6335c4400c12e1c6.tar.gz
Merged revisions 532430 by hand from
https://svn.apache.org/repos/asf/incubator/qpid/branches/trunk/qpid/cpp ------------------------------------------------------------------------ r532750 | aconway | 2007-04-26 10:13:14 -0400 (Thu, 26 Apr 2007) | 4 lines - docs/man/qpidd.x: explain file and environment configuration. - src/qpidd.cpp: read config from file. ------------------------------------------------------------------------ r532491 | aconway | 2007-04-25 17:26:53 -0400 (Wed, 25 Apr 2007) | 4 lines Added environment variables as a source of Qpid configuration. Option "foo-bar" will be read from env. QPID_FOO_BAR if not specified on command line. ------------------------------------------------------------------------ git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@532791 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/common')
-rw-r--r--cpp/lib/common/CommonOptions.cpp20
-rw-r--r--cpp/lib/common/CommonOptions.h5
2 files changed, 25 insertions, 0 deletions
diff --git a/cpp/lib/common/CommonOptions.cpp b/cpp/lib/common/CommonOptions.cpp
index 8efb3a6baa..d4db3660bd 100644
--- a/cpp/lib/common/CommonOptions.cpp
+++ b/cpp/lib/common/CommonOptions.cpp
@@ -17,9 +17,29 @@
*/
#include "CommonOptions.h"
+#include <algorithm>
namespace qpid {
+namespace program_options {
+
+char env2optchar(char env) {
+ return (env=='_') ? '-' : tolower(env);
+}
+
+const std::string envPrefix("QPID_");
+
+std::string env2option(const std::string& env) {
+ if (env.find(envPrefix) ==0) {
+ std::string opt = env.substr(envPrefix.size());
+ std::transform(opt.begin(), opt.end(), opt.begin(), env2optchar);
+ return opt;
+ }
+ return std::string();
+}
+
+} // namespace program_options
+
const int CommonOptions::DEFAULT_PORT=5672;
CommonOptions::CommonOptions() : trace(false), port(DEFAULT_PORT) {}
diff --git a/cpp/lib/common/CommonOptions.h b/cpp/lib/common/CommonOptions.h
index 2a4b9798cd..beaeb114e6 100644
--- a/cpp/lib/common/CommonOptions.h
+++ b/cpp/lib/common/CommonOptions.h
@@ -62,6 +62,11 @@ value_semantic* optValue(T& value, const char* arg) {
return new OptionValue<T>(value, argName);
}
+/** Environment-to-option name mapping.
+ * Maps env variable "QPID_SOME_VAR" to option "some-var"
+ */
+std::string env2option(const std::string& env);
+
/**
* Like boost::program_options::bool_switch but takes reference, not pointer.
*/