M nix/libstore/build.cc => nix/libstore/build.cc +1 -1
@@ 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;
}
M nix/libstore/builtins.cc => nix/libstore/builtins.cc +1 -1
@@ 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);
M nix/libstore/builtins.hh => nix/libstore/builtins.hh +16 -16
@@ 25,20 25,20 @@
namespace nix {
- inline bool isBuiltin(const Derivation & drv)
- {
- return string(drv.builder, 0, 8) == "builtin:";
- }
-
- /* 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 list of supported built-in builder names. */
- std::list<std::string> builtinBuilderNames();
+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);
+
+/* 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();
}
M nix/libstore/derivations.cc => nix/libstore/derivations.cc +2 -3
@@ 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);
}
M nix/libstore/gc.cc => nix/libstore/gc.cc +2 -4
@@ 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();
}
M nix/libstore/globals.cc => nix/libstore/globals.cc +0 -2
@@ 2,10 2,8 @@
#include "globals.hh"
#include "util.hh"
-#include "archive.hh"
#include <map>
-#include <algorithm>
#include <format>
namespace nix {
M nix/libstore/local-store.cc => nix/libstore/local-store.cc +0 -2
@@ 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>
M nix/libstore/misc.cc => nix/libstore/misc.cc +0 -1
@@ 2,7 2,6 @@
#include <math.h>
#include "store-api.hh"
#include "local-store.hh"
-#include "globals.hh"
#include <format>
M nix/libstore/store-api.cc => nix/libstore/store-api.cc +1 -1
@@ 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') ||
M nix/libutil/affinity.cc => nix/libutil/affinity.cc +1 -1
@@ 3,7 3,7 @@
#include "affinity.hh"
#include <format>
-
+
#if HAVE_SCHED_H
#include <sched.h>
#endif
M nix/libutil/archive.cc => nix/libutil/archive.cc +0 -2
@@ 3,8 3,6 @@
#include "config.h"
#include <cerrno>
-#include <algorithm>
-#include <vector>
#include <map>
#include <format>
M nix/libutil/spawn.cc => nix/libutil/spawn.cc +0 -1
@@ 29,7 29,6 @@
#include <fcntl.h>
#include <cstring>
#include <cstdlib>
-#include <cstdint>
#include <cassert>
#include <format>
M nix/libutil/util.cc => nix/libutil/util.cc +0 -7
@@ 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());
M nix/libutil/util.hh => nix/libutil/util.hh +0 -4
@@ 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);