From 2fcf04928a0eaf7332503753a4866a0f2031a50e Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Tue, 23 Jul 2019 16:46:42 +0200 Subject: rdsquashfs: seperate creating of the hierarchy, unpacking and chmod/chown Signed-off-by: David Oberhollenzer --- unpack/fill_files.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 unpack/fill_files.c (limited to 'unpack/fill_files.c') diff --git a/unpack/fill_files.c b/unpack/fill_files.c new file mode 100644 index 0000000..6584699 --- /dev/null +++ b/unpack/fill_files.c @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +#include "config.h" +#include "rdsquashfs.h" + +static int fill_files(data_reader_t *data, file_info_t *list, int flags) +{ + file_info_t *fi; + int fd; + + for (fi = list; fi != NULL; fi = fi->next) { + if (fi->input_file == NULL) + continue; + + fd = open(fi->input_file, O_WRONLY); + if (fd < 0) { + fprintf(stderr, "unpacking %s: %s\n", + fi->input_file, strerror(errno)); + return -1; + } + + if (!(flags & UNPACK_QUIET)) + printf("unpacking %s\n", fi->input_file); + + if (data_reader_dump_file(data, fi, fd, + (flags & UNPACK_NO_SPARSE) == 0)) { + close(fd); + return -1; + } + + close(fd); + } + + return 0; +} + +int fill_unpacked_files(fstree_t *fs, data_reader_t *data, int flags) +{ + return fill_files(data, fs->files, flags); +} -- cgit v1.2.3