]> git.donarmstrong.com Git - mothur.git/blobdiff - catchallcommand.cpp
fixed mpi version compile issue with chimera.slayer
[mothur.git] / catchallcommand.cpp
index 69b9f04becdbb492fc69209837be5a0581123b99..b0ab7c8314ac7e1a5b267b02bf2ccad559b62355 100644 (file)
@@ -25,6 +25,7 @@ vector<string> CatchAllCommand::getValidParameters(){
 //**********************************************************************************************************************
 CatchAllCommand::CatchAllCommand(){    
        try {
+               abort = true; calledHelp = true;
                //initialize outputTypes
                vector<string> tempOutNames;
                outputTypes["csv"] = tempOutNames;
@@ -62,11 +63,11 @@ vector<string> CatchAllCommand::getRequiredFiles(){
 CatchAllCommand::CatchAllCommand(string option)  {     
        try {
                globaldata = GlobalData::getInstance();
-               abort = false;
+               abort = false; calledHelp = false;   
                allLines = 1;
                
                //allow user to run help
-               if(option == "help") { help(); abort = true; }
+               if(option == "help") { help(); abort = true; calledHelp = true; }
                
                else {
                        //valid paramters for this command
@@ -173,24 +174,26 @@ void CatchAllCommand::help(){
 int CatchAllCommand::execute() {       
        try {
                
-               if (abort == true) { return 0; }
-               
-               //prepare full output directory
-               outputDir = m->getFullPathName(outputDir);
+               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
                
                //get location of catchall
                GlobalData* globaldata = GlobalData::getInstance();
                path = globaldata->argv;
-               path = path.substr(0, (path.find_last_of('m')));
+               path = path.substr(0, (path.find_last_of("othur")-5));
                path = m->getFullPathName(path);
-
+               
                string catchAllCommandExe = ""; 
                #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
                        catchAllCommandExe += "mono " + path + "CatchAllcmdL.exe ";
+                       if (outputDir == "") { outputDir = "./"; } //force full pathname to be created for catchall, this is necessary because if catchall is in the path it will look for input file whereever the exe is and not the cwd.
                #else
                        catchAllCommandExe += "\"" + path + "CatchAllcmdW.exe\"" + " ";
+                       if (outputDir == "") { outputDir = ".\\"; } //force full pathname to be created for catchall, this is necessary because if catchall is in the path it will look for input file whereever the exe is and not the cwd.
                #endif
                
+               //prepare full output directory
+               outputDir = m->getFullPathName(outputDir);
+               
                vector<string> inputFileNames;
                if (sharedfile != "") { inputFileNames = parseSharedFile(sharedfile);  globaldata->setFormat("sabund");  }
                else {  inputFileNames.push_back(sabundfile);  }                
@@ -236,7 +239,8 @@ int CatchAllCommand::execute() {
                                                        //wrap entire string in ""
                                                        catchAllCommand = "\"" + catchAllCommand + "\"";
                                                #endif
-                                                                               //run catchall
+                                       
+                                               //run catchall
                                                system(catchAllCommand.c_str());
                                        
                                                remove(filename.c_str());
@@ -500,8 +504,10 @@ int CatchAllCommand::createSummaryFile(string file1, string label, ofstream& out
        try {
                
                ifstream in;
-               m->openInputFile(file1, in);
+               int able = m->openInputFile(file1, in, "noerror");
                
+               if (able == 1) {  m->mothurOut("[ERROR]: the catchall program did not run properly. Please check to make sure it is located in the same folder as your mothur executable.");m->mothurOutEndLine();  m->control_pressed = true; return 0; }
+                       
                if (!in.eof()) {
                        
                        string header = m->getline(in); m->gobble(in);