You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2007/05/01 22:17:26 UTC
svn commit: r534226 - in /incubator/qpid/trunk/qpid/cpp/src:
qpid/CommonOptions.cpp qpid/CommonOptions.h qpidd.cpp
Author: aconway
Date: Tue May 1 13:17:25 2007
New Revision: 534226
URL: http://svn.apache.org/viewvc?view=rev&rev=534226
Log:
Moved parseOptions from qipdd to CommonOptions where it can be re-used.
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.h
incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.cpp?view=diff&rev=534226&r1=534225&r2=534226
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.cpp Tue May 1 13:17:25 2007
@@ -17,10 +17,10 @@
*/
#include "CommonOptions.h"
+#include <fstream>
#include <algorithm>
namespace qpid {
-
namespace program_options {
char env2optchar(char env) {
@@ -50,6 +50,30 @@
desc.add_options()
("trace,t", optValue(trace), "Enable debug tracing" )
("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
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.h?view=diff&rev=534226&r1=534225&r2=534226
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/CommonOptions.h Tue May 1 13:17:25 2007
@@ -89,7 +89,18 @@
/** Add members to program_options to be updated */
void addTo(po::options_description&);
+
};
+
+/** Convenience function to parse an options_description.
+ * Parses argc/argv, environment variables and config file.
+ * Note the filename argument can reference a variable that
+ * is updated by argc/argv or environment variable parsing.
+ */
+void parseOptions(po::options_description&,
+ int argc, char** argv,
+ const std::string& filename=std::string());
+
} // namespace qpid
Modified: incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp?view=diff&rev=534226&r1=534225&r2=534226
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp Tue May 1 13:17:25 2007
@@ -77,26 +77,8 @@
}
void parse(int argc, char* argv[]) {
- po::variables_map vm;
- // Earlier sources get precedence.
- po::store(po::parse_command_line(argc, argv, desc), vm);
- try {
- po::store(po::parse_environment(desc, po::env2option), vm);
- }
- catch (const logic_error& e) {
- throw logic_error(string("parsing environment variables: ")
- + e.what());
- }
- po::notify(vm); // So we can use the value of config.
- try {
- ifstream conf(config.c_str());
- po::store(po::parse_config_file(conf, desc), vm);
- }
- catch (const logic_error& e) {
- throw logic_error(string("parsing config file: ")+ e.what());
- }
- po::notify(vm);
- };
+ parseOptions(desc, argc, argv, config);
+ }
void usage(ostream& out) const {
out << "Usage: qpidd [OPTIONS]" << endl << endl