summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/CommonOptions.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-05-30 16:13:58 +0000
committerAlan Conway <aconway@apache.org>2007-05-30 16:13:58 +0000
commit1d63a898503d20e3221be43fc222f0091971a0ce (patch)
tree78d8673b9ed8820e431b6a6f353ba0143adeb800 /cpp/src/qpid/CommonOptions.cpp
parentf2b034ea3f4fa70e512fafdf18fd42c370194329 (diff)
downloadqpid-python-1d63a898503d20e3221be43fc222f0091971a0ce.tar.gz
Logging infrastructure: See qpidd --long-help for details.
* src/qpid/log/*: Logging infrastructure, QPID_LOG macro. * src/*: changed output to cout/cerr to logging. * src/qpidd.cpp: logging options. * src/tests/Makefile.am: fixed issues with valgrind * src/tests/kill|start_broker: use broker daemon options. * src/tests/run_test: run tests in valgrind. Disabled till leaks in client_test are fixed. * src/test/unit/logging.cpp: Logging unit test using boost test framework. Eventually we should move all unit tests to boost & drop CppUnit. * src/test/unit/test_tools.h: useful extensions to boost framework: Regular expression check, ostream << for vectors. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@542855 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/CommonOptions.cpp')
-rw-r--r--cpp/src/qpid/CommonOptions.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/cpp/src/qpid/CommonOptions.cpp b/cpp/src/qpid/CommonOptions.cpp
index f272c71a27..2224f0e75b 100644
--- a/cpp/src/qpid/CommonOptions.cpp
+++ b/cpp/src/qpid/CommonOptions.cpp
@@ -17,6 +17,7 @@
*/
#include "CommonOptions.h"
+#include "qpid/Exception.h"
#include <fstream>
#include <algorithm>
#include <iostream>
@@ -39,6 +40,10 @@ std::string env2option(const std::string& env) {
return std::string();
}
+std::string prettyArg(const std::string& name, const std::string& value) {
+ return value.empty() ? name : name+" (="+value+")";
+}
+
} // namespace program_options
const int CommonOptions::DEFAULT_PORT=5672;
@@ -69,13 +74,19 @@ void parseOptions(
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); // configFile may be updated from arg/env options.
+ if (!configFile.empty()) {
+ try {
+ using namespace std;
+ ifstream conf(configFile.c_str());
+ if (conf.good()) {
+ conf.exceptions(ifstream::failbit|ifstream::badbit);
+ po::store(po::parse_config_file(conf, desc), vm);
+ }
+ }
+ catch (const std::exception& e) {
+ throw Exception(std::string("error parsing config file: ")+ e.what());
+ }
}
po::notify(vm);
}