X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mothur.cpp;h=9ed0dfc5d1645c5c2b65cabdb04063e300634d04;hb=37eac2026d91179acda0494c4dcca22f176551b9;hp=ba058ba3fde6d2dd2d25458f88be358f1c7c0408;hpb=74844a60d80c6dd06e3fb02ee9b928424f9019b0;p=mothur.git diff --git a/mothur.cpp b/mothur.cpp index ba058ba..9ed0dfc 100644 --- a/mothur.cpp +++ b/mothur.cpp @@ -18,18 +18,36 @@ GlobalData* GlobalData::_uniqueInstance = 0; CommandFactory* CommandFactory::_uniqueInstance = 0; MothurOut* MothurOut::_uniqueInstance = 0; +/***********************************************************************/ +volatile int ctrlc_pressed = 0; +void ctrlc_handler ( int sig ) { + MothurOut* m = MothurOut::getInstance(); + ctrlc_pressed = 1; + m->control_pressed = ctrlc_pressed; + + if (m->executing) { //if mid command quit execution, else quit mothur + m->mothurOutEndLine(); m->mothurOut("quitting command..."); m->mothurOutEndLine(); + }else{ + m->mothurOut("quitting mothur"); m->mothurOutEndLine(); + exit(1); + } +} +/***********************************************************************/ int main(int argc, char *argv[]){ MothurOut* m = MothurOut::getInstance(); - try { - - //string log = "mothur.logFile"; - //remove(log.c_str()); - + try { + signal(SIGINT, ctrlc_handler ); + time_t ltime = time(NULL); /* calendar time */ string logFileName = "mothur." + toString(ltime) + ".logfile"; + #ifdef USE_MPI + MPI_Init(&argc, &argv); + #endif + m->setFileName(logFileName); + //version #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) system("clear"); @@ -38,7 +56,7 @@ int main(int argc, char *argv[]){ m->mothurOutEndLine(); m->mothurOutEndLine(); #else m->mothurOutJustToLog("Linux version"); - >m->mothurOutEndLine(); m->mothurOutEndLine(); + m->mothurOutEndLine(); m->mothurOutEndLine(); #endif #else @@ -52,10 +70,42 @@ int main(int argc, char *argv[]){ m->mothurOutEndLine(); m->mothurOutEndLine(); #endif + #ifdef MOTHUR_FILES + string temp = MOTHUR_FILES; + + //add / to name if needed + string lastChar = temp.substr(temp.length()-1); + #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) + if (lastChar != "/") { temp += "/"; } + #else + if (lastChar != "\\") { temp += "\\"; } + #endif + + temp = m->getFullPathName(temp); + m->setDefaultPath(temp); + + m->mothurOutJustToLog("Using default file location " + temp); + m->mothurOutEndLine(); m->mothurOutEndLine(); + #endif + + #ifdef BIT_VERSION + m->mothurOutJustToLog("Running 64Bit Version"); + m->mothurOutEndLine(); m->mothurOutEndLine(); + #else + m->mothurOutJustToLog("Running 32Bit Version"); + m->mothurOutEndLine(); m->mothurOutEndLine(); + #endif + + //get releaseDate from Make + string releaseDate = RELEASE_DATE; + string mothurVersion = VERSION; + m->setReleaseDate(releaseDate); + m->setVersion(mothurVersion); + //header - m->mothurOut("mothur v.1.8"); + m->mothurOut("mothur v." + mothurVersion); m->mothurOutEndLine(); - m->mothurOut("Last updated: 2/02/2010"); + m->mothurOut("Last updated: " + releaseDate); m->mothurOutEndLine(); m->mothurOutEndLine(); m->mothurOut("by"); @@ -85,15 +135,21 @@ int main(int argc, char *argv[]){ m->mothurOutEndLine(); m->mothurOut("Type 'quit()' to exit program"); m->mothurOutEndLine(); - - + + #ifdef USE_MPI + m->mothurOutJustToLog("Using MPI\tversion "); + int version, subversion; + MPI_Get_version(&version, &subversion); + m->mothurOutJustToLog(toString(version) + "." + toString(subversion) + "\n"); + #endif + //srand(54321); srand( (unsigned)time( NULL ) ); Engine* mothur; bool bail = 0; string input; - + if(argc>1){ input = argv[1]; @@ -116,16 +172,45 @@ int main(int argc, char *argv[]){ mothur = new InteractEngine(argv[0]); } - while(bail == 0) { bail = mothur->getInput(); } + while(bail == 0) { bail = mothur->getInput(); } + + //closes logfile so we can rename + m->closeLog(); string outputDir = mothur->getOutputDir(); - string newlogFileName = outputDir + logFileName; - - //need this because m->mothurOut makes the logfile, but doesn't know where to put it - rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp + string tempLog = mothur->getLogFileName(); + bool append = mothur->getAppend(); - delete mothur; + string newlogFileName; + if (tempLog != "") { + newlogFileName = outputDir + tempLog; + + if (!append) { + //need this because m->mothurOut makes the logfile, but doesn't know where to put it + rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp + }else { + ofstream outNewLog; + m->openOutputFileAppend(newlogFileName, outNewLog); + outNewLog << endl << endl << "*********************************************************************************" << endl << endl; + outNewLog.close(); + + m->appendFiles(logFileName, newlogFileName); + remove(logFileName.c_str()); + } + }else{ + newlogFileName = outputDir + logFileName; + //need this because m->mothurOut makes the logfile, but doesn't know where to put it + rename(logFileName.c_str(), newlogFileName.c_str()); //logfile with timestamp + } + + + delete mothur; + + #ifdef USE_MPI + MPI_Finalize(); + #endif + return 0; } catch(exception& e) {