int ExternalAction::check()
{
+ if(builder.get_dry_run())
+ {
+ signal_done.emit();
+ return 0;
+ }
+
if(!pid)
return 255;
{
signal_done.emit();
if(WIFEXITED(status))
- return WEXITSTATUS(status);
+ exit_code=WEXITSTATUS(status);
else
- return 254;
+ exit_code=254;
+ return exit_code;
}
else
return -1;
void ExternalAction::launch()
{
- if(builder.get_verbose()>=1)
+ if(builder.get_verbose()>=2)
{
for(list<string>::const_iterator i=argv.begin(); i!=argv.end(); ++i)
{
cout<<'\n';
}
- pid=fork();
- if(pid==0)
+ if(builder.get_dry_run())
+ pid=-1;
+ else
{
- char *argv_[argv.size()+1];
- for(CountingIterator<string, list<string>::iterator> i=argv.begin(); i!=argv.end(); ++i)
- argv_[i.count()]=strdup(i->c_str());
- argv_[argv.size()]=0;
- execvp(argv_[0], argv_);
- exit(1);
+ pid=fork();
+ if(pid==0)
+ {
+ char *argv_[argv.size()+1];
+ for(CountingIterator<string, list<string>::iterator> i=argv.begin(); i!=argv.end(); ++i)
+ argv_[i.count()]=strdup(i->c_str());
+ argv_[argv.size()]=0;
+ execvp(argv_[0], argv_);
+ exit(1);
+ }
+ else if(pid<0)
+ pid=0;
}
- else if(pid<0)
- pid=0;
}