about summary refs log tree commit diff
path: root/third_party/nix/src/libutil/archive.cc
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2020-09-07T17·01-0400
committerglittershark <grfn@gws.fyi>2020-09-14T21·38+0000
commit381ce8a66658ac9d02c44e96c860cd05bcb6a5f8 (patch)
treee475adb3f06e4bfa55af5ced0c16f9591734544d /third_party/nix/src/libutil/archive.cc
parent31b06516f315241c40ae0e6c3dd9dc7e641ea8dc (diff)
refactor(tvix): Make static strings constexpr string_views r/1791
Make all static std::strings constexpr std::string_views, and replace
concatenation with absl::StrCat where necessary.

Technically all of these are constant, so they really don't need to be
top-level statics - and since I'm trying to get rid of as much global
state as possible in preparation for making the nix daemon properly
multithreaded I figured I'd knock these out while I was at it.

Change-Id: Ibd3ad9ef68f0a0eacb135541b39fdb13dae042e1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1939
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'third_party/nix/src/libutil/archive.cc')
-rw-r--r--third_party/nix/src/libutil/archive.cc16
1 files changed, 7 insertions, 9 deletions
diff --git a/third_party/nix/src/libutil/archive.cc b/third_party/nix/src/libutil/archive.cc
index e3233d9ee4cc..e470ad7be6ce 100644
--- a/third_party/nix/src/libutil/archive.cc
+++ b/third_party/nix/src/libutil/archive.cc
@@ -36,9 +36,7 @@ static ArchiveSettings archiveSettings;
 
 static GlobalConfig::Register r1(&archiveSettings);
 
-const std::string narVersionMagic1 = "nix-archive-1";
-
-static std::string caseHackSuffix = "~nix~case~hack~";
+constexpr std::string_view kCaseHackSuffix = "~nix~case~hack~";
 
 PathFilter defaultPathFilter = [](const Path& /*unused*/) { return true; };
 
@@ -93,7 +91,7 @@ static void dump(const Path& path, Sink& sink, PathFilter& filter) {
     for (auto& i : readDirectory(path)) {
       if (archiveSettings.useCaseHack) {
         std::string name(i.name);
-        size_t pos = i.name.find(caseHackSuffix);
+        size_t pos = i.name.find(kCaseHackSuffix);
         if (pos != std::string::npos) {
           DLOG(INFO) << "removing case hack suffix from " << path << "/"
                      << i.name;
@@ -134,12 +132,12 @@ static void dump(const Path& path, Sink& sink, PathFilter& filter) {
 }
 
 void dumpPath(const Path& path, Sink& sink, PathFilter& filter) {
-  sink << narVersionMagic1;
+  sink << std::string(kNarVersionMagic1);
   dump(path, sink, filter);
 }
 
 void dumpString(const std::string& s, Sink& sink) {
-  sink << narVersionMagic1 << "("
+  sink << std::string(kNarVersionMagic1) << "("
        << "type"
        << "regular"
        << "contents" << s << ")";
@@ -279,7 +277,7 @@ static void parse(ParseSink& sink, Source& source, const Path& path) {
             if (i != names.end()) {
               DLOG(INFO) << "case collision between '" << i->first << "' and '"
                          << name << "'";
-              name += caseHackSuffix;
+              name += kCaseHackSuffix;
               name += std::to_string(++i->second);
             } else {
               names[name] = 0;
@@ -310,12 +308,12 @@ static void parse(ParseSink& sink, Source& source, const Path& path) {
 void parseDump(ParseSink& sink, Source& source) {
   std::string version;
   try {
-    version = readString(source, narVersionMagic1.size());
+    version = readString(source, kNarVersionMagic1.size());
   } catch (SerialisationError& e) {
     /* This generally means the integer at the start couldn't be
        decoded.  Ignore and throw the exception below. */
   }
-  if (version != narVersionMagic1) {
+  if (version != kNarVersionMagic1) {
     throw badArchive("input doesn't look like a Nix archive");
   }
   parse(sink, source, "");