]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
cmd_fs_usage: Implement --help
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 11 Jun 2023 00:59:22 +0000 (20:59 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 11 Jun 2023 00:59:22 +0000 (20:59 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
bcachefs.c
cmd_fs.c
cmds.h

index 8616d554a14894c5c20c236018ff96465e5cd1d9..a3fe6d8247e4e8969978391c3d0a288d480cbaa6 100644 (file)
@@ -113,8 +113,10 @@ static int fs_cmds(int argc, char *argv[])
 {
        char *cmd = pop_cmd(&argc, argv);
 
-       if (argc < 1)
-               return fs_usage();
+       if (argc < 1) {
+               usage();
+               exit(EXIT_FAILURE);
+       }
        if (!strcmp(cmd, "usage"))
                return cmd_fs_usage(argc, argv);
 
index 007c8d87a64fca68422f2de6f904d2221cfa97f3..d6e2b223630a41a2c22afb2d98fee91b2a4d60db 100644 (file)
--- a/cmd_fs.c
+++ b/cmd_fs.c
@@ -1,4 +1,4 @@
-
+#include <getopt.h>
 #include <stdio.h>
 #include <sys/ioctl.h>
 
@@ -275,30 +275,40 @@ static void fs_usage_to_text(struct printbuf *out, const char *path)
        bcache_fs_close(fs);
 }
 
-int fs_usage(void)
+static void fs_usage_usage(void)
 {
-       puts("bcachefs fs - manage a running filesystem\n"
-            "Usage: bcachefs fs <CMD> [OPTION]... path\n"
-            "\n"
-            "Commands:\n"
-            "  usage                      show disk usage\n"
-            "\n"
-            "Report bugs to <linux-bcachefs@vger.kernel.org>");
-       return 0;
+       puts("bcachefs fs usage - display detailed filesystem usage\n"
+            "Usage: bcachefs fs usage [OPTION]... <mountpoint>\n"
+            "\n"
+            "Options:\n"
+            "  -h, --human-readable              Human readable units\n"
+            "      --help                        Display this help and exit\n"
+            "Report bugs to <linux-bcachefs@vger.kernel.org>");
 }
 
 int cmd_fs_usage(int argc, char *argv[])
 {
+       static const struct option longopts[] = {
+               { "help",               no_argument,            NULL, 'H' },
+               { NULL }
+       };
        bool human_readable = false;
        struct printbuf buf = PRINTBUF;
        char *fs;
        int opt;
 
-       while ((opt = getopt(argc, argv, "h")) != -1)
+       while ((opt = getopt_long(argc, argv, "h",
+                                 longopts, NULL)) != -1)
                switch (opt) {
                case 'h':
                        human_readable = true;
                        break;
+               case 'H':
+                       fs_usage_usage();
+                       exit(EXIT_SUCCESS);
+               default:
+                       fs_usage_usage();
+                       exit(EXIT_FAILURE);
                }
        args_shift(optind);
 
diff --git a/cmds.h b/cmds.h
index 440b1966c21a6a7f633abed61f64ed9f482d70ac..96216b217de7bc1bdf834144be3d67905d4b1655 100644 (file)
--- a/cmds.h
+++ b/cmds.h
@@ -20,7 +20,6 @@ int cmd_run(int argc, char *argv[]);
 int cmd_stop(int argc, char *argv[]);
 #endif
 
-int fs_usage(void);
 int cmd_fs_usage(int argc, char *argv[]);
 
 int device_usage(void);