From 7cb72fadc8f78945fce75d23f9a4cd6ce0e92e72 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <ben.boeckel@kitware.com>
Date: Wed, 8 Apr 2020 13:10:45 -0400
Subject: cmConfigureFileCommand: simplify no-op argument handling

---
 Source/cmConfigureFileCommand.cxx | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx
index 8767386..bac9337 100644
--- a/Source/cmConfigureFileCommand.cxx
+++ b/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];
-- 
cgit v0.12