[PECOFF] /manifestuac option is case insensitive.
authorRui Ueyama <ruiu@google.com>
Tue, 22 Oct 2013 17:56:55 +0000 (17:56 +0000)
committerRui Ueyama <ruiu@google.com>
Tue, 22 Oct 2013 17:56:55 +0000 (17:56 +0000)
llvm-svn: 193173

lld/lib/Driver/WinLinkDriver.cpp

index 74f730c6739ee718bd02c9dad7a599cd2bbe69e8..637e6f40eea504bc165cccf97673bd987582a6c4 100644 (file)
@@ -161,6 +161,13 @@ bool parseManifest(StringRef option, bool &enable, bool &embed, int &id) {
   return true;
 }
 
+// Returns true if \p str starts with \p prefix, ignoring case.
+bool startswith_lower(StringRef str, StringRef prefix) {
+  if (str.size() < prefix.size())
+    return false;
+  return str.substr(0, prefix.size()).equals_lower(prefix);
+}
+
 // Parse /manifestuac:(level=<string>|uiAccess=<string>).
 //
 // The arguments will be embedded to the manifest XML file with no error check,
@@ -172,15 +179,15 @@ bool parseManifestUac(StringRef option, llvm::Optional<std::string> &level,
     option = option.ltrim();
     if (option.empty())
       return true;
-    if (option.startswith("level=")) {
+    if (startswith_lower(option, "level=")) {
       option = option.substr(strlen("level="));
       StringRef value;
       llvm::tie(value, option) = option.split(" ");
       level = value.str();
       continue;
     }
-    if (option.startswith("uiAccess=")) {
-      option = option.substr(strlen("uiAccess="));
+    if (startswith_lower(option, "uiaccess=")) {
+      option = option.substr(strlen("uiaccess="));
       StringRef value;
       llvm::tie(value, option) = option.split(" ");
       uiAccess = value.str();