diff options
Diffstat (limited to 'unpack')
| -rw-r--r-- | unpack/rdsquashfs.c | 9 | ||||
| -rw-r--r-- | unpack/rdsquashfs.h | 1 | ||||
| -rw-r--r-- | unpack/restore_fstree.c | 16 | 
3 files changed, 24 insertions, 2 deletions
| 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] <squashfs-file>\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) { | 
