]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
refactor: Use util::throw_on_error
authorJoel Rosdahl <joel@rosdahl.net>
Thu, 8 Sep 2022 11:54:02 +0000 (13:54 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Wed, 21 Sep 2022 15:06:28 +0000 (17:06 +0200)
src/core/Result.cpp
src/core/ResultExtractor.cpp
src/core/ResultRetriever.cpp

index d50e2ef30054f0569a5fa986250e6d05dbb5fa47..935a2f30c2f8ab4a2ad39678721ad961e1af2956 100644 (file)
@@ -34,6 +34,7 @@
 #include <core/wincompat.hpp>
 #include <fmtmacros.hpp>
 #include <util/Bytes.hpp>
+#include <util/expected.hpp>
 #include <util/file.hpp>
 #include <util/path.hpp>
 #include <util/string.hpp>
@@ -299,11 +300,9 @@ Serializer::serialize(std::vector<uint8_t>& output)
                                          std::get<std::string>(entry.data));
     } else if (is_file_entry) {
       const auto& path = std::get<std::string>(entry.data);
-      const auto data = util::read_file<util::Bytes>(path);
-      if (!data) {
-        throw Error(FMT("Failed to read {}: {}", path, data.error()));
-      }
-      writer.write_bytes(*data);
+      const auto data = util::value_or_throw<Error>(
+        util::read_file<util::Bytes>(path), FMT("Failed to read {}: ", path));
+      writer.write_bytes(data);
     } else {
       writer.write_bytes(std::get<nonstd::span<const uint8_t>>(entry.data));
     }
index 4afcdc131ed4d8f41da6076569c20b9907e59588..8649ede7018f395efaddf4a7e440f7afa6cb159f 100644 (file)
@@ -25,6 +25,7 @@
 #include <core/wincompat.hpp>
 #include <fmtmacros.hpp>
 #include <util/Bytes.hpp>
+#include <util/expected.hpp>
 #include <util/file.hpp>
 
 #include <fcntl.h>
@@ -58,10 +59,8 @@ ResultExtractor::on_embedded_file(uint8_t /*file_number*/,
   }
 
   const auto dest_path = FMT("{}/ccache-result{}", m_output_directory, suffix);
-  const auto result = util::write_file(dest_path, data);
-  if (!result) {
-    throw Error(FMT("Failed to write to {}: {}", dest_path, result.error()));
-  }
+  util::throw_on_error<Error>(util::write_file(dest_path, data),
+                              FMT("Failed to write to {}: ", dest_path));
 }
 
 void
@@ -81,11 +80,10 @@ ResultExtractor::on_raw_file(uint8_t file_number,
                     file_size));
   }
 
-  const auto data = util::read_file<util::Bytes>(raw_file_path, file_size);
-  if (!data) {
-    throw Error(FMT("Failed to read {}: {}", raw_file_path, data.error()));
-  }
-  on_embedded_file(file_number, file_type, *data);
+  const auto data = util::value_or_throw<Error>(
+    util::read_file<util::Bytes>(raw_file_path, file_size),
+    FMT("Failed to read {}: ", raw_file_path));
+  on_embedded_file(file_number, file_type, data);
 }
 
 } // namespace core
index 6bea0adb8460517f0299e63154a3330d42bd75f8..b1c34c9229d6189e969a203fe5a081082cecf47d 100644 (file)
@@ -27,6 +27,7 @@
 #include <core/exceptions.hpp>
 #include <core/wincompat.hpp>
 #include <fmtmacros.hpp>
+#include <util/expected.hpp>
 #include <util/file.hpp>
 #include <util/string.hpp>
 
@@ -74,11 +75,9 @@ ResultRetriever::on_embedded_file(uint8_t file_number,
       if (file_type == FileType::dependency) {
         write_dependency_file(dest_path, data);
       } else {
-        const auto result = util::write_file(dest_path, data);
-        if (!result) {
-          throw WriteError(
-            FMT("Failed to write to {}: {}", dest_path, result.error()));
-        }
+        util::throw_on_error<WriteError>(
+          util::write_file(dest_path, data),
+          FMT("Failed to write to {}: ", dest_path));
       }
     }
   }
@@ -192,10 +191,8 @@ ResultRetriever::write_dependency_file(const std::string& path,
   }
 
   auto write_data = [&](auto data, auto size) {
-    const auto result = util::write_fd(*fd, data, size);
-    if (!result) {
-      throw WriteError(FMT("Failed to write to {}: {}", path, result.error()));
-    }
+    util::throw_on_error<WriteError>(util::write_fd(*fd, data, size),
+                                     FMT("Failed to write to {}: ", path));
   };
 
   std::string_view str_data = util::to_string_view(data);