From b45850388ea5505f4fd50cd659abe2f02aeca0b5 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Fri, 16 Aug 2019 19:52:42 +0200 Subject: cleanup: internalize deduplication list in data_writer This change removes the need for passing a list of files around for deduplication. Also the deduplication code no longer needs to worry about order, since the file being deduplicated is only added after deduplication is done. Signed-off-by: David Oberhollenzer --- mkfs/mkfs.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) (limited to 'mkfs') diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index 8ee2268..3dc9efb 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -6,26 +6,6 @@ */ #include "mkfs.h" -static int process_file(data_writer_t *data, file_info_t *fi, bool quiet, - file_info_t *list) -{ - int ret, infd; - - if (!quiet) - printf("packing %s\n", fi->input_file); - - infd = open(fi->input_file, O_RDONLY); - if (infd < 0) { - perror(fi->input_file); - return -1; - } - - ret = write_data_from_fd(data, fi, infd, 0, list); - - close(infd); - return ret; -} - static int set_working_dir(options_t *opt) { const char *ptr; @@ -51,12 +31,27 @@ static int restore_working_dir(options_t *opt) static int pack_files(data_writer_t *data, fstree_t *fs, options_t *opt) { file_info_t *fi; + int ret, infd; if (set_working_dir(opt)) return -1; - for (fi = fs->files; fi != NULL; fi = fi->next) { - if (process_file(data, fi, opt->quiet, fs->files)) + while (fs->files != NULL) { + fi = fs->files; + fs->files = fi->next; + + if (!opt->quiet) + printf("packing %s\n", fi->input_file); + + infd = open(fi->input_file, O_RDONLY); + if (infd < 0) { + perror(fi->input_file); + return -1; + } + + ret = write_data_from_fd(data, fi, infd, 0); + close(infd); + if (ret) return -1; } -- cgit v1.2.3