]> git.ipfire.org Git - thirdparty/util-linux.git/blame - disk-utils/mkfs.c
Imported from util-linux-2.5 tarball.
[thirdparty/util-linux.git] / disk-utils / mkfs.c
CommitLineData
6dbe3af9 1/*
726f69e2
KZ
2 * mkfs A simple generic frontend for the for the mkfs program
3 * under Linux. See the manual page for details.
6dbe3af9 4 *
726f69e2 5 * Usage: mkfs [-V] [-t fstype] [fs-options] device [size]
6dbe3af9
KZ
6 *
7 * Authors: David Engel, <david@ods.com>
8 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
726f69e2 9 * Ron Sommeling, <sommel@sci.kun.nl>
6dbe3af9
KZ
10 */
11
12
6dbe3af9
KZ
13#include <stdio.h>
14#include <stdlib.h>
6dbe3af9
KZ
15#include <unistd.h>
16#include <getopt.h>
726f69e2 17#include <limits.h>
6dbe3af9
KZ
18
19
726f69e2
KZ
20#define VERSION "1.9"
21
6dbe3af9 22#ifndef DEFAULT_FSTYPE
726f69e2 23# define DEFAULT_FSTYPE "minix"
6dbe3af9
KZ
24#endif
25
726f69e2
KZ
26#define SEARCH_PATH "PATH=/sbin:/sbin/fs.d:/sbin/fs:/etc/fs:/etc"
27#define PROGNAME "mkfs.%s"
6dbe3af9 28
6dbe3af9 29
726f69e2 30int main(int argc, char *argv[])
6dbe3af9 31{
726f69e2
KZ
32 char progname[NAME_MAX];
33 char *fstype = NULL;
34 int i, more = 0, verbose = 0;
35
36 /* Check commandline options. */
37 opterr = 0;
38 while ((more == 0) && ((i = getopt(argc, argv, "Vt:")) != EOF))
39 switch (i) {
40 case 'V':
41 verbose++;
42 break;
43 case 't':
44 fstype = optarg;
45 break;
46 default:
47 more = 1;
48 break; /* start of specific arguments */
6dbe3af9 49 }
726f69e2
KZ
50 if (optind == argc) {
51 fprintf(stderr,
52 "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n");
53 return -1;
54 }
55
56 /* If -t wasn't specified, use the default */
57 if (fstype == NULL)
58 fstype = DEFAULT_FSTYPE;
59
60 /* Set PATH and program name */
61 putenv(SEARCH_PATH);
62 sprintf(progname, PROGNAME, fstype);
63 argv[--optind] = progname;
64
65 if (verbose) {
66 puts("mkfs version " VERSION " (" __DATE__ ")");
67 i = optind;
68 while (argv[i])
69 printf("%s ", argv[i++]);
70 printf("\n");
71 if (verbose > 1)
72 return 0;
73 }
74
75 /* Execute the program */
76 execvp(progname, argv+optind);
77 perror(progname);
78 return 1;
6dbe3af9 79}