Commit c8cfe4e0 authored by Brad King's avatar Brad King

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.
parent aee0cf59
......@@ -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];
......
......@@ -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)
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment