Add a preliminary quiet mode as described in
https://gitlab.archlinux.org/archlinux/archiso/-/issues/148

Suggested-by: nl6720 <[email protected]>
Signed-off-by: Gao Xiang <[email protected]>
---
changes since v1:
 - simplify erofs_show_progs().

 lib/config.c |  4 +++-
 mkfs/main.c  | 22 +++++++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/lib/config.c b/lib/config.c
index 6d751715fcf2..363dcc5a0525 100644
--- a/lib/config.c
+++ b/lib/config.c
@@ -16,7 +16,7 @@ void erofs_init_configure(void)
 {
        memset(&cfg, 0, sizeof(cfg));
 
-       cfg.c_dbg_lvl  = 2;
+       cfg.c_dbg_lvl  = EROFS_WARN;
        cfg.c_version  = PACKAGE_VERSION;
        cfg.c_dry_run  = false;
        cfg.c_compr_level_master = -1;
@@ -34,6 +34,8 @@ void erofs_show_config(void)
 {
        const struct erofs_configure *c = &cfg;
 
+       if (c->c_dbg_lvl < EROFS_WARN)
+               return;
        erofs_dump("\tc_version:           [%8s]\n", c->c_version);
        erofs_dump("\tc_dbg_lvl:           [%8d]\n", c->c_dbg_lvl);
        erofs_dump("\tc_dry_run:           [%8d]\n", c->c_dry_run);
diff --git a/mkfs/main.c b/mkfs/main.c
index 1c8dea55f0cd..055d077988e9 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -46,6 +46,7 @@ static struct option long_options[] = {
        {"max-extent-bytes", required_argument, NULL, 9},
        {"compress-hints", required_argument, NULL, 10},
        {"chunksize", required_argument, NULL, 11},
+       {"quiet", no_argument, 0, 12},
 #ifdef WITH_ANDROID
        {"mount-point", required_argument, NULL, 512},
        {"product-out", required_argument, NULL, 513},
@@ -93,6 +94,7 @@ static void usage(void)
              " --force-gid=#         set all file gids to # (# = GID)\n"
              " --help                display this help and exit\n"
              " --max-extent-bytes=#  set maximum decompressed extent size # in 
bytes\n"
+             " --quiet               quiet execution (do not write anything to 
standard output.)\n"
 #ifndef NDEBUG
              " --random-pclusterblks randomize pclusterblks for big pcluster 
(debugging only)\n"
 #endif
@@ -179,6 +181,7 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
 {
        char *endptr;
        int opt, i;
+       bool quiet = false;
 
        while ((opt = getopt_long(argc, argv, "C:E:T:U:d:x:z:",
                                 long_options, NULL)) != -1) {
@@ -342,9 +345,10 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
                                return -EINVAL;
                        }
                        erofs_sb_set_chunked_file();
-                       erofs_warn("EXPERIMENTAL chunked file feature in use. 
Use at your own risk!");
                        break;
-
+               case 12:
+                       quiet = true;
+                       break;
                case 1:
                        usage();
                        exit(0);
@@ -377,6 +381,8 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
                erofs_err("Unexpected argument: %s\n", argv[optind]);
                return -EINVAL;
        }
+       if (quiet)
+               cfg.c_dbg_lvl = EROFS_ERR;
        return 0;
 }
 
@@ -522,6 +528,12 @@ int parse_source_date_epoch(void)
        return 0;
 }
 
+void erofs_show_progs(int argc, char *argv[])
+{
+       if (cfg.c_dbg_lvl >= EROFS_WARN)
+               fprintf(stderr, "%s %s\n", basename(argv[0]), cfg.c_version);
+}
+
 int main(int argc, char **argv)
 {
        int err = 0;
@@ -534,11 +546,10 @@ int main(int argc, char **argv)
        char uuid_str[37] = "not available";
 
        erofs_init_configure();
-       fprintf(stderr, "%s %s\n", basename(argv[0]), cfg.c_version);
-
        erofs_mkfs_default_options();
 
        err = mkfs_parse_options_cfg(argc, argv);
+       erofs_show_progs(argc, argv);
        if (err) {
                if (err == -EINVAL)
                        usage();
@@ -593,8 +604,9 @@ int main(int argc, char **argv)
                return 1;
        }
 #endif
-
        erofs_show_config();
+       if (erofs_sb_has_chunked_file())
+               erofs_warn("EXPERIMENTAL chunked file feature in use. Use at 
your own risk!");
        erofs_set_fs_root(cfg.c_src_path);
 #ifndef NDEBUG
        if (cfg.c_random_pclusterblks)
-- 
2.24.4

Reply via email to