int main(int argc, char **argv) { int c; struct mountpoint_control ctl = { NULL }; static const struct option longopts[] = { { "quiet", no_argument, NULL, 'q' }, { "fs-devno", no_argument, NULL, 'd' }, { "devno", no_argument, NULL, 'x' }, { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); atexit(close_stdout); mnt_init_debug(0); while ((c = getopt_long(argc, argv, "qdxhV", longopts, NULL)) != -1) { switch(c) { case 'q': ctl.quiet = 1; break; case 'd': ctl.fs_devno = 1; break; case 'x': ctl.dev_devno = 1; break; case 'h': usage(); break; case 'V': printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; default: errtryhelp(EXIT_FAILURE); } } if (optind + 1 != argc) { warnx(_("bad usage")); errtryhelp(EXIT_FAILURE); } ctl.path = argv[optind]; if (stat(ctl.path, &ctl.st)) { if (!ctl.quiet) err(EXIT_FAILURE, "%s", ctl.path); return EXIT_FAILURE; } if (ctl.dev_devno) return print_devno(&ctl) ? EXIT_FAILURE : EXIT_SUCCESS; if (dir_to_device(&ctl)) { if (!ctl.quiet) printf(_("%s is not a mountpoint\n"), ctl.path); return EXIT_FAILURE; } if (ctl.fs_devno) printf("%u:%u\n", major(ctl.dev), minor(ctl.dev)); else if (!ctl.quiet) printf(_("%s is a mountpoint\n"), ctl.path); return EXIT_SUCCESS; }
int main(int argc, char **argv) { int c, fs_devno = 0, dev_devno = 0, rc = 0; char *spec; struct stat st; static const struct option longopts[] = { { "quiet", 0, 0, 'q' }, { "fs-devno", 0, 0, 'd' }, { "devno", 0, 0, 'x' }, { "help", 0, 0, 'h' }, { "version", 0, 0, 'V' }, { NULL, 0, 0, 0 } }; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); atexit(close_stdout); mnt_init_debug(0); while ((c = getopt_long(argc, argv, "qdxhV", longopts, NULL)) != -1) { switch(c) { case 'q': quiet = 1; break; case 'd': fs_devno = 1; break; case 'x': dev_devno = 1; break; case 'h': usage(stdout); break; case 'V': printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; default: usage(stderr); break; } } if (optind + 1 != argc) usage(stderr); spec = argv[optind++]; if (stat(spec, &st)) { if (!quiet) err(EXIT_FAILURE, "%s", spec); return EXIT_FAILURE; } if (dev_devno) rc = print_devno(spec, &st); else { dev_t src; if (!S_ISDIR(st.st_mode)) { if (!quiet) errx(EXIT_FAILURE, _("%s: not a directory"), spec); return EXIT_FAILURE; } if ( dir_to_device(spec, &src)) { if (!quiet) printf(_("%s is not a mountpoint\n"), spec); return EXIT_FAILURE; } if (fs_devno) printf("%u:%u\n", major(src), minor(src)); else if (!quiet) printf(_("%s is a mountpoint\n"), spec); } return rc ? EXIT_FAILURE : EXIT_SUCCESS; }