AutoDelete: Add default constructor with deletion disabled

This commit is contained in:
Shea Levy 2015-11-16 05:53:10 -05:00
parent 4390142315
commit 58d2fac91d
3 changed files with 11 additions and 1 deletions

View file

@ -2534,7 +2534,7 @@ void DerivationGoal::runChild()
Path sandboxFile = drvPath + ".sb";
if (pathExists(sandboxFile)) deletePath(sandboxFile);
autoDelSandbox = AutoDelete(sandboxFile);
autoDelSandbox.reset(sandboxFile, false);
writeFile(sandboxFile, sandboxProfile);

View file

@ -599,6 +599,8 @@ string drainFD(int fd)
//////////////////////////////////////////////////////////////////////
AutoDelete::AutoDelete() : del{false} {}
AutoDelete::AutoDelete(const string & p, bool recursive) : path(p)
{
del = true;
@ -626,6 +628,12 @@ void AutoDelete::cancel()
del = false;
}
void AutoDelete::reset(const Path & p, bool recursive = true) {
this-> p = p;
this->recursive = recursive;
del = true;
}
//////////////////////////////////////////////////////////////////////

View file

@ -199,9 +199,11 @@ class AutoDelete
bool del;
bool recursive;
public:
AutoDelete();
AutoDelete(const Path & p, bool recursive = true);
~AutoDelete();
void cancel();
void reset(const Path & p, bool recursive = true);
operator Path() const { return path; }
};