diff options
author | eldritch horrors <pennae@lix.systems> | 2024-03-18 14:52:04 +0100 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-03-18 15:42:52 -0600 |
commit | f38ae92a38a66b597dbd6975219d6ddb4f52fa4f (patch) | |
tree | be6e1ed225e3d77a3c1fbcef1778169878326cbe /src/nix | |
parent | 0f518f44e289114eb4828c8232bc0b79c7a85ac7 (diff) |
libutil: make AutoCloseFD a better resource
add a reset() method to close the wrapped fd instead of assigning magic
constants. also make the from-fd constructor explicit so you can't
accidentally assign the *wrong* magic constant, or even an unrelated
integer that also just happens to be an fd by pure chance.
Change-Id: I51311b0f6e040240886b5103d39d1794a6acc325
Diffstat (limited to 'src/nix')
-rw-r--r-- | src/nix/daemon.cc | 8 | ||||
-rw-r--r-- | src/nix/prefetch.cc | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/nix/daemon.cc b/src/nix/daemon.cc index 4f9907ad7..9d4afb6d9 100644 --- a/src/nix/daemon.cc +++ b/src/nix/daemon.cc @@ -294,7 +294,7 @@ static void daemonLoop(std::optional<TrustedFlag> forceTrustClientOpt) if (listenFds) { if (getEnv("LISTEN_PID") != std::to_string(getpid()) || listenFds != "1") throw Error("unexpected systemd environment variables"); - fdSocket = SD_LISTEN_FDS_START; + fdSocket = AutoCloseFD{SD_LISTEN_FDS_START}; closeOnExec(fdSocket.get()); } @@ -315,8 +315,8 @@ static void daemonLoop(std::optional<TrustedFlag> forceTrustClientOpt) struct sockaddr_un remoteAddr; socklen_t remoteAddrLen = sizeof(remoteAddr); - AutoCloseFD remote = accept(fdSocket.get(), - (struct sockaddr *) &remoteAddr, &remoteAddrLen); + AutoCloseFD remote{accept(fdSocket.get(), + (struct sockaddr *) &remoteAddr, &remoteAddrLen)}; checkInterrupt(); if (!remote) { if (errno == EINTR) continue; @@ -348,7 +348,7 @@ static void daemonLoop(std::optional<TrustedFlag> forceTrustClientOpt) options.dieWithParent = false; options.runExitHandlers = true; startProcess([&]() { - fdSocket = -1; + fdSocket.reset(); // Background the daemon. if (setsid() == -1) diff --git a/src/nix/prefetch.cc b/src/nix/prefetch.cc index 0104635fb..8f74984e0 100644 --- a/src/nix/prefetch.cc +++ b/src/nix/prefetch.cc @@ -92,7 +92,7 @@ std::tuple<StorePath, Hash> prefetchFile( if (executable) mode = 0700; - AutoCloseFD fd = open(tmpFile.c_str(), O_WRONLY | O_CREAT | O_EXCL, mode); + AutoCloseFD fd{open(tmpFile.c_str(), O_WRONLY | O_CREAT | O_EXCL, mode)}; if (!fd) throw SysError("creating temporary file '%s'", tmpFile); FdSink sink(fd.get()); |