From 3e3573cb5838f990d21becd1c3ba8a4c866730dc Mon Sep 17 00:00:00 2001 From: Rebecca Turner Date: Thu, 11 Dec 2025 15:01:44 -0800 Subject: [PATCH] libutil: reformat tarfile.{cc,hh} Change-Id: I24670300157213fba787df62931776416a6a6964 --- lix/libutil/tarfile.cc | 48 +++++++++++++++++++++++++----------------- lix/libutil/tarfile.hh | 3 ++- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/lix/libutil/tarfile.cc b/lix/libutil/tarfile.cc index a9fcca682..c147307eb 100644 --- a/lix/libutil/tarfile.cc +++ b/lix/libutil/tarfile.cc @@ -19,7 +19,7 @@ static int callback_open(struct archive *, void * self) return ARCHIVE_OK; } -static ssize_t callback_read(struct archive * archive, void * _self, const void * * buffer) +static ssize_t callback_read(struct archive * archive, void * _self, const void ** buffer) { auto self = static_cast(_self); *buffer = self->buffer.data(); @@ -42,10 +42,11 @@ static int callback_close(struct archive *, void * self) void TarArchive::check(int err, const std::string & reason) { - if (err == ARCHIVE_EOF) + if (err == ARCHIVE_EOF) { throw EndOfFile("reached end of archive"); - else if (err != ARCHIVE_OK) + } else if (err != ARCHIVE_OK) { throw Error(reason, archive_error_string(this->archive)); + } } TarArchive::TarArchive(Source & source, bool raw) : buffer(65536) @@ -62,10 +63,12 @@ TarArchive::TarArchive(Source & source, bool raw) : buffer(65536) archive_read_support_format_empty(archive); } archive_read_set_option(archive, nullptr, "mac-ext", nullptr); - check(archive_read_open(archive, (void *)this, callback_open, callback_read, callback_close), "Failed to open archive (%s)"); + check( + archive_read_open(archive, (void *) this, callback_open, callback_read, callback_close), + "Failed to open archive (%s)" + ); } - TarArchive::TarArchive(const Path & path) { this->archive = archive_read_new(); @@ -86,43 +89,50 @@ void TarArchive::close() TarArchive::~TarArchive() { - if (this->archive) archive_read_free(this->archive); + if (this->archive) { + archive_read_free(this->archive); + } } static void extract_archive(TarArchive & archive, const Path & destDir) { requireCString(destDir); - int flags = ARCHIVE_EXTRACT_TIME - | ARCHIVE_EXTRACT_SECURE_SYMLINKS - | ARCHIVE_EXTRACT_SECURE_NODOTDOT; + int flags = + ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_SECURE_SYMLINKS | ARCHIVE_EXTRACT_SECURE_NODOTDOT; for (;;) { struct archive_entry * entry; int r = archive_read_next_header(archive.archive, &entry); - if (r == ARCHIVE_EOF) break; + if (r == ARCHIVE_EOF) { + break; + } auto name = archive_entry_pathname(entry); - if (!name) - throw Error("cannot get archive member name: %s", archive_error_string(archive.archive)); - if (r == ARCHIVE_WARN) + if (!name) { + throw Error( + "cannot get archive member name: %s", archive_error_string(archive.archive) + ); + } + if (r == ARCHIVE_WARN) { printTaggedWarning("%1%", Uncolored(archive_error_string(archive.archive))); - else + } else { archive.check(r); + } // NOLINTNEXTLINE(lix-unsafe-c-calls): destDir is checked, name is a c string - archive_entry_copy_pathname(entry, - (destDir + "/" + name).c_str()); + archive_entry_copy_pathname(entry, (destDir + "/" + name).c_str()); // sources can and do contain dirs with no rx bits if (archive_entry_filetype(entry) == AE_IFDIR && (archive_entry_mode(entry) & 0500) != 0500) + { archive_entry_set_mode(entry, archive_entry_mode(entry) | 0500); + } // Patch hardlink path - const char *original_hardlink = archive_entry_hardlink(entry); + const char * original_hardlink = archive_entry_hardlink(entry); if (original_hardlink) { // NOLINTNEXTLINE(lix-unsafe-c-calls): destDir is checked, name is a c string - archive_entry_copy_hardlink(entry, - (destDir + "/" + original_hardlink).c_str()); + archive_entry_copy_hardlink(entry, (destDir + "/" + original_hardlink).c_str()); } archive.check(archive_read_extract(archive.archive, entry, flags)); diff --git a/lix/libutil/tarfile.hh b/lix/libutil/tarfile.hh index 4fc6ce4e4..e9ec0e6b8 100644 --- a/lix/libutil/tarfile.hh +++ b/lix/libutil/tarfile.hh @@ -7,7 +7,8 @@ namespace nix { -struct TarArchive { +struct TarArchive +{ struct archive * archive; Source * source; std::vector buffer;