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