]> git.tdb.fi Git - builder.git/blobdiff - source/externalaction.cpp
Big rewrite for a more tool-centric approach
[builder.git] / source / externalaction.cpp
diff --git a/source/externalaction.cpp b/source/externalaction.cpp
deleted file mode 100644 (file)
index cad9ba8..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <cstring>
-#include <cstdlib>
-#include <sys/wait.h>
-#include <msp/fs/dir.h>
-#include <msp/io/print.h>
-#include <msp/strings/utils.h>
-#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;
-}