diff options
Diffstat (limited to 'util-linux/mount.c')
-rw-r--r-- | util-linux/mount.c | 86 |
1 files changed, 31 insertions, 55 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c index 6a4c8eb..90c1cc7 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -343,65 +343,44 @@ extern int mount_main(int argc, char **argv) int all = FALSE; int fakeIt = FALSE; int useMtab = TRUE; - int i; int rc = EXIT_FAILURE; int fstabmount = FALSE; + int opt; /* Parse options */ - i = --argc; - argv++; - while (i > 0 && **argv) { - if (**argv == '-') { - char *opt = *argv; - - while (i > 0 && *++opt) - switch (*opt) { - case 'o': - if (--i == 0) { - goto goodbye; - } - parse_mount_options(*(++argv), &flags, string_flags); - break; - case 'r': - flags |= MS_RDONLY; - break; - case 't': - if (--i == 0) { - goto goodbye; - } - filesystemType = *(++argv); - break; - case 'w': - flags &= ~MS_RDONLY; - break; - case 'a': - all = TRUE; - break; - case 'f': - fakeIt = TRUE; - break; + while ((opt = getopt(argc, argv, "o:rt:wafnv")) > 0) { + switch (opt) { + case 'o': + parse_mount_options(optarg, &flags, string_flags); + break; + case 'r': + flags |= MS_RDONLY; + break; + case 't': + filesystemType = optarg; + break; + case 'w': + flags &= ~MS_RDONLY; + break; + case 'a': + all = TRUE; + break; + case 'f': + fakeIt = TRUE; + break; #ifdef BB_FEATURE_MTAB_SUPPORT - case 'n': - useMtab = FALSE; - break; + case 'n': + useMtab = FALSE; + break; #endif - case 'v': - break; /* ignore -v */ - case 'h': - case '-': - goto goodbye; - } - } else { - if (device == NULL) - device = *argv; - else if (directory == NULL) - directory = *argv; - else { - goto goodbye; - } + case 'v': + break; /* ignore -v */ } - i--; - argv++; + } + + if (argv[optind] != NULL) { + device = argv[optind]; + directory = argv[optind + 1]; } if (device == NULL && !all) @@ -469,7 +448,4 @@ singlemount: } goto singlemount; - -goodbye: - show_usage(); } |