]> git.tdb.fi Git - builder.git/blobdiff - source/externalaction.cpp
Move class PackageRef to its own files
[builder.git] / source / externalaction.cpp
index 81d28b37a6a7398fd0b186256c328a912ae87168..7f9e974ebd64ba398424545aeaddb844a5a7ab04 100644 (file)
@@ -8,6 +8,12 @@ using namespace Msp;
 
 int ExternalAction::check()
 {
+       if(builder.get_dry_run())
+       {
+               signal_done.emit();
+               return 0;
+       }
+       
        if(!pid)
                return 255;
 
@@ -16,9 +22,10 @@ int ExternalAction::check()
        {
                signal_done.emit();
                if(WIFEXITED(status))
-                       return WEXITSTATUS(status);
+                       exit_code=WEXITSTATUS(status);
                else
-                       return 254;
+                       exit_code=254;
+               return exit_code;
        }
        else
                return -1;
@@ -37,16 +44,21 @@ void ExternalAction::launch()
                cout<<'\n';
        }
        
-       pid=fork();
-       if(pid==0)
+       if(builder.get_dry_run())
+               pid=-1;
+       else
        {
-               char *argv_[argv.size()+1];
-               for(CountingIterator<string, list<string>::iterator> i=argv.begin(); i!=argv.end(); ++i)
-                       argv_[i.count()]=strdup(i->c_str());
-               argv_[argv.size()]=0;
-               execvp(argv_[0], argv_);
-               exit(1);
+               pid=fork();
+               if(pid==0)
+               {
+                       char *argv_[argv.size()+1];
+                       for(CountingIterator<string, list<string>::iterator> i=argv.begin(); i!=argv.end(); ++i)
+                               argv_[i.count()]=strdup(i->c_str());
+                       argv_[argv.size()]=0;
+                       execvp(argv_[0], argv_);
+                       exit(1);
+               }
+               else if(pid<0)
+                       pid=0;
        }
-       else if(pid<0)
-               pid=0;
 }