]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fsck.minix: introduce long options to the command
authorSami Kerola <kerolasa@iki.fi>
Wed, 24 Jun 2015 08:15:18 +0000 (09:15 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 30 Jul 2015 09:39:17 +0000 (11:39 +0200)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
bash-completion/fsck.minix
disk-utils/fsck.minix.8
disk-utils/fsck.minix.c

index b2b2860da0f97eb4ecb7cfd35bfad7040214f0b7..ac4571e712a3823691c0766e38fafa6857947ca2 100644 (file)
@@ -1,16 +1,16 @@
 _fsck.minix_module()
 {
-       local cur prev OPTS
+       local cur OPTS
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
-       prev="${COMP_WORDS[COMP_CWORD-1]}"
-       case $prev in
-               '-V'|'--version')
+       case $cur in
+               -*)
+                       OPTS="--list --auto --repair --verbose --super --uncleared --force --help --version"
+                       COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
                        return 0
                        ;;
        esac
-       OPTS="-l -a -r -v -s -m -f --version"
-       COMPREPLY=( $(compgen -W "${OPTS[*]} $(lsblk -pnro name)" -- $cur) )
+       COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) )
        return 0
 }
 complete -F _fsck.minix_module fsck.minix
index b672ab72dd9128a1437af6b05f80a80b4b607bfe..84d54bb7d6b2667b6995b538a317e284112ae9bd 100644 (file)
@@ -1,16 +1,15 @@
 .\" Copyright 1992, 1993, 1994 Rickard E. Faith (faith@cs.unc.edu)
 .\" May be freely distributed.
-.TH FSCK.MINIX 8 "July 1996" "util-linux" "System Administration"
+.TH FSCK.MINIX 8 "June 2015" "util-linux" "System Administration"
 .SH NAME
 fsck.minix \- check consistency of Minix filesystem
 .SH SYNOPSIS
 .B fsck.minix
-.RB [ \-larvsmf ]
+[options]
 .I device
 .SH DESCRIPTION
 .B fsck.minix
-performs a consistency check for the Linux MINIX filesystem.  The current
-version supports the 14 character and 30 character filename options.
+performs a consistency check for the Linux MINIX filesystem.
 
 The program
 assumes the filesystem is quiescent.
@@ -51,31 +50,37 @@ on a mounted filesystem (i.e., the root filesystem), make sure nothing is
 writing to the disk, and that no files are "zombies" waiting for deletion.
 .SH OPTIONS
 .TP
-.B \-l
+\fB\-l\fR, \fB\-\-list\fR
 List all filenames.
 .TP
-.B \-r
+\fB\-r\fR, \fB\-\-repair\fR
 Perform interactive repairs.
 .TP
-.B \-a
+\fB\-a\fR, \fB\-\-auto\fR
 Perform automatic repairs.  (This option implies
-.B \-r
+.B \-\-repair
 and serves to answer all of the questions asked with the default.)  Note
 that this can be extremely dangerous in the case of extensive filesystem
 damage.
 .TP
-.B \-v
+\fB\-v\fR, \fB\-\-verbose\fR
 Be verbose.
 .TP
-.B \-s
+\fB\-s\fR, \fB\-\-super\fR
 Output super-block information.
 .TP
-.B \-m
+\fB\-m\fR, \fB\-\-uncleared\fR
 Activate MINIX-like "mode not cleared" warnings.
 .TP
-.B \-f
+\fB\-f\fR, \fB\-\-force\fR
 Force a filesystem check even if the filesystem was marked as valid (this
 marking is done by the kernel when the filesystem is unmounted).
+.TP
+\fB\-V\fR, \fB\-\-version\fR
+Display version information and exit.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display help text and exit.
 .SH "SEE ALSO"
 .BR fsck (8),
 .BR fsck.ext2 (8),
index 57e5be9499dcf59b1cc511ce9ce7d937cf88581c..f73ac4ae2c2d5fd306b59883ef3e5a9397a625fa 100644 (file)
  * unless you can be sure nobody is writing to it (and remember that the
  * kernel can write to it when it searches for files).
  *
- * Usuage: fsck [-larvsm] device
- *     -l for a listing of all the filenames
- *     -a for automatic repairs (not implemented)
- *     -r for repairs (interactive) (not implemented)
- *     -v for verbose (tells how many files)
- *     -s for super-block info
- *     -m for minix-like "mode not cleared" warnings
- *     -f force filesystem check even if filesystem marked as valid
- *
- * The device may be a block device or a image of one, but this isn't
- * enforced (but it's not much fun on a character device :-).
  */
 
 #include <stdio.h>
 #include <mntent.h>
 #include <sys/stat.h>
 #include <signal.h>
+#include <getopt.h>
 
 #include "c.h"
 #include "exitcodes.h"
@@ -181,33 +171,31 @@ fatalsig(int sig) {
        raise(sig);
 }
 
-static void
+static void __attribute__((__noreturn__))
 leave(int status) {
        reset();
        exit(status);
 }
 
 static void
-usage(void) {
-       fputs(USAGE_HEADER, stderr);
-       fprintf(stderr,
-               _(" %s [options] <device>\n"), program_invocation_short_name);
-
-       fputs(USAGE_SEPARATOR, stderr);
-       fputs(_("Check the consistency of a Minix filesystem.\n"), stderr);
-
-       fputs(USAGE_OPTIONS, stderr);
-       fputs(_(" -l  list all filenames\n"), stderr);
-       fputs(_(" -a  automatic repair\n"), stderr);
-       fputs(_(" -r  interactive repair\n"), stderr);
-       fputs(_(" -v  be verbose\n"), stderr);
-       fputs(_(" -s  output super-block information\n"), stderr);
-       fputs(_(" -m  activate mode not cleared warnings\n"), stderr);
-       fputs(_(" -f  force check\n"), stderr);
-       fputs(USAGE_SEPARATOR, stderr);
-       fputs(USAGE_VERSION, stderr);
-       fprintf(stderr, USAGE_MAN_TAIL("fsck.minix(8)"));
-       leave(FSCK_EX_USAGE);
+usage(FILE *out) {
+       fputs(USAGE_HEADER, out);
+       fprintf(out, _(" %s [options] <device>\n"), program_invocation_short_name);
+       fputs(USAGE_SEPARATOR, out);
+       fputs(_("Check the consistency of a Minix filesystem.\n"), out);
+       fputs(USAGE_OPTIONS, out);
+       fputs(_(" -l, --list       list all filenames\n"), out);
+       fputs(_(" -a, --auto       automatic repair\n"), out);
+       fputs(_(" -r, --repair     interactive repair\n"), out);
+       fputs(_(" -v, --verbose    be verbose\n"), out);
+       fputs(_(" -s, --super      output super-block information\n"), out);
+       fputs(_(" -m, --uncleared  activate mode not cleared warnings\n"), out);
+       fputs(_(" -f, --force      force check\n"), out);
+       fputs(USAGE_SEPARATOR, out);
+       fputs(USAGE_HELP, out);
+       fputs(USAGE_VERSION, out);
+       fprintf(out, USAGE_MAN_TAIL("fsck.minix(8)"));
+       leave(out == stderr ? FSCK_EX_USAGE : FSCK_EX_OK);
 }
 
 static void die(const char *fmt, ...)
@@ -1259,62 +1247,70 @@ main(int argc, char **argv) {
        struct termios tmp;
        int count;
        int retcode = FSCK_EX_OK;
+       int i;
+       static const struct option longopts[] = {
+               {"list", no_argument, NULL, 'l'},
+               {"auto", no_argument, NULL, 'a'},
+               {"repair", no_argument, NULL, 'r'},
+               {"verbose", no_argument, NULL, 'v'},
+               {"super", no_argument, NULL, 's'},
+               {"uncleared", no_argument, NULL, 'm'},
+               {"force", no_argument, NULL, 'f'},
+               {"version", no_argument, NULL, 'V'},
+               {"help", no_argument, NULL, 'h'},
+               {NULL, 0, NULL, 0}
+       };
 
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
        atexit(close_stdout);
 
-       if (argc == 2 &&
-           (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) {
-               printf(UTIL_LINUX_VERSION);
-               exit(FSCK_EX_OK);
-       }
-
        if (INODE_SIZE * MINIX_INODES_PER_BLOCK != MINIX_BLOCK_SIZE)
                die(_("bad inode size"));
        if (INODE2_SIZE * MINIX2_INODES_PER_BLOCK != MINIX_BLOCK_SIZE)
                die(_("bad v2 inode size"));
 
-       while (argc-- > 1) {
-               argv++;
-               if (argv[0][0] != '-') {
-                       if (device_name)
-                               usage();
-                       else
-                               device_name = argv[0];
-               } else
-                       while (*++argv[0])
-                               switch (argv[0][0]) {
-                               case 'l':
-                                       list = 1;
-                                       break;
-                               case 'a':
-                                       automatic = 1;
-                                       repair = 1;
-                                       break;
-                               case 'r':
-                                       automatic = 0;
-                                       repair = 1;
-                                       break;
-                               case 'v':
-                                       verbose = 1;
-                                       break;
-                               case 's':
-                                       show = 1;
-                                       break;
-                               case 'm':
-                                       warn_mode = 1;
-                                       break;
-                               case 'f':
-                                       force = 1;
-                                       break;
-                               default:
-                                       usage();
-                               }
-       }
-       if (!device_name)
-               usage();
+       while ((i = getopt_long(argc, argv, "larvsmfVh", longopts, NULL)) != -1)
+               switch (i) {
+               case 'l':
+                       list = 1;
+                       break;
+               case 'a':
+                       automatic = 1;
+                       repair = 1;
+                       break;
+               case 'r':
+                       automatic = 0;
+                       repair = 1;
+                       break;
+               case 'v':
+                       verbose = 1;
+                       break;
+               case 's':
+                       show = 1;
+                       break;
+               case 'm':
+                       warn_mode = 1;
+                       break;
+               case 'f':
+                       force = 1;
+                       break;
+               case 'V':
+                       printf(UTIL_LINUX_VERSION);
+                       return FSCK_EX_OK;
+               case 'h':
+                       usage(stdout);
+               default:
+                       usage(stderr);
+               }
+       argc -= optind;
+       argv += optind;
+       if (0 < argc) {
+               device_name = argv[0];
+       } else
+               usage(stderr);
+
        check_mount();          /* trying to check a mounted filesystem? */
        if (repair && !automatic) {
                if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO))