refactor(3p/nix/libutil): Replace hasPrefix/Suffix with Abseil

Uses the equivalent absl::StartsWith and absl::EndsWith functions
instead.
This commit is contained in:
Vincent Ambo 2020-05-25 02:19:01 +01:00
parent 8cf1322a6f
commit b99b368d17
21 changed files with 69 additions and 57 deletions

View file

@ -7,6 +7,7 @@
#include <iostream>
#include <new>
#include <absl/strings/match.h>
#include <gc/gc.h>
#include <gc/gc_cpp.h>
#include <glog/logging.h>
@ -423,7 +424,7 @@ void EvalState::checkURI(const std::string& uri) {
for (auto& prefix : evalSettings.allowedUris.get()) {
if (uri == prefix ||
(uri.size() > prefix.size() && !prefix.empty() &&
hasPrefix(uri, prefix) &&
absl::StartsWith(uri, prefix) &&
(prefix[prefix.size() - 1] == '/' || uri[prefix.size()] == '/'))) {
return;
}
@ -431,12 +432,12 @@ void EvalState::checkURI(const std::string& uri) {
/* If the URI is a path, then check it against allowedPaths as
well. */
if (hasPrefix(uri, "/")) {
if (absl::StartsWith(uri, "/")) {
checkSourcePath(uri);
return;
}
if (hasPrefix(uri, "file://")) {
if (absl::StartsWith(uri, "file://")) {
checkSourcePath(std::string(uri, 7));
return;
}

View file

@ -2,6 +2,7 @@
#include <regex>
#include <absl/strings/ascii.h>
#include <absl/strings/match.h>
#include <glog/logging.h>
#include <sys/time.h>
@ -31,7 +32,8 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
if (evalSettings.pureEval && rev == "")
throw Error("in pure evaluation mode, 'fetchGit' requires a Git revision");
if (!ref && rev == "" && hasPrefix(uri, "/") && pathExists(uri + "/.git")) {
if (!ref && rev == "" && absl::StartsWith(uri, "/") &&
pathExists(uri + "/.git")) {
bool clean = true;
try {
@ -56,7 +58,7 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
runProgram("git", true, {"-C", uri, "ls-files", "-z"}), "\0"s);
PathFilter filter = [&](const Path& p) -> bool {
assert(hasPrefix(p, uri));
assert(absl::StartsWith(p, uri));
std::string file(p, uri.size() + 1);
auto st = lstat(p);
@ -64,7 +66,7 @@ GitInfo exportGit(ref<Store> store, const std::string& uri,
if (S_ISDIR(st.st_mode)) {
auto prefix = file + "/";
auto i = files.lower_bound(prefix);
return i != files.end() && hasPrefix(*i, prefix);
return i != files.end() && absl::StartsWith(*i, prefix);
}
return files.count(file);

View file

@ -2,6 +2,7 @@
#include <regex>
#include <absl/strings/ascii.h>
#include <absl/strings/match.h>
#include <glog/logging.h>
#include <sys/time.h>
@ -31,7 +32,7 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri,
"in pure evaluation mode, 'fetchMercurial' requires a Mercurial "
"revision");
if (rev == "" && hasPrefix(uri, "/") && pathExists(uri + "/.hg")) {
if (rev == "" && absl::StartsWith(uri, "/") && pathExists(uri + "/.hg")) {
bool clean = runProgram("hg", true,
{"status", "-R", uri, "--modified", "--added",
"--removed"}) == "";
@ -54,7 +55,7 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri,
"\0"s);
PathFilter filter = [&](const Path& p) -> bool {
assert(hasPrefix(p, uri));
assert(absl::StartsWith(p, uri));
std::string file(p, uri.size() + 1);
auto st = lstat(p);
@ -62,7 +63,7 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri,
if (S_ISDIR(st.st_mode)) {
auto prefix = file + "/";
auto i = files.lower_bound(prefix);
return i != files.end() && hasPrefix(*i, prefix);
return i != files.end() && absl::StartsWith(*i, prefix);
}
return files.count(file);