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>
This commit is contained in:
Congcong Kuo 2025-10-20 15:47:25 +08:00 committed by Ludovic Courtès
parent 4951783e30
commit 85a72ed28e
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
14 changed files with 24 additions and 46 deletions

View file

@ -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;
}

View file

@ -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);

View file

@ -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();
}

View file

@ -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);
}

View file

@ -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();
}

View file

@ -2,10 +2,8 @@
#include "globals.hh"
#include "util.hh"
#include "archive.hh"
#include <map>
#include <algorithm>
#include <format>
namespace nix {

View file

@ -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>

View file

@ -2,7 +2,6 @@
#include <math.h>
#include "store-api.hh"
#include "local-store.hh"
#include "globals.hh"
#include <format>

View file

@ -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') ||

View file

@ -3,8 +3,6 @@
#include "config.h"
#include <cerrno>
#include <algorithm>
#include <vector>
#include <map>
#include <format>

View file

@ -29,7 +29,6 @@
#include <fcntl.h>
#include <cstring>
#include <cstdlib>
#include <cstdint>
#include <cassert>
#include <format>

View file

@ -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());

View file

@ -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);