summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-10-04 15:32:45 +0000
committerAlan Conway <aconway@apache.org>2007-10-04 15:32:45 +0000
commitf6afed79c8618f02431bdd9d3ca25e75deef184e (patch)
tree4eb872f1ee7bad57cf1a8cdfd127ffbfd86fcf0b /qpid/cpp/src
parent8ca58fe792954288bd89b8a6a0ed41e5396ae74b (diff)
downloadqpid-python-f6afed79c8618f02431bdd9d3ca25e75deef184e.tar.gz
* docs/man/qpidd.x: Explain configuration options.
* etc/qpidd.conf: Placeholder configuration file. * qpidc.spec.in: Install qpidd.conf * Makefile.am: Install qpidd.conf * src/qpid/Options.cpp, h, src/qpidd.cpp: Option formatting fixes. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@581951 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/Options.cpp16
-rw-r--r--qpid/cpp/src/qpid/Options.h3
-rw-r--r--qpid/cpp/src/qpidd.cpp3
3 files changed, 15 insertions, 7 deletions
diff --git a/qpid/cpp/src/qpid/Options.cpp b/qpid/cpp/src/qpid/Options.cpp
index 081583f17e..291df341e7 100644
--- a/qpid/cpp/src/qpid/Options.cpp
+++ b/qpid/cpp/src/qpid/Options.cpp
@@ -59,13 +59,14 @@ struct EnvOptMapper {
}
std::string prettyArg(const std::string& name, const std::string& value) {
- return value.empty() ? name : name+" (="+value+")";
+ return value.empty() ? name+" " : name+" (="+value+") ";
}
Options::Options(const string& name) : po::options_description(name) {}
void Options::parse(int argc, char** argv, const std::string& configFile)
{
+ string defaultConfigFile = configFile; // May be changed by env/cmdline
string parsing;
try {
po::variables_map vm;
@@ -78,9 +79,14 @@ void Options::parse(int argc, char** argv, const std::string& configFile)
if (!configFile.empty()) {
parsing="configuration file "+configFile;
ifstream conf(configFile.c_str());
- if (conf.good()) {
- conf.exceptions(ifstream::failbit|ifstream::badbit);
+ if (conf.good())
po::store(po::parse_config_file(conf, *this), vm);
+ else {
+ // No error if default configfile is missing/unreadable
+ // but complain for non-default config file.
+ if (configFile != defaultConfigFile)
+ throw Exception("cannot read configuration file "
+ +configFile);
}
}
po::notify(vm);
@@ -94,7 +100,9 @@ void Options::parse(int argc, char** argv, const std::string& configFile)
}
}
-CommonOptions::CommonOptions(const string& name) : Options(name) {
+CommonOptions::CommonOptions(const string& name, const string& configfile)
+ : Options(name), config(configfile)
+{
addOptions()
("help,h", optValue(help), "Print help message.")
("version,v", optValue(version), "Print version information.")
diff --git a/qpid/cpp/src/qpid/Options.h b/qpid/cpp/src/qpid/Options.h
index 0821dca7e5..f46e32032b 100644
--- a/qpid/cpp/src/qpid/Options.h
+++ b/qpid/cpp/src/qpid/Options.h
@@ -137,7 +137,8 @@ struct Options : public po::options_description {
* Standard options for configuration
*/
struct CommonOptions : public Options {
- CommonOptions(const std::string& name=std::string());
+ CommonOptions(const std::string& name=std::string(),
+ const std::string& configfile=std::string());
bool help;
bool version;
std::string config;
diff --git a/qpid/cpp/src/qpidd.cpp b/qpid/cpp/src/qpidd.cpp
index 53a68fc815..97dd83689d 100644
--- a/qpid/cpp/src/qpidd.cpp
+++ b/qpid/cpp/src/qpidd.cpp
@@ -61,8 +61,7 @@ struct QpiddOptions : public qpid::Options {
DaemonOptions daemon;
qpid::log::Options log;
- QpiddOptions() : qpid::Options("Options") {
- common.config = "/etc/qpidd.conf";
+ QpiddOptions() : qpid::Options("Options"), common("", "/etc/qpidd.conf") {
add(common);
add(broker);
add(daemon);