From: Michael Tremer Date: Fri, 20 May 2022 15:54:49 +0000 (+0000) Subject: archive: Rename files inside the archive (again) X-Git-Tag: 0.9.28~778 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d01571f4e81793ff8b2d7be50eff6230291e9ac;p=pakfire.git archive: Rename files inside the archive (again) Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index e2c6b53a0..4775355c8 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -102,6 +102,32 @@ struct pakfire_archive { int verify; }; +static const char* pakfire_archive_legacy_filename( + struct pakfire_archive* archive, const char* filename) { + // Do nothing for new package formats + if (archive->format >= 6) + return filename; + + const struct files { + const char* file; + const char* legacy; + } filenames[] = { + { "CHKSUMS", "chksums" }, + { "DATA", "data.img" }, + { "FILELIST", "filelist"}, + { "PKGINFO", "info" }, + { NULL, NULL }, + }; + + for (const struct files* f = filenames; f->file; f++) { + if (strcmp(f->file, filename) == 0) + return f->legacy; + } + + // Nothing found + return filename; +} + /* A helper function to close the archive and reset our data structures */ @@ -232,6 +258,9 @@ static int open_archive_and_find(struct pakfire_archive* archive, struct archive if (r) return r; + // Fix filename + filename = pakfire_archive_legacy_filename(archive, filename); + r = find_archive_entry(archive, entry, *a, filename); // Close archive on error @@ -296,7 +325,7 @@ static struct archive* pakfire_archive_open_payload(struct pakfire_archive* arch struct archive_entry* entry = NULL; // Find the payload - int r = open_archive_and_find(archive, a, &entry, "data.img"); + int r = open_archive_and_find(archive, a, &entry, "DATA"); if (r) return NULL; @@ -537,7 +566,7 @@ static int pakfire_archive_parse_legacy_metadata(struct pakfire_archive* archive return 0; // Read the metadata file - int r = open_archive_and_read(archive, "info", &data, &size); + int r = open_archive_and_read(archive, "PKGINFO", &data, &size); if (r) return r; @@ -1033,7 +1062,7 @@ static int pakfire_archive_load_filelist_mtree(struct pakfire_archive* archive) int r; // Find filelist - r = open_archive_and_find(archive, &a, &entry, "filelist"); + r = open_archive_and_find(archive, &a, &entry, "FILELIST"); if (r) { // Ignore if filelist doesn't exist if (errno == ENOENT) @@ -1116,7 +1145,7 @@ static int pakfire_archive_load_filelist_legacy(struct pakfire_archive* archive) size_t size; // Read filelist - int r = open_archive_and_read(archive, "filelist", &data, &size); + int r = open_archive_and_read(archive, "FILELIST", &data, &size); if (r) { if (errno == ENOENT) return 0; @@ -1169,7 +1198,7 @@ static int pakfire_archive_load_checksums_mtree(struct pakfire_archive* archive) int r; // Find chksums - r = open_archive_and_find(archive, &a, &entry, "chksums"); + r = open_archive_and_find(archive, &a, &entry, "FILELIST"); if (r) return r; @@ -1305,7 +1334,7 @@ static int pakfire_archive_load_checksums_legacy(struct pakfire_archive* archive size_t length = 0; // Find chksums - int r = open_archive_and_read(archive, "chksums", &buffer, &length); + int r = open_archive_and_read(archive, "CHKSUMS", &buffer, &length); if (r) return r; diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index c88a393e7..5f7549f06 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -696,7 +696,7 @@ int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { // Write the filelist in mtree format if (packager->files) { - r = pakfire_packager_write_archive(packager, a, mtree, "filelist", + r = pakfire_packager_write_archive(packager, a, mtree, "FILELIST", &packager->mtree, packager->fmtree); if (r) { ERROR(packager->pakfire, "Could not add filelist to archive: %s\n", @@ -705,7 +705,7 @@ int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { } // Write the payload - r = pakfire_packager_write_archive(packager, a, mtree, "data.img", + r = pakfire_packager_write_archive(packager, a, mtree, "DATA", &packager->payload, packager->fpayload); if (r) { ERROR(packager->pakfire, "Could not add payload to archive: %s\n", @@ -732,7 +732,7 @@ int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { } // Write checksums - r = pakfire_packager_write_archive(packager, a, NULL, "chksums", &mtree, fmtree); + r = pakfire_packager_write_archive(packager, a, NULL, "CHKSUMS", &mtree, fmtree); if (r) { ERROR(packager->pakfire, "Could not add checksums to archive: %s\n", archive_error_string(a));