]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - disk-utils/mkfs.minix.c
whereis: use xstrncpy()
[thirdparty/util-linux.git] / disk-utils / mkfs.minix.c
index d4a576f838105c9282689b4a6ca240b9fcfe9d45..ed03f4a42d04a989c9a08242d7c522bc884c96ce 100644 (file)
@@ -77,6 +77,8 @@
 #include "all-io.h"
 #include "closestream.h"
 #include "ismounted.h"
+
+#define XALLOC_EXIT_CODE MKFS_EX_ERROR
 #include "xalloc.h"
 
 #define MINIX_ROOT_INO 1
@@ -129,8 +131,9 @@ static char *zone_map;
 #define mark_zone(x) (setbit(zone_map,(x)-get_first_zone()+1))
 #define unmark_zone(x) (clrbit(zone_map,(x)-get_first_zone()+1))
 
-static void __attribute__((__noreturn__)) usage(FILE *out)
+static void __attribute__((__noreturn__)) usage(void)
 {
+       FILE *out = stdout;
        fputs(USAGE_HEADER, out);
        fprintf(out, _(" %s [options] /dev/name [blocks]\n"), program_invocation_short_name);
        fputs(USAGE_OPTIONS, out);
@@ -142,10 +145,9 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
        fputs(_(" -c, --check             check the device for bad blocks\n"), out);
        fputs(_(" -l, --badblocks <file>  list of bad blocks from file\n"), out);
        fputs(USAGE_SEPARATOR, out);
-       fputs(USAGE_HELP, out);
-       fputs(USAGE_VERSION, out);
-       fprintf(out, USAGE_MAN_TAIL("mkfs.minix(8)"));
-       exit(out == stderr ? MKFS_EX_USAGE : MKFS_EX_OK);
+       printf(USAGE_HELP_OPTIONS(25));
+       printf(USAGE_MAN_TAIL("mkfs.minix(8)"));
+       exit(MKFS_EX_OK);
 }
 
 #ifdef TEST_SCRIPT
@@ -534,9 +536,9 @@ static void setup_tables(const struct fs_control *ctl) {
        if (fs_version == 3)
                Super3.s_ninodes = inodes;
        else {
-               Super.s_ninodes = inodes;
                if (inodes > MINIX_MAX_INODES)
                        inodes = MINIX_MAX_INODES;
+               Super.s_ninodes = inodes;
        }
        super_set_map_blocks(ctl, inodes);
        if (MINIX_MAX_INODES < first_zone_data())
@@ -669,15 +671,11 @@ static int find_super_magic(const struct fs_control *ctl)
        case 1:
                if (ctl->fs_namelen == 14)
                        return MINIX_SUPER_MAGIC;
-               else
-                       return MINIX_SUPER_MAGIC2;
-               break;
+               return MINIX_SUPER_MAGIC2;
        case 2:
                if (ctl->fs_namelen == 14)
                        return MINIX2_SUPER_MAGIC;
-               else
-                       return MINIX2_SUPER_MAGIC2;
-               break;
+               return MINIX2_SUPER_MAGIC2;
        case 3:
                return MINIX3_SUPER_MAGIC;
        default:
@@ -687,7 +685,7 @@ static int find_super_magic(const struct fs_control *ctl)
 
 static void determine_device_blocks(struct fs_control *ctl, const struct stat *statbuf)
 {
-       unsigned long long dev_blocks;
+       unsigned long long dev_blocks = 0;
 
        if (S_ISBLK(statbuf->st_mode)) {
                int sectorsize;
@@ -760,7 +758,9 @@ int main(int argc, char ** argv)
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
-       atexit(close_stdout);
+       close_stdout_atexit();
+
+       strutils_set_exitcode(MKFS_EX_USAGE);
 
        while ((i = getopt_long(argc, argv, "1v23n:i:cl:Vh", longopts, NULL)) != -1)
                switch (i) {
@@ -792,12 +792,11 @@ int main(int argc, char ** argv)
                        listfile = optarg;
                        break;
                case 'V':
-                       printf(UTIL_LINUX_VERSION);
-                       return MKFS_EX_OK;
+                       print_version(MKFS_EX_OK);
                case 'h':
-                       usage(stdout);
+                       usage();
                default:
-                       usage(stderr);
+                       errtryhelp(MKFS_EX_USAGE);
                }
        argc -= optind;
        argv += optind;
@@ -810,7 +809,8 @@ int main(int argc, char ** argv)
                ctl.fs_blocks = strtoul_or_err(argv[0], _("failed to parse number of blocks"));
 
        if (!ctl.device_name) {
-               usage(stderr);
+               warnx(_("no device specified"));
+               errtryhelp(MKFS_EX_USAGE);
        }
        check_user_instructions(&ctl);
        if (is_mounted(ctl.device_name))