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
*/
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
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;
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;
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)
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;
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;
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;
// 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",
}
// 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",
}
// 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));