X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternalaction.cpp;fp=source%2Fexternalaction.cpp;h=0000000000000000000000000000000000000000;hb=338eefb513953ae55e8e3614c009c242ba8ad74e;hp=cad9ba8b23d659e3be069ce1dd7eee57c0c4e5df;hpb=dc00ddd224634c86f0a470f1f6f534be5d3e64a3;p=builder.git diff --git a/source/externalaction.cpp b/source/externalaction.cpp deleted file mode 100644 index cad9ba8..0000000 --- a/source/externalaction.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "builder.h" -#include "externalaction.h" - -using namespace std; -using namespace Msp; - -void ExternalAction::launch() -{ - if(builder.get_verbose()>=2) - IO::print("%s\n", join(argv.begin(), argv.end())); - - 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_); - IO::print("Couldn't execute %s\n", argv.front()); - exit(1); - } - else if(pid<0) - pid = 0; - } -} - -int ExternalAction::check() -{ - if(builder.get_dry_run()) - { - signal_done.emit(); - return 0; - } - - if(!pid) - return exit_code; - - int status; - if(waitpid(pid, &status, WNOHANG)==pid) - { - signal_done.emit(); - if(WIFEXITED(status)) - exit_code = WEXITSTATUS(status); - else - exit_code = 254; - pid = 0; - return exit_code; - } - else - return -1; -}