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/07/20 21:20:02 UTC

svn commit: r558099 - in /incubator/qpid/branches/M2/cpp: NOTICE lib/common/CommonOptions.cpp lib/common/CommonOptions.h src/qpidd.cpp

Author: aconway
Date: Fri Jul 20 12:20:01 2007
New Revision: 558099

URL: http://svn.apache.org/viewvc?view=rev&rev=558099
Log:
Ignore QPID_ env variables that don't correspond to known options.

Modified:
    incubator/qpid/branches/M2/cpp/NOTICE
    incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.cpp
    incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.h
    incubator/qpid/branches/M2/cpp/src/qpidd.cpp

Modified: incubator/qpid/branches/M2/cpp/NOTICE
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/cpp/NOTICE?view=diff&rev=558099&r1=558098&r2=558099
==============================================================================
--- incubator/qpid/branches/M2/cpp/NOTICE (original)
+++ incubator/qpid/branches/M2/cpp/NOTICE Fri Jul 20 12:20:01 2007
@@ -19,6 +19,7 @@
  * apr version 1.2.7 under the Apache Software License, Version 2.0, and 
  	can be downloded from http://apr.apache.org
 	
- * boost vesrion 1.33.1 or later under the Boost Software License, and 
+ * boost version 1.33.1 or later under the Boost Software License, and 
  	can be downloaded from http://www.boost.org
 	- Included in most OS platfroms by defualt.
+

Modified: incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.cpp?view=diff&rev=558099&r1=558098&r2=558099
==============================================================================
--- incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.cpp (original)
+++ incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.cpp Fri Jul 20 12:20:01 2007
@@ -26,20 +26,20 @@
 
 namespace program_options {
 
-char env2optchar(char env) {
-    return (env=='_') ? '-' : tolower(env);
-}
-    
-const std::string envPrefix("QPID_");
+static const std::string prefix("QPID_");
+
+static char env2optchar(char env) { return (env=='_') ? '-' : tolower(env); }
 
-std::string env2option(const std::string& env) {
-    if (env.find(envPrefix) ==0) {
-        std::string opt = env.substr(envPrefix.size());
-        std::transform(opt.begin(), opt.end(), opt.begin(), env2optchar);
-        return opt;
+std::string EnvMapper::operator()(const std::string& env) {
+    if (env.substr(0, prefix.size()) == prefix) {
+        std::string opt = env.substr(prefix.size());
+        transform(opt.begin(), opt.end(), opt.begin(), env2optchar);
+        // Ignore env vars that don't match to known options.
+        if (opts.find_nothrow(opt, false))
+            return opt;
     }
     return std::string();
-} 
+}
 
 } // namespace program_options
 

Modified: incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.h?view=diff&rev=558099&r1=558098&r2=558099
==============================================================================
--- incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.h (original)
+++ incubator/qpid/branches/M2/cpp/lib/common/CommonOptions.h Fri Jul 20 12:20:01 2007
@@ -64,8 +64,13 @@
 
 /** Environment-to-option name mapping.
  * Maps env variable "QPID_SOME_VAR" to option "some-var"
+ * Ignores env vars that dont match known options._
  */
-std::string env2option(const std::string& env);
+struct EnvMapper {
+    EnvMapper(const options_description& o) : opts(o) {}
+    std::string operator()(const std::string& env);
+    const options_description& opts;
+};
 
 /**
  * Like boost::program_options::bool_switch but takes reference, not pointer.

Modified: incubator/qpid/branches/M2/cpp/src/qpidd.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/cpp/src/qpidd.cpp?view=diff&rev=558099&r1=558098&r2=558099
==============================================================================
--- incubator/qpid/branches/M2/cpp/src/qpidd.cpp (original)
+++ incubator/qpid/branches/M2/cpp/src/qpidd.cpp Fri Jul 20 12:20:01 2007
@@ -72,7 +72,7 @@
         // Earlier sources get precedence.
         po::store(po::parse_command_line(argc, argv, desc), vm);
         try { 
-            po::store(po::parse_environment(desc, po::env2option), vm);
+            po::store(po::parse_environment(desc, po::EnvMapper(desc)), vm);
         }
         catch (const logic_error& e) {
             throw logic_error(string("parsing environment variables: ")