2 * mkfs A simple generic frontend for the mkfs program
3 * under Linux. See the manual page for details.
5 * Authors: David Engel, <david@ods.com>
6 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
7 * Ron Sommeling, <sommel@sci.kun.nl>
9 * Mon Jul 1 18:52:58 1996: janl@math.uio.no (Nicolai Langfeldt):
10 * Incorporated fix by Jonathan Kamens <jik@annex-1-slip-jik.cam.ov.com>
11 * 1999-02-22 Arkadiusz MiĆkiewicz <misiek@pld.ORG.PL>
12 * - added Native Language Support
17 * This command is deprecated. The utility is in maintenance mode,
18 * meaning we keep them in source tree for backward compatibility
19 * only. Do not waste time making this command better, unless the
20 * fix is about security or other very critical issue.
22 * See Documentation/deprecated.txt for more information.
33 #include "closestream.h"
37 #ifndef DEFAULT_FSTYPE
38 #define DEFAULT_FSTYPE "ext2"
41 static void __attribute__((__noreturn__
)) usage(void)
44 fputs(USAGE_HEADER
, out
);
45 fprintf(out
, _(" %s [options] [-t <type>] [fs-options] <device> [<size>]\n"),
46 program_invocation_short_name
);
48 fputs(USAGE_SEPARATOR
, out
);
49 fputs(_("Make a Linux filesystem.\n"), out
);
51 fputs(USAGE_OPTIONS
, out
);
52 fprintf(out
, _(" -t, --type=<type> filesystem type; when unspecified, ext2 is used\n"));
53 fprintf(out
, _(" fs-options parameters for the real filesystem builder\n"));
54 fprintf(out
, _(" <device> path to the device to be used\n"));
55 fprintf(out
, _(" <size> number of blocks to be used on the device\n"));
56 fprintf(out
, _(" -V, --verbose explain what is being done;\n"
57 " specifying -V more than once will cause a dry-run\n"));
58 printf(USAGE_HELP_OPTIONS(20));
60 printf(USAGE_MAN_TAIL("mkfs(8)"));
64 int main(int argc
, char **argv
)
66 char *progname
; /* name of executable to be called */
68 int i
, more
= 0, verbose
= 0;
70 enum { VERSION_OPTION
= CHAR_MAX
+ 1 };
72 static const struct option longopts
[] = {
73 {"type", required_argument
, NULL
, 't'},
74 {"version", no_argument
, NULL
, VERSION_OPTION
},
75 {"verbose", no_argument
, NULL
, 'V'},
76 {"help", no_argument
, NULL
, 'h'},
80 setlocale(LC_ALL
, "");
81 bindtextdomain(PACKAGE
, LOCALEDIR
);
83 close_stdout_atexit();
85 if (argc
== 2 && !strcmp(argv
[1], "-V"))
86 print_version(EXIT_SUCCESS
);
88 /* Check commandline options. */
91 && ((i
= getopt_long(argc
, argv
, "Vt:h", longopts
, NULL
))
103 print_version(EXIT_SUCCESS
);
107 break; /* start of specific arguments */
109 if (optind
== argc
) {
110 warnx(_("no device specified"));
111 errtryhelp(EXIT_FAILURE
);
114 /* If -t wasn't specified, use the default */
116 fstype
= DEFAULT_FSTYPE
;
118 xasprintf(&progname
, "mkfs.%s", fstype
);
119 argv
[--optind
] = progname
;
122 printf(UTIL_LINUX_VERSION
);
125 printf("%s ", argv
[i
++]);
131 /* Execute the program */
132 execvp(progname
, argv
+ optind
);
133 err(EXIT_FAILURE
, _("failed to execute %s"), progname
);