From c8cfe4e0b0d0b5f66d9db27adc43ced6cfa19a92 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Mon, 11 Sep 2017 11:36:06 -0400
Subject: [PATCH] SystemTools: Drop SplitProgramFromArgs function

This was used only by CMake's get_filename_components() command, which
has now been re-implemented independently.  The operation is not
well-defined (string parsing should not depend on filesystem content),
so remove it.
---
 SystemTools.cxx    | 60 ----------------------------------------------
 SystemTools.hxx.in |  6 -----
 2 files changed, 66 deletions(-)

diff --git a/SystemTools.cxx b/SystemTools.cxx
index 560c19c..0a22d63 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -4102,66 +4102,6 @@ bool SystemTools::GetShortPath(const std::string& path, std::string& shortPath)
 #endif
 }
 
-void SystemTools::SplitProgramFromArgs(const std::string& path,
-                                       std::string& program, std::string& args)
-{
-  // see if this is a full path to a program
-  // if so then set program to path and args to nothing
-  if (SystemTools::FileExists(path)) {
-    program = path;
-    args = "";
-    return;
-  }
-  // Try to find the program in the path, note the program
-  // may have spaces in its name so we have to look for it
-  std::vector<std::string> e;
-  std::string findProg = SystemTools::FindProgram(path, e);
-  if (!findProg.empty()) {
-    program = findProg;
-    args = "";
-    return;
-  }
-
-  // Now try and peel off space separated chunks from the end of the string
-  // so the largest path possible is found allowing for spaces in the path
-  std::string dir = path;
-  std::string::size_type spacePos = dir.rfind(' ');
-  while (spacePos != std::string::npos) {
-    std::string tryProg = dir.substr(0, spacePos);
-    // See if the file exists
-    if (SystemTools::FileExists(tryProg)) {
-      program = tryProg;
-      // remove trailing spaces from program
-      std::string::size_type pos = program.size() - 1;
-      while (program[pos] == ' ') {
-        program.erase(pos);
-        pos--;
-      }
-      args = dir.substr(spacePos, dir.size() - spacePos);
-      return;
-    }
-    // Now try and find the program in the path
-    findProg = SystemTools::FindProgram(tryProg, e);
-    if (!findProg.empty()) {
-      program = findProg;
-      // remove trailing spaces from program
-      std::string::size_type pos = program.size() - 1;
-      while (program[pos] == ' ') {
-        program.erase(pos);
-        pos--;
-      }
-      args = dir.substr(spacePos, dir.size() - spacePos);
-      return;
-    }
-    // move past the space for the next search
-    spacePos--;
-    spacePos = dir.rfind(' ', spacePos);
-  }
-
-  program = "";
-  args = "";
-}
-
 std::string SystemTools::GetCurrentDateTime(const char* format)
 {
   char buf[1024];
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 1672e92..41a60d3 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -497,12 +497,6 @@ public:
    */
   static std::string GetFilenameName(const std::string&);
 
-  /**
-   * Split a program from its arguments and handle spaces in the paths
-   */
-  static void SplitProgramFromArgs(const std::string& path,
-                                   std::string& program, std::string& args);
-
   /**
    * Return longest file extension of a full filename (dot included)
    */
-- 
GitLab