]> git.donarmstrong.com Git - mothur.git/blobdiff - setdircommand.cpp
dunno
[mothur.git] / setdircommand.cpp
index 3135b8133c851e5fe58a13ee32e29da05da90216..081a306d712a8ee10bb67cf1d72bbf0663d0ff07 100644 (file)
@@ -59,6 +59,7 @@ SetDirectoryCommand::SetDirectoryCommand(string option)  {
                
                //allow user to run help
                if(option == "help") { help(); abort = true; calledHelp = true; }
+               else if(option == "citation") { citation(); abort = true; calledHelp = true;}
                
                else {
                        vector<string> myArray = setParameters();
@@ -100,6 +101,14 @@ int SetDirectoryCommand::execute(){
                
                commandFactory = CommandFactory::getInstance();
                
+               string tag = "";
+#ifdef USE_MPI
+               int pid; 
+               MPI_Comm_rank(MPI_COMM_WORLD, &pid); //find out who we are
+               
+               tag = toString(pid);
+#endif
+               
                m->mothurOut("Mothur's directories:"); m->mothurOutEndLine();
                
                //redirect output
@@ -113,7 +122,7 @@ int SetDirectoryCommand::execute(){
                }else {
                        //add / to name if needed
                        string lastChar = output.substr(output.length()-1);
-                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                                if (lastChar != "/") { output += "/"; }
                        #else
                                if (lastChar != "\\") { output += "\\"; }       
@@ -121,14 +130,14 @@ int SetDirectoryCommand::execute(){
                        
                        //test to make sure directory exists
                        output = m->getFullPathName(output);
-                       string outTemp = output + "temp";
+                       string outTemp = output + tag + "temp";
                        ofstream out;
                        out.open(outTemp.c_str(), ios::trunc);
                        if(!out) {
                                m->mothurOut(output + " directory does not exist or is not writable."); m->mothurOutEndLine(); 
                        }else{
                                out.close();
-                               remove(outTemp.c_str());
+                               m->mothurRemove(outTemp);
                                m->mothurOut("outputDir=" + output); m->mothurOutEndLine();  
                                commandFactory->setOutputDirectory(output);
                        }
@@ -145,7 +154,7 @@ int SetDirectoryCommand::execute(){
                }else {
                        //add / to name if needed
                        string lastChar = input.substr(input.length()-1);
-                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                                if (lastChar != "/") { input += "/"; }
                        #else
                                if (lastChar != "\\") { input += "\\"; }        
@@ -153,14 +162,14 @@ int SetDirectoryCommand::execute(){
                        
                        //test to make sure directory exists
                        input = m->getFullPathName(input);
-                       string inTemp = input + "temp";
+                       string inTemp = input + tag + "temp";
                        ofstream in;
                        in.open(inTemp.c_str(), ios::trunc);
                        if(!in) {
                                m->mothurOut(input + " directory does not exist or is not writable."); m->mothurOutEndLine(); 
                        }else{
                                in.close();
-                               remove(inTemp.c_str());
+                               m->mothurRemove(inTemp);
                                m->mothurOut("inputDir=" + input); m->mothurOutEndLine();  
                                commandFactory->setInputDirectory(input); 
                        }
@@ -187,14 +196,25 @@ int SetDirectoryCommand::execute(){
                }else {
                        //add / to name if needed
                        string lastChar = tempdefault.substr(tempdefault.length()-1);
-                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+                       #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                                if (lastChar != "/") { tempdefault += "/"; }
                        #else
                                if (lastChar != "\\") { tempdefault += "\\"; }  
                        #endif
                        
-                       m->mothurOut("tempDefault=" + tempdefault); m->mothurOutEndLine();  
-                       m->setDefaultPath(tempdefault);
+                       //test to make sure directory exists
+                       tempdefault = m->getFullPathName(tempdefault);
+                       string inTemp = tempdefault + tag + "temp";
+                       ofstream in;
+                       in.open(inTemp.c_str(), ios::trunc);
+                       if(!in) {
+                               m->mothurOut(tempdefault + " directory does not exist or is not writable."); m->mothurOutEndLine(); 
+                       }else{
+                               in.close();
+                               m->mothurRemove(inTemp);
+                               m->mothurOut("tempDefault=" + tempdefault); m->mothurOutEndLine();  
+                               m->setDefaultPath(tempdefault);
+                       }
                }
 
                return 0;