]> git.donarmstrong.com Git - mothur.git/blobdiff - setdircommand.cpp
dunno
[mothur.git] / setdircommand.cpp
index 0b3379cf230967f48e41c234e26c8c98b593c540..081a306d712a8ee10bb67cf1d72bbf0663d0ff07 100644 (file)
@@ -101,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
@@ -114,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 += "\\"; }       
@@ -122,7 +130,7 @@ 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) {
@@ -146,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 += "\\"; }        
@@ -154,7 +162,7 @@ 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) {
@@ -188,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;