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;
}