summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorCongcong Kuo <congcong.kuo@gmail.com>2025-10-20 15:47:25 +0800
committerLudovic Courtès <ludo@gnu.org>2025-11-03 17:18:37 +0100
commit85a72ed28e91f7f918a439c8678254537a374ac7 (patch)
tree38f71ba140d10370014190699e643a1288e20d1c /nix
parent4951783e30036a650f82034ff9c0603d50c081b0 (diff)
daemon: Use starts_with() and ends_with() instead of string() or hasSuffix()
* nix/libstore/build.cc (DerivationGoal::tryBuildHook): Use starts_with instead of string() * nix/libstore/builtins.cc (lookupBuiltinBuilder): Same. * nix/libstore/builtins.hh (isBuiltin): Same and fix indentation of the file. * nix/libstore/derivations.cc (DerivationOutput::parseHashInfo, isDerivation): Same and clean header files. * nix/libstore/gc.cc (addPermRoot, LocalStore::isActiveTempFile): Same. * nix/libstore/globals.cc: Same. * nix/libstore/local-store.cc: Same. * nix/libstore/misc.cc: Same. * nix/libstore/store-api.cc (checkStoreName): Same. * nix/libutil/affinity.cc: Same. * nix/libutil/archive.cc: Same. * nix/libutil/spawn.cc: Same. * nix/libutil/util.{cc, hh} (hasSuffix): Removed. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'nix')
-rw-r--r--nix/libstore/build.cc2
-rw-r--r--nix/libstore/builtins.cc2
-rw-r--r--nix/libstore/builtins.hh26
-rw-r--r--nix/libstore/derivations.cc5
-rw-r--r--nix/libstore/gc.cc6
-rw-r--r--nix/libstore/globals.cc2
-rw-r--r--nix/libstore/local-store.cc2
-rw-r--r--nix/libstore/misc.cc1
-rw-r--r--nix/libstore/store-api.cc2
-rw-r--r--nix/libutil/affinity.cc2
-rw-r--r--nix/libutil/archive.cc2
-rw-r--r--nix/libutil/spawn.cc1
-rw-r--r--nix/libutil/util.cc7
-rw-r--r--nix/libutil/util.hh4
14 files changed, 21 insertions, 43 deletions
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index bf2e9150d6a..b3f9c24983c 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -1573,7 +1573,7 @@ HookReply DerivationGoal::tryBuildHook()
string reply;
while (true) {
string s = readLine(worker.hook->fromAgent.readSide);
- if (string(s, 0, 2) == "# ") {
+ if (s.starts_with("# ")) {
reply = string(s, 2);
break;
}
diff --git a/nix/libstore/builtins.cc b/nix/libstore/builtins.cc
index b1a32480b55..dc0f68a171a 100644
--- a/nix/libstore/builtins.cc
+++ b/nix/libstore/builtins.cc
@@ -65,7 +65,7 @@ static const std::map<std::string, derivationBuilder> builtins =
derivationBuilder lookupBuiltinBuilder(const std::string & name)
{
- if (name.substr(0, 8) == "builtin:")
+ if (name.starts_with("builtin:"))
{
auto realName = name.substr(8);
auto builder = builtins.find(realName);
diff --git a/nix/libstore/builtins.hh b/nix/libstore/builtins.hh
index 602a5a1c58d..d5d09e27bc0 100644
--- a/nix/libstore/builtins.hh
+++ b/nix/libstore/builtins.hh
@@ -25,20 +25,20 @@
namespace nix {
- inline bool isBuiltin(const Derivation & drv)
- {
- return string(drv.builder, 0, 8) == "builtin:";
- }
+inline bool isBuiltin(const Derivation & drv)
+{
+ return drv.builder.starts_with("builtin:");
+}
- /* Build DRV, which lives at DRVPATH. */
- typedef void (*derivationBuilder) (const Derivation &drv,
- const std::string &drvPath,
- const std::string &output);
+/* Build DRV, which lives at DRVPATH. */
+typedef void (*derivationBuilder) (const Derivation &drv,
+ const std::string &drvPath,
+ const std::string &output);
- /* Return the built-in builder called BUILDER, or NULL if none was
- found. */
- derivationBuilder lookupBuiltinBuilder(const std::string &builder);
+/* Return the built-in builder called BUILDER, or NULL if none was
+ found. */
+derivationBuilder lookupBuiltinBuilder(const std::string &builder);
- /* Return the list of supported built-in builder names. */
- std::list<std::string> builtinBuilderNames();
+/* Return the list of supported built-in builder names. */
+std::list<std::string> builtinBuilderNames();
}
diff --git a/nix/libstore/derivations.cc b/nix/libstore/derivations.cc
index c253a2a438a..f05296702b3 100644
--- a/nix/libstore/derivations.cc
+++ b/nix/libstore/derivations.cc
@@ -2,7 +2,6 @@
#include "store-api.hh"
#include "globals.hh"
#include "util.hh"
-#include "misc.hh"
#include <format>
@@ -16,7 +15,7 @@ void DerivationOutput::parseHashInfo(bool & recursive, HashType & hashType, Hash
recursive = false;
string algo = hashAlgo;
- if (string(algo, 0, 2) == "r:") {
+ if (algo.starts_with("r:")) {
recursive = true;
algo = string(algo, 2);
}
@@ -200,7 +199,7 @@ string unparseDerivation(const Derivation & drv)
bool isDerivation(const string & fileName)
{
- return hasSuffix(fileName, drvExtension);
+ return fileName.ends_with(drvExtension);
}
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 96440077fb5..efb9fd52cbb 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -2,8 +2,6 @@
#include "misc.hh"
#include "local-store.hh"
-#include <functional>
-#include <queue>
#include <random>
#include <algorithm>
#include <format>
@@ -108,7 +106,7 @@ Path addPermRoot(StoreAPI & store, const Path & _storePath,
if (!allowOutsideRootsDir) {
Path rootsDir = canonPath(std::format("{}/{}", settings.nixStateDir, gcRootsDir));
- if (string(gcRoot, 0, rootsDir.size() + 1) != rootsDir + "/")
+ if (gcRoot.starts_with(rootsDir + "/"))
throw Error(std::format(
"path `{}' is not a valid garbage collector root; "
"it's not in the directory `{}'",
@@ -383,7 +381,7 @@ struct LocalStore::GCState
bool LocalStore::isActiveTempFile(const GCState & state,
const Path & path, const string & suffix)
{
- return hasSuffix(path, suffix)
+ return path.ends_with(suffix)
&& state.tempRoots.find(string(path, 0, path.size() - suffix.size())) != state.tempRoots.end();
}
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 16f43f6abcb..8551fea56c0 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -2,10 +2,8 @@
#include "globals.hh"
#include "util.hh"
-#include "archive.hh"
#include <map>
-#include <algorithm>
#include <format>
namespace nix {
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index f11f48bcf07..161c8d81bda 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -5,9 +5,7 @@
#include "pathlocks.hh"
#include "worker-protocol.hh"
#include "derivations.hh"
-#include "affinity.hh"
-#include <iostream>
#include <algorithm>
#include <format>
#include <cstring>
diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc
index 943fb9c9719..88a24d4b822 100644
--- a/nix/libstore/misc.cc
+++ b/nix/libstore/misc.cc
@@ -2,7 +2,6 @@
#include <math.h>
#include "store-api.hh"
#include "local-store.hh"
-#include "globals.hh"
#include <format>
diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc
index 0596678b8b5..1067e44a8e2 100644
--- a/nix/libstore/store-api.cc
+++ b/nix/libstore/store-api.cc
@@ -60,7 +60,7 @@ void checkStoreName(const string & name)
string validChars = "+-._?=";
/* Disallow names starting with a dot for possible security
reasons (e.g., "." and ".."). */
- if (string(name, 0, 1) == ".")
+ if (name.starts_with("."))
throw Error(std::format("invalid name: `{}' (can't begin with dot)", name));
for (const auto& i : name)
if (!((i >= 'A' && i <= 'Z') ||
diff --git a/nix/libutil/affinity.cc b/nix/libutil/affinity.cc
index d50e9f3e9cd..53500c22ab9 100644
--- a/nix/libutil/affinity.cc
+++ b/nix/libutil/affinity.cc
@@ -3,7 +3,7 @@
#include "affinity.hh"
#include <format>
-
+
#if HAVE_SCHED_H
#include <sched.h>
#endif
diff --git a/nix/libutil/archive.cc b/nix/libutil/archive.cc
index 0df5285860b..fa9f4398e3c 100644
--- a/nix/libutil/archive.cc
+++ b/nix/libutil/archive.cc
@@ -3,8 +3,6 @@
#include "config.h"
#include <cerrno>
-#include <algorithm>
-#include <vector>
#include <map>
#include <format>
diff --git a/nix/libutil/spawn.cc b/nix/libutil/spawn.cc
index c25c3a681f2..02676d65f97 100644
--- a/nix/libutil/spawn.cc
+++ b/nix/libutil/spawn.cc
@@ -29,7 +29,6 @@
#include <fcntl.h>
#include <cstring>
#include <cstdlib>
-#include <cstdint>
#include <cassert>
#include <format>
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index ddce9879cac..22022db51a5 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -7,7 +7,6 @@
#include <cerrno>
#include <cstdio>
#include <cstdlib>
-#include <sstream>
#include <cstring>
#include <cassert>
#include <format>
@@ -1343,12 +1342,6 @@ bool statusOk(int status)
}
-bool hasSuffix(const string & s, const string & suffix)
-{
- return s.size() >= suffix.size() && string(s, s.size() - suffix.size()) == suffix;
-}
-
-
void expect(std::istream & str, std::string_view s)
{
std::vector<char> s2(s.size());
diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh
index d30dc7801e2..436c378cb6e 100644
--- a/nix/libutil/util.hh
+++ b/nix/libutil/util.hh
@@ -365,10 +365,6 @@ template<class N> bool string2Int(const string & s, N & n)
}
-/* Return true iff `s' ends in `suffix'. */
-bool hasSuffix(const string & s, const string & suffix);
-
-
/* Read string `s' from stream `str'. */
void expect(std::istream & str, std::string_view s);