]> git.tdb.fi Git - builder.git/blobdiff - source/externaltask.cpp
Give tasks the ability to return the relevant shell command
[builder.git] / source / externaltask.cpp
index 672762b91bb2b35ede371ade85820d3090175205..f24774e83a5cc8009aae92d2d172a41c2893c039 100644 (file)
@@ -8,11 +8,32 @@
 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()))