diff options
Diffstat (limited to 'mkfs')
-rw-r--r-- | mkfs/block.c | 26 | ||||
-rw-r--r-- | mkfs/mkfs.h | 1 | ||||
-rw-r--r-- | mkfs/options.c | 7 |
3 files changed, 29 insertions, 5 deletions
diff --git a/mkfs/block.c b/mkfs/block.c index 76b261d..545df53 100644 --- a/mkfs/block.c +++ b/mkfs/block.c @@ -175,18 +175,36 @@ fail_trunc: goto fail; } -static int find_and_process_files(sqfs_info_t *info, tree_node_t *n) +static void print_name(tree_node_t *n) +{ + if (n->parent != NULL) { + print_name(n->parent); + fputc('/', stdout); + } + + fputs(n->name, stdout); +} + +static int find_and_process_files(sqfs_info_t *info, tree_node_t *n, + bool quiet) { if (S_ISDIR(n->mode)) { for (n = n->data.dir->children; n != NULL; n = n->next) { - if (find_and_process_files(info, n)) + if (find_and_process_files(info, n, quiet)) return -1; } return 0; } - if (S_ISREG(n->mode)) + if (S_ISREG(n->mode)) { + if (!quiet) { + fputs("packing ", stdout); + print_name(n); + fputc('\n', stdout); + } + return process_file(info, n->data.file); + } return 0; } @@ -218,7 +236,7 @@ int write_data_to_image(sqfs_info_t *info) return -1; } - ret = find_and_process_files(info, info->fs.root); + ret = find_and_process_files(info, info->fs.root, info->opt.quiet); free(info->block); free(info->fragment); diff --git a/mkfs/mkfs.h b/mkfs/mkfs.h index 8a867f2..c689848 100644 --- a/mkfs/mkfs.h +++ b/mkfs/mkfs.h @@ -25,6 +25,7 @@ typedef struct { int compressor; int blksz; int devblksz; + bool quiet; const char *infile; const char *outfile; } options_t; diff --git a/mkfs/options.c b/mkfs/options.c index 4d49a9b..0a556eb 100644 --- a/mkfs/options.c +++ b/mkfs/options.c @@ -17,11 +17,12 @@ static struct option long_opts[] = { { "dev-block-size", required_argument, NULL, 'B' }, { "defaults", required_argument, NULL, 'd' }, { "force", no_argument, NULL, 'f' }, + { "quiet", no_argument, NULL, 'q' }, { "version", no_argument, NULL, 'V' }, { "help", no_argument, NULL, 'h' }, }; -static const char *short_opts = "c:b:B:d:fhV"; +static const char *short_opts = "c:b:B:d:fqhV"; enum { DEF_UID = 0, @@ -97,6 +98,7 @@ static const char *help_string = " mtime=<value> 0 if not set.\n" "\n" " --force, -f Overwrite the output file if it exists.\n" +" --quiet, -q Do not print out progress reports.\n" " --help, -h Print help text and exit.\n" " --version, -V Print version information and exit.\n" "\n"; @@ -260,6 +262,9 @@ void process_command_line(options_t *opt, int argc, char **argv) case 'f': opt->outmode = O_WRONLY | O_CREAT | O_TRUNC; break; + case 'q': + opt->quiet = true; + break; case 'h': printf(help_string, __progname, SQFS_DEFAULT_BLOCK_SIZE, SQFS_DEVBLK_SIZE); |