X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternaltask.cpp;h=6ff6a3e90892bcecb8fcb47d448b9982cc05d2db;hb=afd944a9a8b9d727326cdc4d3b7122384a8d9b5d;hp=c205cbcf1a5c704f92aeed61cda08537c580224d;hpb=f58a6a7389e0c2609c56a184f98731e01ab450a4;p=builder.git diff --git a/source/externaltask.cpp b/source/externaltask.cpp index c205cbc..6ff6a3e 100644 --- a/source/externaltask.cpp +++ b/source/externaltask.cpp @@ -8,14 +8,38 @@ using namespace std; using namespace Msp; -ExternalTask::ExternalTask(const vector &argv, const FS::Path &work_dir): +ExternalTask::ExternalTask(const vector &a, const FS::Path &wd): + argv(a), + work_dir(wd), pid(-1), exit_code(-1) +{ } + +string ExternalTask::get_command() const +{ + string cmd; + for(vector::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; }