]> git.treefish.org Git - phys/latlib.git/blobdiff - writeout.cpp
Revert "Let outdir be created from rank 0."
[phys/latlib.git] / writeout.cpp
index 7834d6b743173b70e239dd4849a1c69171dc7847..af67fb5fc913dfa9032aea8df877578e646007b4 100644 (file)
@@ -22,7 +22,7 @@ string writeout::tstamp(const long& timestamp)
 }
 
 void writeout::newsub(string subname) {
 }
 
 void writeout::newsub(string subname) {
-   of[subname] = new ofstream;
+  of[subname] = new ofstream;
 
   if ( fulldir != "" ) {
     if(rank>0) of[subname]->open( (fulldir + "/rank" + cRank + "-" + subname + ".tmp").c_str() );
 
   if ( fulldir != "" ) {
     if(rank>0) of[subname]->open( (fulldir + "/rank" + cRank + "-" + subname + ".tmp").c_str() );
@@ -85,7 +85,7 @@ writeout::~writeout()
 {
   if(fulldir != "") {
     for (map<string,ofstream*>::iterator ofit = of.begin(); ofit != of.end(); ++ofit) {
 {
   if(fulldir != "") {
     for (map<string,ofstream*>::iterator ofit = of.begin(); ofit != of.end(); ++ofit) {
-      if( cRank[0] == '0' ) {    
+      if( cRank[0] == '0' ) {
        int jobsdone=0;
        while(jobsdone<numprocs-1) {
          string nextfile;
        int jobsdone=0;
        while(jobsdone<numprocs-1) {
          string nextfile;
@@ -108,14 +108,15 @@ writeout::~writeout()
        }
        *ofit->second << "#end" << endl << flush;
        ofit->second->close();
        }
        *ofit->second << "#end" << endl << flush;
        ofit->second->close();
-       rename( fulldir.c_str(), fulldir.substr(0, fulldir.length()-4).c_str() );
       }
       else {
        ofit->second->close();
       }
       else {
        ofit->second->close();
-       rename((fulldir + "/rank" + cRank + ".tmp").c_str(),
-              (fulldir + "/rank" + cRank + ".part").c_str());
+       rename((fulldir + "/rank" + cRank + "-" + ofit->first + ".tmp").c_str(),
+              (fulldir + "/rank" + cRank + "-" + ofit->first + ".part").c_str());
       }
     }
       }
     }
+    if( cRank[0] == '0' )
+      rename( fulldir.c_str(), fulldir.substr(0, fulldir.length()-4).c_str() );
   }
   logf << "[ " << timestring() << " ] Log ends here." << endl;
   logf.close();
   }
   logf << "[ " << timestring() << " ] Log ends here." << endl;
   logf.close();
@@ -129,16 +130,21 @@ string writeout::getdatfile(string subname)
 
   if((dp  = opendir(fulldir.c_str())) == NULL) {
     logf << "Error(" << errno << ") opening " << fulldir << endl;
 
   if((dp  = opendir(fulldir.c_str())) == NULL) {
     logf << "Error(" << errno << ") opening " << fulldir << endl;
+    closedir(dp);
     return "";
   }
   
   while ((dirp = readdir(dp)) != NULL)
     {
       myfile = string(dirp->d_name);
     return "";
   }
   
   while ((dirp = readdir(dp)) != NULL)
     {
       myfile = string(dirp->d_name);
-      if(myfile.length() > 3 && myfile.substr(myfile.length()-4) == "part") {
+
+      if(myfile.length() > 3 && myfile.substr(myfile.length()-4) == "part" &&
+        subname == myfile.substr( myfile.find("-")+1, myfile.rfind(".")-myfile.find("-")-1 ) ) {
+       closedir(dp);
        return myfile;
       }
     }
 
        return myfile;
       }
     }
 
+  closedir(dp);
   return "";
 }
   return "";
 }