X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternalaction.cpp;h=b86d8028da25636e5677f00e5eb1763df6a17a94;hb=1a46151c99a406123c4ddfc797a7841baf3e4cc2;hp=d4a48d730513d401738f8e6ba65d4e15739dc439;hpb=59ac0a44d6edf179c01604c6ced744873213f855;p=builder.git diff --git a/source/externalaction.cpp b/source/externalaction.cpp index d4a48d7..b86d802 100644 --- a/source/externalaction.cpp +++ b/source/externalaction.cpp @@ -1,4 +1,5 @@ #include +#include #include #include "builder.h" #include "externalaction.h" @@ -8,6 +9,12 @@ using namespace Msp; int ExternalAction::check() { + if(builder.get_dry_run()) + { + signal_done.emit(); + return 0; + } + if(!pid) return 255; @@ -16,9 +23,10 @@ int ExternalAction::check() { 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; @@ -26,9 +34,9 @@ int ExternalAction::check() void ExternalAction::launch() { - if(builder.get_verbose()>=1) + if(builder.get_verbose()>=2) { - for(list::const_iterator i=argv.begin(); i!=argv.end(); ++i) + for(StringList::const_iterator i=argv.begin(); i!=argv.end(); ++i) { if(i!=argv.begin()) cout<<' '; @@ -37,16 +45,21 @@ void ExternalAction::launch() cout<<'\n'; } - pid=fork(); - if(pid==0) + if(builder.get_dry_run()) + pid=-1; + else { - char *argv_[argv.size()+1]; - for(CountingIterator::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 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; }