]> git.tdb.fi Git - builder.git/blobdiff - source/externaltask.cpp
Use a unique exit_code value to indicate fork failure
[builder.git] / source / externaltask.cpp
index c205cbcf1a5c704f92aeed61cda08537c580224d..6ff6a3e90892bcecb8fcb47d448b9982cc05d2db 100644 (file)
@@ -8,14 +8,38 @@
 using namespace std;
 using namespace Msp;
 
-ExternalTask::ExternalTask(const vector<string> &argv, const FS::Path &work_dir):
+ExternalTask::ExternalTask(const vector<string> &a, const FS::Path &wd):
+       argv(a),
+       work_dir(wd),
        pid(-1),
        exit_code(-1)
+{ }
+
+string ExternalTask::get_command() const
+{
+       string cmd;
+       for(vector<string>::const_iterator i=argv.begin(); i!=argv.end(); ++i)
+       {
+               if(i!=argv.begin())
+                       cmd += ' ';
+
+               for(string::const_iterator j=i->begin(); j!=i->end(); ++j)
+               {
+                       if(*j=='"' || *j=='\'' || *j==' ' || *j=='\\' || *j=='&')
+                               cmd += '\\';
+                       cmd += *j;
+               }
+       }
+
+       return cmd;
+}
+
+void ExternalTask::start()
 {
        if((pid = fork()))
        {
                if(pid==-1)
-                       exit_code = 1;
+                       exit_code = 1026;
                else
                        exit_code = 0;
        }