Make the ping-protocol option case insensitive
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Wed, 7 Sep 2011 02:39:08 +0000 (23:39 -0300)
committerGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Wed, 7 Sep 2011 02:41:52 +0000 (23:41 -0300)
src/host/pingprotocol.cpp
src/host/pingprotocol.h

index 79ff9c5..1c59131 100644 (file)
@@ -20,6 +20,7 @@ on this file might be covered by the GNU General Public License.
 
 #include "host/pingprotocol.h"
 
+#include <algorithm>
 #include <map>
 
 #include <boost/assert.hpp>
@@ -28,13 +29,19 @@ using namespace std;
 
 map<string, PingProtocol> protocol_string_map;
 
-PingProtocol get_ping_protocol_from_string( string protocol_string )
+PingProtocol get_ping_protocol_from_string( const string protocol_string )
 {
     BOOST_ASSERT( !protocol_string.empty() );
 
+    // convert to uppercase to allow the protocol to be case insensitive
+    string protocol_uppercase_string( protocol_string );
+    transform( protocol_string.begin(), protocol_string.end(),
+               protocol_uppercase_string.begin(),
+               ::toupper );
+
     // TODO move to an init method
     protocol_string_map[ "ICMP" ] = PingProtocol_ICMP;
     protocol_string_map[ "TCP" ] = PingProtocol_TCP;
 
-    return protocol_string_map[ protocol_string ];
+    return protocol_string_map[ protocol_uppercase_string ];;
 }
index ebbcccc..0167aea 100644 (file)
@@ -31,6 +31,6 @@ enum PingProtocol
     PingProtocol_Last = PingProtocol_TCP
 };
 
-PingProtocol get_ping_protocol_from_string( std::string protocol_string );
+PingProtocol get_ping_protocol_from_string( const std::string protocol_string );
 
 #endif /* PINGPROTOCOL_H */