]> git.donarmstrong.com Git - mothur.git/blobdiff - systemcommand.cpp
changes while testing
[mothur.git] / systemcommand.cpp
index e5aeb3e8b73dfb59008f6ddccaa3b0703b25e696..b5b4945b92b6d664e6d81aa2dc6911a2d30414c3 100644 (file)
@@ -12,7 +12,7 @@
 //**********************************************************************************************************************
 vector<string> SystemCommand::setParameters(){ 
        try {
-               CommandParameter pcommand("command", "String", "", "", "", "", "",false,false); parameters.push_back(pcommand);
+               CommandParameter pcommand("command", "String", "", "", "", "", "","",false,false); parameters.push_back(pcommand);
                                
                vector<string> myArray;
                for (int i = 0; i < parameters.size(); i++) {   myArray.push_back(parameters[i].name);          }
@@ -91,19 +91,30 @@ int SystemCommand::execute(){
                
                if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
                
-               //system(command.c_str());
-               FILE *lsofFile_p = popen(command.c_str(), "r");
+               //if command contains a redirect don't add the redirect
+               bool usedRedirect = false;
+               if ((command.find('>')) == string::npos) {
+                       command += " > ./commandScreen.output 2>&1";
+                       usedRedirect = true;
+               }
                
-               if (!lsofFile_p) { return 0; }
+               system(command.c_str());
                
-               char buffer[1024];
-               while ( fgets(buffer, 1024, lsofFile_p) != NULL ) {
-                       string temp = buffer;
-                       m->mothurOut(temp); 
+               if (usedRedirect) {
+                       ifstream in;
+                       string filename = "./commandScreen.output";
+                       m->openInputFile(filename, in, "no error");
+                       
+                       string output = "";
+                       while(char c = in.get()){
+                               if(in.eof())            {       break;                  }
+                               else                            {       output += c;    }
+                       }
+                       in.close();
+                       
+                       m->mothurOut(output); m->mothurOutEndLine();
+                       m->mothurRemove(filename);
                }
-               m->mothurOutEndLine();
-               
-               pclose(lsofFile_p);
                
                return 0;               
        }