Use std::string_view in a few more places

This commit is contained in:
John Ericson 2020-06-12 21:12:36 +00:00
parent 2853ba4ab2
commit f6f01416b7
6 changed files with 12 additions and 12 deletions

View file

@ -76,7 +76,7 @@ struct GitHubInput : Input
readFile( readFile(
store->toRealPath( store->toRealPath(
downloadFile(store, url, "source", false).storePath))); downloadFile(store, url, "source", false).storePath)));
rev = Hash(json["sha"], htSHA1); rev = Hash(std::string { json["sha"] }, htSHA1);
debug("HEAD revision for '%s' is %s", url, rev->gitRev()); debug("HEAD revision for '%s' is %s", url, rev->gitRev());
} }

View file

@ -779,7 +779,7 @@ bool ValidPathInfo::isContentAddressed(const Store & store) const
}; };
if (hasPrefix(ca, "text:")) { if (hasPrefix(ca, "text:")) {
Hash hash(std::string(ca, 5)); Hash hash(ca.substr(5));
if (store.makeTextPath(path.name(), hash, references) == path) if (store.makeTextPath(path.name(), hash, references) == path)
return true; return true;
else else
@ -788,7 +788,7 @@ bool ValidPathInfo::isContentAddressed(const Store & store) const
else if (hasPrefix(ca, "fixed:")) { else if (hasPrefix(ca, "fixed:")) {
FileIngestionMethod recursive { ca.compare(6, 2, "r:") == 0 }; FileIngestionMethod recursive { ca.compare(6, 2, "r:") == 0 };
Hash hash(std::string(ca, recursive == FileIngestionMethod::Recursive ? 8 : 6)); Hash hash(ca.substr(recursive == FileIngestionMethod::Recursive ? 8 : 6));
auto refs = cloneStorePathSet(references); auto refs = cloneStorePathSet(references);
bool hasSelfReference = false; bool hasSelfReference = false;
if (refs.count(path)) { if (refs.count(path)) {

View file

@ -125,7 +125,7 @@ std::string Hash::to_string(Base base, bool includeType) const
} }
Hash::Hash(const std::string & s, HashType type) Hash::Hash(std::string_view s, HashType type)
: type(type) : type(type)
{ {
size_t pos = 0; size_t pos = 0;
@ -194,7 +194,7 @@ Hash::Hash(const std::string & s, HashType type)
} }
else if (isSRI || size == base64Len()) { else if (isSRI || size == base64Len()) {
auto d = base64Decode(std::string(s, pos)); auto d = base64Decode(s.substr(pos));
if (d.size() != hashSize) if (d.size() != hashSize)
throw BadHash("invalid %s hash '%s'", isSRI ? "SRI" : "base-64", s); throw BadHash("invalid %s hash '%s'", isSRI ? "SRI" : "base-64", s);
assert(hashSize); assert(hashSize);

View file

@ -42,7 +42,7 @@ struct Hash
Subresource Integrity hash expression). If the 'type' argument Subresource Integrity hash expression). If the 'type' argument
is htUnknown, then the hash type must be specified in the is htUnknown, then the hash type must be specified in the
string. */ string. */
Hash(const std::string & s, HashType type = htUnknown); Hash(std::string_view s, HashType type = htUnknown);
void init(); void init();

View file

@ -1314,7 +1314,7 @@ bool statusOk(int status)
} }
bool hasPrefix(const string & s, const string & prefix) bool hasPrefix(std::string_view s, std::string_view prefix)
{ {
return s.compare(0, prefix.size(), prefix) == 0; return s.compare(0, prefix.size(), prefix) == 0;
} }
@ -1408,7 +1408,7 @@ std::string filterANSIEscapes(const std::string & s, bool filterAll, unsigned in
static char base64Chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static char base64Chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
string base64Encode(const string & s) string base64Encode(std::string_view s)
{ {
string res; string res;
int data = 0, nbits = 0; int data = 0, nbits = 0;
@ -1429,7 +1429,7 @@ string base64Encode(const string & s)
} }
string base64Decode(const string & s) string base64Decode(std::string_view s)
{ {
bool init = false; bool init = false;
char decode[256]; char decode[256];

View file

@ -416,7 +416,7 @@ template<class N> bool string2Float(const string & s, N & n)
/* Return true iff `s' starts with `prefix'. */ /* Return true iff `s' starts with `prefix'. */
bool hasPrefix(const string & s, const string & prefix); bool hasPrefix(std::string_view s, std::string_view prefix);
/* Return true iff `s' ends in `suffix'. */ /* Return true iff `s' ends in `suffix'. */
@ -455,8 +455,8 @@ std::string filterANSIEscapes(const std::string & s,
/* Base64 encoding/decoding. */ /* Base64 encoding/decoding. */
string base64Encode(const string & s); string base64Encode(std::string_view s);
string base64Decode(const string & s); string base64Decode(std::string_view s);
/* Get a value for the specified key from an associate container. */ /* Get a value for the specified key from an associate container. */