mirror of
https://github.com/reactos/CMake.git
synced 2025-02-26 06:55:34 +00:00
Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys: KWSys 2017-09-14 (d85b17e7)
This commit is contained in:
commit
f02eced51d
@ -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)
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user