]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Pretty-print binary data in .ccache-input-text files
authorJoel Rosdahl <joel@rosdahl.net>
Thu, 6 Aug 2020 17:15:19 +0000 (19:15 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Thu, 6 Aug 2020 17:15:19 +0000 (19:15 +0200)
This happens when the i-node cache is enabled.

src/Hash.cpp
src/Hash.hpp

index 78d5e7c47cded5730746042e736a40c5c7e90858..da65d5830d760f500238261b586f8146144ace9f 100644 (file)
@@ -71,10 +71,18 @@ Hash::hash(const void* data, size_t size, HashType hash_type)
 {
   string_view buffer(static_cast<const char*>(data), size);
   hash_buffer(buffer);
-  add_debug_text(buffer);
-  if (hash_type == HashType::text) {
-    add_debug_text("\n");
+
+  switch (hash_type) {
+  case HashType::binary:
+    add_debug_text(Util::format_hex(static_cast<const uint8_t*>(data), size));
+    break;
+
+  case HashType::text:
+    add_debug_text(buffer);
+    break;
   }
+
+  add_debug_text("\n");
   return *this;
 }
 
index 9c96b5cdf9f25425670203d1f772d3616e1d9b72..d2686aff2cdbd81b0e5e2529438a5972fd696228 100644 (file)
@@ -56,9 +56,14 @@ public:
 
   // Add bytes to the hash.
   //
-  // If hash debugging is enabled, the buffer content is written verbatim to the
-  // text input file, followed by a newline character if `hash_type` is
-  // HashType::text.
+  // If hash debugging is enabled:
+  //
+  // - If `hash_type` is `HashType::binary`, the buffer content is written in
+  //   hex format to the text input file.
+  // - If `hash_type` is `HashType::text`, the buffer content is written
+  //   verbatim to the text input file.
+  //
+  // In both cases a newline character is added as well.
   Hash&
   hash(const void* data, size_t size, HashType hash_type = HashType::text);