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