Switch to side-by-side view

--- a/libupnpp/upnpplib.cxx
+++ b/libupnpp/upnpplib.cxx
@@ -418,3 +418,34 @@
     }
     return true;
 }
+
+#include <ctype.h>
+
+//  s1 is already uppercase
+int stringuppercmp(const string & s1, const string& s2) 
+{
+    string::const_iterator it1 = s1.begin();
+    string::const_iterator it2 = s2.begin();
+    int size1 = s1.length(), size2 = s2.length();
+    char c2;
+
+    if (size1 > size2) {
+	while (it1 != s1.end()) { 
+	    c2 = ::toupper(*it2);
+	    if (*it1 != c2) {
+		return *it1 > c2 ? 1 : -1;
+	    }
+	    ++it1; ++it2;
+	}
+	return size1 == size2 ? 0 : 1;
+    } else {
+	while (it2 != s2.end()) { 
+	    c2 = ::toupper(*it2);
+	    if (*it1 != c2) {
+		return *it1 > c2 ? 1 : -1;
+	    }
+	    ++it1; ++it2;
+	}
+	return size1 == size2 ? 0 : -1;
+    }
+}