return 0;
}
-static int pakfire_packager_write_filelist(struct pakfire_packager* packager,
- struct archive* a) {
- char* buffer = NULL;
- int r = 1;
-
- for (unsigned int i = 0; i < pakfire_filelist_size(packager->filelist); i++) {
- PakfireFile file = pakfire_filelist_get(packager->filelist, i);
-
- const char* chksum = pakfire_file_get_chksum(file);
-
- asprintf(&buffer,
- "%s%c %-10zu %-10s %-10s %-6d %-12ld %s %s %s\n",
- (buffer) ? buffer : "",
- '-',
- pakfire_file_get_size(file),
- pakfire_file_get_user(file),
- pakfire_file_get_group(file),
- pakfire_file_get_mode(file),
- pakfire_file_get_ctime(file),
- (chksum) ? chksum : "-",
- "-", // XXX capabilities
- pakfire_file_get_path(file)
- );
-
- pakfire_file_unref(file);
- }
-
- // Create a new file entry
- struct archive_entry* entry = archive_entry_new();
- if (!entry)
- goto ERROR;
-
- // Set filename
- archive_entry_set_pathname(entry, PAKFIRE_ARCHIVE_FN_FILELIST);
-
- // This is a regular file
- archive_entry_set_filetype(entry, AE_IFREG);
- archive_entry_set_perm(entry, 0644);
-
- // Set length
- archive_entry_set_size(entry, strlen(buffer));
-
- // This is the end of the header
- r = archive_write_header(a, entry);
- if (r) {
- ERROR(packager->pakfire, "Error writing header: %s\n", archive_error_string(a));
- goto ERROR;
- }
-
- // Write content
- r = archive_write_data(a, buffer, strlen(buffer));
- if (r < 0) {
- ERROR(packager->pakfire, "Error writing data: %s\n", archive_error_string(a));
- goto ERROR;
- }
-
- // Success
- r = 0;
-
-ERROR:
- if (buffer)
- free(buffer);
-
- return r;
-}
-
static int pakfire_packager_write_payload(struct pakfire_packager* packager,
struct archive* a) {
struct stat st;
if (r)
goto ERROR;
- // Write the filelist
- r = pakfire_packager_write_filelist(packager, a);
- if (r)
- goto ERROR;
-
// Write the payload
r = pakfire_packager_write_payload(packager, a);
if (r)