From aaf8c91366540001029586978e854917a569124c Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 5 Jan 2024 23:58:57 +0100 Subject: [PATCH] chore(dwarfsck): use iolayer abstractions for metadata export --- src/dwarfsck_main.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/dwarfsck_main.cpp b/src/dwarfsck_main.cpp index 5817bb67..e2e533a8 100644 --- a/src/dwarfsck_main.cpp +++ b/src/dwarfsck_main.cpp @@ -27,14 +27,13 @@ #include -#include -#include #include #include #include #include #include "dwarfs/error.h" +#include "dwarfs/file_access.h" #include "dwarfs/filesystem_v2.h" #include "dwarfs/iolayer.h" #include "dwarfs/logger.h" @@ -166,12 +165,19 @@ int dwarfsck_main(int argc, sys_char** argv, iolayer const& iol) { filesystem_v2 fs(lgr, mm, fsopts); if (!export_metadata.empty()) { - auto of = folly::File(export_metadata, O_RDWR | O_CREAT | O_TRUNC); - auto json = fs.serialize_metadata_as_json(false); - if (folly::writeFull(of.fd(), json.data(), json.size()) < 0) { - LOG_ERROR << "failed to export metadata"; + std::error_code ec; + auto of = iol.file->open_output(export_metadata, ec); + if (ec) { + LOG_ERROR << "failed to open metadata output file: " << ec.message(); + return 1; + } + auto json = fs.serialize_metadata_as_json(false); + of->os().write(json.data(), json.size()); + of->close(ec); + if (ec) { + LOG_ERROR << "failed to close metadata output file: " << ec.message(); + return 1; } - of.close(); } else { auto level = check_integrity ? filesystem_check_level::FULL : filesystem_check_level::CHECKSUM;