//**********************************************************************************************************************
CatchAllCommand::CatchAllCommand(){
try {
+ abort = true; calledHelp = true;
//initialize outputTypes
vector<string> tempOutNames;
outputTypes["csv"] = tempOutNames;
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
if (sharedfile == "not open") { sharedfile = ""; abort = true; }
else if (sharedfile == "not found") { sharedfile = ""; }
+ //check for shared file loaded during read.otu
+ if (sharedfile == "") {
+ if (globaldata->getSharedFile() != "") { sharedfile = globaldata->getSharedFile(); }
+ }
+
string label = validParameter.validFile(parameters, "label", false);
if (label == "not found") { label = ""; }
else {
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); }
//wrap entire string in ""
catchAllCommand = "\"" + catchAllCommand + "\"";
#endif
- //run catchall
+
+ //run catchall
system(catchAllCommand.c_str());
remove(filename.c_str());
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);