+
+ if(builder.get_dry_run())
+ pid=-1;
+ else
+ {
+ pid=fork();
+ if(pid==0)
+ {
+ char *argv_[argv.size()+1];
+
+ unsigned j=0;
+ for(StringList::iterator i=argv.begin(); i!=argv.end(); ++i)
+ argv_[j++]=strdup(i->c_str());
+ argv_[j]=0;
+
+ if(!work_dir.empty())
+ FS::chdir(work_dir);
+ execvp(argv_[0], argv_);
+ cout<<"Couldn't execute "<<argv.front()<<'\n';
+ exit(1);
+ }
+ else if(pid<0)
+ pid=0;
+ }
+}
+
+int ExternalAction::check()
+{
+ if(builder.get_dry_run())