Browse Source

cmConfigureFileCommand: simplify no-op argument handling

Ben Boeckel 5 years ago
parent
commit
7cb72fadc8
1 changed files with 20 additions and 6 deletions
  1. 20 6
      Source/cmConfigureFileCommand.cxx

+ 20 - 6
Source/cmConfigureFileCommand.cxx

@@ -2,6 +2,12 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmConfigureFileCommand.h"
 
+#include <set>
+
+#include <cm/string_view>
+
+#include "cm_static_string_view.hxx"
+
 #include "cmExecutionStatus.h"
 #include "cmMakefile.h"
 #include "cmMessageType.h"
@@ -56,6 +62,18 @@ bool cmConfigureFileCommand(std::vector<std::string> const& args,
   bool copyOnly = false;
   bool escapeQuotes = false;
 
+  static std::set<cm::string_view> noopOptions = {
+    /* Legacy.  */
+    "IMMEDIATE"_s,
+    /* Handled by NewLineStyle member.  */
+    "NEWLINE_STYLE"_s,
+    "LF"_s,
+    "UNIX"_s,
+    "CRLF"_s,
+    "WIN32"_s,
+    "DOS"_s,
+  };
+
   std::string unknown_args;
   bool atOnly = false;
   for (unsigned int i = 2; i < args.size(); ++i) {
@@ -70,12 +88,8 @@ bool cmConfigureFileCommand(std::vector<std::string> const& args,
       escapeQuotes = true;
     } else if (args[i] == "@ONLY") {
       atOnly = true;
-    } else if (args[i] == "IMMEDIATE") {
-      /* Ignore legacy option.  */
-    } else if (args[i] == "NEWLINE_STYLE" || args[i] == "LF" ||
-               args[i] == "UNIX" || args[i] == "CRLF" || args[i] == "WIN32" ||
-               args[i] == "DOS") {
-      /* Options handled by NewLineStyle member above.  */
+    } else if (noopOptions.find(args[i]) != noopOptions.end()) {
+      /* Ignore no-op options.  */
     } else {
       unknown_args += " ";
       unknown_args += args[i];