From da5656a8a696863e0d9941091c09c75b03a6070b Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sat, 4 May 2019 23:30:58 +0200 Subject: Print out what we are doing on the way and options to keep quiet Signed-off-by: David Oberhollenzer --- unpack/rdsquashfs.c | 9 +++++++-- unpack/rdsquashfs.h | 1 + unpack/restore_fstree.c | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) (limited to 'unpack') diff --git a/unpack/rdsquashfs.c b/unpack/rdsquashfs.c index c286a78..f09847d 100644 --- a/unpack/rdsquashfs.c +++ b/unpack/rdsquashfs.c @@ -20,11 +20,12 @@ static struct option long_opts[] = { { "no-empty-dir", no_argument, NULL, 'E' }, { "chmod", no_argument, NULL, 'C' }, { "chown", no_argument, NULL, 'O' }, + { "quiet", no_argument, NULL, 'q' }, { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, }; -static const char *short_opts = "l:c:u:p:DSFLCOEhV"; +static const char *short_opts = "l:c:u:p:DSFLCOEqhV"; static const char *help_string = "Usage: %s [OPTIONS] \n" @@ -48,7 +49,8 @@ static const char *help_string = " --chmod, -C Change permission flags of unpacked files to those\n" " store in the squashfs image.\n" " --chown, -O Change ownership of unpacked files to the UID/GID\n" -" set in the squashfs iamge.\n" +" set in the squashfs image.\n" +" --quiet, -q Do not print out progress while unpacking.\n" "\n" " --help, -h Print help text and exit.\n" " --version, -V Print version information and exit.\n" @@ -201,6 +203,9 @@ int main(int argc, char **argv) case 'p': cmdpath = get_path(cmdpath, optarg); break; + case 'q': + info.flags |= UNPACK_QUIET; + break; case 'h': printf(help_string, __progname); status = EXIT_SUCCESS; diff --git a/unpack/rdsquashfs.h b/unpack/rdsquashfs.h index c06afb2..a9d5bdf 100644 --- a/unpack/rdsquashfs.h +++ b/unpack/rdsquashfs.h @@ -27,6 +27,7 @@ enum UNPACK_FLAGS { UNPACK_NO_EMPTY = 0x10, UNPACK_CHMOD = 0x20, UNPACK_CHOWN = 0x40, + UNPACK_QUIET = 0x80, }; typedef struct { diff --git a/unpack/restore_fstree.c b/unpack/restore_fstree.c index c06cd2b..c1320ea 100644 --- a/unpack/restore_fstree.c +++ b/unpack/restore_fstree.c @@ -1,10 +1,26 @@ /* SPDX-License-Identifier: GPL-3.0-or-later */ #include "rdsquashfs.h" +static void print_name(tree_node_t *n) +{ + if (n->parent != NULL) { + print_name(n->parent); + fputc('/', stdout); + } + + fputs(n->name, stdout); +} + static int create_node(int dirfd, tree_node_t *n, unsqfs_info_t *info) { int fd; + if (!(info->flags & UNPACK_QUIET)) { + fputs("unpacking ", stdout); + print_name(n); + fputc('\n', stdout); + } + switch (n->mode & S_IFMT) { case S_IFDIR: if (mkdirat(dirfd, n->name, 0755) && errno != EEXIST) { -- cgit v1.2.3