]> git.tdb.fi Git - builder.git/blobdiff - source/misc.cpp
Add missing includes
[builder.git] / source / misc.cpp
index 37616a95f3dfeba4a5994d6f00eb727f04caaccf..a299f0e54b6f1f36c05d338d8c5397eef36495e8 100644 (file)
@@ -1,12 +1,24 @@
+/* $Id$
+
+This file is part of builder
+Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
 #include <iostream>
 #include <sys/wait.h>
-#include <msp/iter.h>
+#include <cstdlib>
+#include <cstring>
 #include "misc.h"
 
 using namespace std;
 using namespace Msp;
 
-string run_command(const list<string> &argv)
+/**
+Runs a command and returns its output as a string.  The exit status of the
+command is lost.
+*/
+string run_command(const StringList &argv)
 {
        int pfd[2];
        pipe(pfd);
@@ -17,12 +29,16 @@ string run_command(const list<string> &argv)
        if(pid==0)
        {
                char *argv_[argv.size()+1];
-               for(CountingIterator<const string, list<string>::const_iterator> i=argv.begin(); i!=argv.end(); ++i)
-                       argv_[i.count()]=strdup(i->c_str());
-               argv_[argv.size()]=0;
+
+               unsigned j=0;
+               for(StringList::const_iterator i=argv.begin(); i!=argv.end(); ++i)
+                       argv_[j++]=strdup(i->c_str());
+               argv_[j]=0;
+
                close(pfd[0]);
                dup2(pfd[1], 1);
                dup2(pfd[1], 2);
+
                execvp(argv_[0], argv_);
                ::exit(1);
        }
@@ -44,7 +60,7 @@ string run_command(const list<string> &argv)
                                result.append(buf, len);
                }
        }
-       
+
        return result;
 }