FIX: go back to not trying to handle spaces in the path for run single command and comment it so that people know to call the right thing
This commit is contained in:
parent
a3798b2cbf
commit
626be7884a
|
@ -427,54 +427,25 @@ bool cmSystemTools::RunSingleCommand(
|
|||
verbose = false;
|
||||
}
|
||||
|
||||
std::string program; // store name of program must be in scope function as it
|
||||
// is put into argv list as a cont char*
|
||||
std::vector<cmStdString> args; // store the program and args program is args[0]
|
||||
std::vector<const char*> argv; // store args in a format so that process cmsysProcess can use it
|
||||
// check to see if the command contains a double quoted string at the start
|
||||
// if so, then just use parse arguments to split things up
|
||||
if(command && *command == '\"')
|
||||
std::vector<cmStdString> args = cmSystemTools::ParseArguments(command);
|
||||
|
||||
if(args.size() < 1)
|
||||
{
|
||||
args = cmSystemTools::ParseArguments(command);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string argsTemp; // Store the arguments to the program
|
||||
cmSystemTools::SplitProgramFromArgs(command, program, argsTemp);
|
||||
// if there is no program to run then return false
|
||||
if(program.size() < 1)
|
||||
{
|
||||
// check for a bad call to SplitProgramFromArgs
|
||||
if(strlen(command) >= 1)
|
||||
{
|
||||
cmSystemTools::Error("Error in SplitProgramFromArgs for: ", command);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
argv.push_back(program.c_str()); // put program in as argv[0]
|
||||
if(argsTemp.size())
|
||||
{
|
||||
args = cmSystemTools::ParseArguments(argsTemp.c_str());
|
||||
}
|
||||
}
|
||||
// copy args into argv
|
||||
|
||||
std::vector<const char*> argv;
|
||||
for(std::vector<cmStdString>::const_iterator a = args.begin();
|
||||
a != args.end(); ++a)
|
||||
{
|
||||
argv.push_back(a->c_str());
|
||||
}
|
||||
// null terminate array
|
||||
argv.push_back(0);
|
||||
// if the only argument is null then there is nothing to run and return false
|
||||
if(!argv[0])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( output )
|
||||
{
|
||||
*output = "";
|
||||
}
|
||||
|
||||
cmsysProcess* cp = cmsysProcess_New();
|
||||
cmsysProcess_SetCommand(cp, &*argv.begin());
|
||||
cmsysProcess_SetWorkingDirectory(cp, dir);
|
||||
|
@ -565,7 +536,6 @@ bool cmSystemTools::RunSingleCommand(
|
|||
}
|
||||
|
||||
cmsysProcess_Delete(cp);
|
||||
|
||||
return result;
|
||||
}
|
||||
bool cmSystemTools::RunCommand(const char* command,
|
||||
|
|
|
@ -188,6 +188,11 @@ public:
|
|||
* exit code will be stored. If the retVal is not specified and
|
||||
* the program exits with a code other than 0, then the this
|
||||
* function will return false.
|
||||
*
|
||||
* If the command has spaces in the path the caller MUST call
|
||||
* cmSystemTools::ConvertToRunCommandPath on the command before passing
|
||||
* it into this function or it will not work. The command must be correctly
|
||||
* escaped for this to with spaces.
|
||||
*/
|
||||
static bool RunSingleCommand(const char* command, std::string* output = 0,
|
||||
int* retVal = 0, const char* dir = 0, bool verbose = true, double timeout = 0.0);
|
||||
|
|
|
@ -117,7 +117,8 @@ int main()
|
|||
exe += "A";
|
||||
exe += cmSystemTools::GetExecutableExtension();
|
||||
int ret;
|
||||
std::string errorMessage;
|
||||
std::string errorMessage;
|
||||
exe = cmSystemTools::ConvertToRunCommandPath(exe.c_str());
|
||||
if(cmSystemTools::RunSingleCommand(exe.c_str(), 0, &ret))
|
||||
{
|
||||
if(ret != 10)
|
||||
|
|
|
@ -117,7 +117,8 @@ int main()
|
|||
exe += "A";
|
||||
exe += cmSystemTools::GetExecutableExtension();
|
||||
int ret;
|
||||
std::string errorMessage;
|
||||
std::string errorMessage;
|
||||
exe = cmSystemTools::ConvertToRunCommandPath(exe.c_str());
|
||||
if(cmSystemTools::RunSingleCommand(exe.c_str(), 0, &ret))
|
||||
{
|
||||
if(ret != 10)
|
||||
|
|
|
@ -117,7 +117,8 @@ int main()
|
|||
exe += "A";
|
||||
exe += cmSystemTools::GetExecutableExtension();
|
||||
int ret;
|
||||
std::string errorMessage;
|
||||
std::string errorMessage;
|
||||
exe = cmSystemTools::ConvertToRunCommandPath(exe.c_str());
|
||||
if(cmSystemTools::RunSingleCommand(exe.c_str(), 0, &ret))
|
||||
{
|
||||
if(ret != 10)
|
||||
|
|
Loading…
Reference in New Issue