summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/CommonOptions.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-05-01 20:17:25 +0000
committerAlan Conway <aconway@apache.org>2007-05-01 20:17:25 +0000
commit53f068c1553153be0a640c9fe00278a1ee8c6f27 (patch)
treec9eca796bf3c60cc5d6a04a396cb0539f97a49bf /cpp/src/qpid/CommonOptions.cpp
parentd7cf86d7e550d06de1e2191426105cfc7e3a280f (diff)
downloadqpid-python-53f068c1553153be0a640c9fe00278a1ee8c6f27.tar.gz
Moved parseOptions from qipdd to CommonOptions where it can be re-used.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@534226 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/CommonOptions.cpp')
-rw-r--r--cpp/src/qpid/CommonOptions.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/cpp/src/qpid/CommonOptions.cpp b/cpp/src/qpid/CommonOptions.cpp
index d4db3660bd..1b08943088 100644
--- a/cpp/src/qpid/CommonOptions.cpp
+++ b/cpp/src/qpid/CommonOptions.cpp
@@ -17,10 +17,10 @@
*/
#include "CommonOptions.h"
+#include <fstream>
#include <algorithm>
namespace qpid {
-
namespace program_options {
char env2optchar(char env) {
@@ -52,5 +52,29 @@ void CommonOptions::addTo(po::options_description& desc)
("port,p", optValue(port,"PORT"), "Use PORT for AMQP connections.");
}
+void parseOptions(
+ po::options_description& desc, int argc, char** argv,
+ const std::string& configFile)
+{
+ po::variables_map vm;
+ po::store(po::parse_command_line(argc, argv, desc), vm);
+ try {
+ po::store(po::parse_environment(desc, po::env2option), vm);
+ }
+ catch (const po::error& e) {
+ throw po::error(std::string("parsing environment variables: ")
+ + e.what());
+ }
+ po::notify(vm); // So we can use the value of config.
+ try {
+ std::ifstream conf(configFile.c_str());
+ po::store(po::parse_config_file(conf, desc), vm);
+ }
+ catch (const po::error& e) {
+ throw po::error(std::string("parsing config file: ")+ e.what());
+ }
+ po::notify(vm);
+}
+
} // namespace qpid