Clean up temp roots in a more C++ way
This commit is contained in:
		
							parent
							
								
									ed306febb5
								
							
						
					
					
						commit
						1256ab3b44
					
				
					 3 changed files with 13 additions and 26 deletions
				
			
		| 
						 | 
					@ -145,11 +145,6 @@ Path addPermRoot(StoreAPI & store, const Path & _storePath,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The file to which we write our temporary roots. */
 | 
					 | 
				
			||||||
static Path fnTempRoots;
 | 
					 | 
				
			||||||
static AutoCloseFD fdTempRoots;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void LocalStore::addTempRoot(const Path & path)
 | 
					void LocalStore::addTempRoot(const Path & path)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* Create the temporary roots file for this process. */
 | 
					    /* Create the temporary roots file for this process. */
 | 
				
			||||||
| 
						 | 
					@ -204,27 +199,6 @@ void LocalStore::addTempRoot(const Path & path)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void removeTempRoots()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (fdTempRoots != -1) {
 | 
					 | 
				
			||||||
        fdTempRoots.close();
 | 
					 | 
				
			||||||
        unlink(fnTempRoots.c_str());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Automatically clean up the temporary roots file when we exit. */
 | 
					 | 
				
			||||||
struct RemoveTempRoots
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    ~RemoveTempRoots()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        removeTempRoots();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static RemoveTempRoots autoRemoveTempRoots __attribute__((unused));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef std::shared_ptr<AutoCloseFD> FDPtr;
 | 
					typedef std::shared_ptr<AutoCloseFD> FDPtr;
 | 
				
			||||||
typedef list<FDPtr> FDs;
 | 
					typedef list<FDPtr> FDs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -363,6 +363,15 @@ LocalStore::~LocalStore()
 | 
				
			||||||
    } catch (...) {
 | 
					    } catch (...) {
 | 
				
			||||||
        ignoreException();
 | 
					        ignoreException();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        if (fdTempRoots != -1) {
 | 
				
			||||||
 | 
					            fdTempRoots.close();
 | 
				
			||||||
 | 
					            unlink(fnTempRoots.c_str());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (...) {
 | 
				
			||||||
 | 
					        ignoreException();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -244,6 +244,10 @@ private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool didSetSubstituterEnv;
 | 
					    bool didSetSubstituterEnv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* The file to which we write our temporary roots. */
 | 
				
			||||||
 | 
					    Path fnTempRoots;
 | 
				
			||||||
 | 
					    AutoCloseFD fdTempRoots;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int getSchema();
 | 
					    int getSchema();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void openDB(bool create);
 | 
					    void openDB(bool create);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue