From 53f068c1553153be0a640c9fe00278a1ee8c6f27 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Tue, 1 May 2007 20:17:25 +0000 Subject: 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 --- cpp/src/qpid/CommonOptions.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'cpp/src/qpid/CommonOptions.cpp') 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 #include 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 -- cgit v1.2.1