]>
Commit | Line | Data |
---|---|---|
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 | 30 | int 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 | } |