mirror of
https://github.com/NixOS/nix
synced 2025-06-25 06:31:14 +02:00
This is the utility changes from #9968, which were easier to rebase first. I (@Ericson2314) didn't write this code; I just rebased it. Co-Authored-By: Artemis Tosini <me@artem.ist> Co-Authored-By: Audrey Dutcher <audrey@rhelmot.io>
52 lines
835 B
C++
52 lines
835 B
C++
#ifdef __FreeBSD__
|
|
# include "nix/util/freebsd-jail.hh"
|
|
|
|
# include <sys/resource.h>
|
|
# include <sys/param.h>
|
|
# include <sys/jail.h>
|
|
# include <sys/mount.h>
|
|
|
|
# include "nix/util/error.hh"
|
|
# include "nix/util/util.hh"
|
|
|
|
namespace nix {
|
|
|
|
AutoRemoveJail::AutoRemoveJail()
|
|
: del{false}
|
|
{
|
|
}
|
|
|
|
AutoRemoveJail::AutoRemoveJail(int jid)
|
|
: jid(jid)
|
|
, del(true)
|
|
{
|
|
}
|
|
|
|
AutoRemoveJail::~AutoRemoveJail()
|
|
{
|
|
try {
|
|
if (del) {
|
|
if (jail_remove(jid) < 0) {
|
|
throw SysError("Failed to remove jail %1%", jid);
|
|
}
|
|
}
|
|
} catch (...) {
|
|
ignoreExceptionInDestructor();
|
|
}
|
|
}
|
|
|
|
void AutoRemoveJail::cancel()
|
|
{
|
|
del = false;
|
|
}
|
|
|
|
void AutoRemoveJail::reset(int j)
|
|
{
|
|
del = true;
|
|
jid = j;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
}
|
|
#endif
|