diff options
author | Alan Conway <aconway@apache.org> | 2007-05-01 20:17:25 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-05-01 20:17:25 +0000 |
commit | 53f068c1553153be0a640c9fe00278a1ee8c6f27 (patch) | |
tree | c9eca796bf3c60cc5d6a04a396cb0539f97a49bf /cpp/src/qpid/CommonOptions.cpp | |
parent | d7cf86d7e550d06de1e2191426105cfc7e3a280f (diff) | |
download | qpid-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.cpp | 26 |
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 |