From: Michael Tremer Date: Wed, 7 Apr 2021 16:18:49 +0000 (+0000) Subject: archive: Drop parsing the filelist X-Git-Tag: 0.9.28~1285^2~401 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b970ec26ba977df90f233bb4d5106bf915848b8;p=pakfire.git archive: Drop parsing the filelist Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index d6c1183ca..26ea5cde0 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -452,29 +452,6 @@ CLEANUP: return r; } -static int pakfire_archive_parse_entry_filelist(PakfireArchive archive, - struct archive* a, struct archive_entry* e) { - char* data; - size_t data_size; - - int r = pakfire_archive_copy_data_to_buffer(archive->pakfire, a, e, &data, &data_size); - if (r) { - return 1; - } - - // Terminate string. - data[data_size] = '\0'; - - if (data_size > 0) { - r = pakfire_filelist_create_from_file(&archive->filelist, archive->pakfire, - data, archive->format); - } - - free(data); - - return r; -} - static int pakfire_archive_parse_entry_checksums(PakfireArchive archive, struct archive* a, struct archive_entry* e) { char* data; @@ -603,14 +580,8 @@ static int pakfire_archive_read_metadata_entry(PakfireArchive archive, struct ar struct archive_entry* e, const char* entry_name) { int ret; - // Parse the filelist - if (strcmp(PAKFIRE_ARCHIVE_FN_FILELIST, entry_name) == 0) { - ret = pakfire_archive_parse_entry_filelist(archive, a, e); - if (ret) - return EINVAL; - // Parse the checksums - } else if (strcmp(PAKFIRE_ARCHIVE_FN_CHECKSUMS, entry_name) == 0) { + if (strcmp(PAKFIRE_ARCHIVE_FN_CHECKSUMS, entry_name) == 0) { ret = pakfire_archive_parse_entry_checksums(archive, a, e); if (ret) return EINVAL; diff --git a/src/libpakfire/filelist.c b/src/libpakfire/filelist.c index 64bcea7d3..2951d85de 100644 --- a/src/libpakfire/filelist.c +++ b/src/libpakfire/filelist.c @@ -162,168 +162,6 @@ PAKFIRE_EXPORT size_t pakfire_filelist_total_filesize(PakfireFilelist list) { return s; } -static int pakfire_filelist_parse_line(PakfireFile* file, Pakfire pakfire, - char* line, unsigned int format) { - unsigned int i = 0; - - // Allocate file - int r = pakfire_file_create(file, pakfire); - if (r) - return r; - - ssize_t size; - mode_t mode; - time_t time; - - unsigned int bytes_read = 0; - - char* word = strtok(line, " "); - while (word) { - if (format >= 4) { - switch (i) { - // type - case 0: - break; - - // size - case 1: - size = atoi(word); - pakfire_file_set_size(*file, size); - break; - - // user - case 2: - pakfire_file_set_user(*file, word); - break; - - // group - case 3: - pakfire_file_set_group(*file, word); - break; - - // mode - case 4: - mode = atoi(word); - pakfire_file_set_mode(*file, mode); - break; - - // time - case 5: - time = atoi(word); - pakfire_file_set_ctime(*file, time); - break; - - // checksum - case 6: - pakfire_file_set_chksum(*file, word); - break; - - // path - #warning handle filenames with spaces - case 8: - pakfire_file_set_path(*file, line + bytes_read); - break; - } - - } else if (format >= 3) { - switch (i) { - // path - case 0: - pakfire_file_set_path(*file, word); - break; - - // type - case 1: - break; - - // size - case 2: - size = atoi(word); - pakfire_file_set_size(*file, size); - break; - - // user - case 3: - pakfire_file_set_user(*file, word); - break; - - // group - case 4: - pakfire_file_set_group(*file, word); - break; - - // mode - case 5: - mode = atoi(word); - pakfire_file_set_mode(*file, mode); - break; - - // time - case 6: - time = atoi(word); - pakfire_file_set_ctime(*file, time); - break; - - // checksum - case 7: - pakfire_file_set_chksum(*file, word); - break; - } - } - - // Count the bytes of the line that have been processed so far - // (Skip all padding spaces) - bytes_read += strlen(word) + 1; - while (*(line + bytes_read) == ' ') - bytes_read += 1; - - word = strtok(NULL, " "); - ++i; - } - - return 0; -} - -int pakfire_filelist_create_from_file(PakfireFilelist* list, Pakfire pakfire, - const char* data, unsigned int format) { - int r = pakfire_filelist_create(list, pakfire); - if (r) - return r; - - PakfireFile file = NULL; - - char* p = (char *)data; - char line[32 * 1024]; - - for (;;) { - line[0] = '\0'; - - pakfire_sgets(line, sizeof(line), &p); - pakfire_remove_trailing_newline(line); - - if (*line == '\0') - break; - - int r = pakfire_filelist_parse_line(&file, pakfire, line, format); - if (r) - goto ERROR; - - // Append file - r = pakfire_filelist_append(*list, file); - if (r) - goto ERROR; - - pakfire_file_unref(file); - } - - return 0; - -ERROR: - pakfire_filelist_unref(*list); - - return 1; -} - static int pakfire_filelist_is_included(const char* path, const char** includes) { // If the includes list is empty, everything is included if (!includes) diff --git a/src/libpakfire/include/pakfire/filelist.h b/src/libpakfire/include/pakfire/filelist.h index dfedccad8..5d2498ff1 100644 --- a/src/libpakfire/include/pakfire/filelist.h +++ b/src/libpakfire/include/pakfire/filelist.h @@ -41,9 +41,6 @@ size_t pakfire_filelist_total_filesize(PakfireFilelist list); #ifdef PAKFIRE_PRIVATE -int pakfire_filelist_create_from_file(PakfireFilelist* list, Pakfire pakfire, - const char* data, unsigned int format); - int pakfire_filelist_scan(PakfireFilelist list, const char* root, const char** includes, const char** excludes);