diff options
author | Denys Vlasenko | 2017-04-12 13:58:40 +0200 |
---|---|---|
committer | Denys Vlasenko | 2017-04-12 13:58:40 +0200 |
commit | 783d57af7bb2b851c16cf87df848e0365e5052da (patch) | |
tree | 71bb23e51b9cb40eac4a6fb831383134c1fc45a0 /miscutils/mountpoint.c | |
parent | ac47a00e2ec398b04c3141cd3434a6e4b95740b1 (diff) | |
download | busybox-783d57af7bb2b851c16cf87df848e0365e5052da.zip busybox-783d57af7bb2b851c16cf87df848e0365e5052da.tar.gz |
Sort some miscutils/ applets into coreutils or util-linux
No code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils/mountpoint.c')
-rw-r--r-- | miscutils/mountpoint.c | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/miscutils/mountpoint.c b/miscutils/mountpoint.c deleted file mode 100644 index 8b9e1d7..0000000 --- a/miscutils/mountpoint.c +++ /dev/null @@ -1,105 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * mountpoint implementation for busybox - * - * Copyright (C) 2005 Bernhard Reutner-Fischer - * - * Licensed under GPLv2 or later, see file LICENSE in this source tree. - * - * Based on sysvinit's mountpoint - */ -//config:config MOUNTPOINT -//config: bool "mountpoint" -//config: default y -//config: help -//config: mountpoint checks if the directory is a mountpoint. - -//applet:IF_MOUNTPOINT(APPLET(mountpoint, BB_DIR_BIN, BB_SUID_DROP)) - -//kbuild:lib-$(CONFIG_MOUNTPOINT) += mountpoint.o - -//usage:#define mountpoint_trivial_usage -//usage: "[-q] <[-dn] DIR | -x DEVICE>" -//usage:#define mountpoint_full_usage "\n\n" -//usage: "Check if the directory is a mountpoint\n" -//usage: "\n -q Quiet" -//usage: "\n -d Print major/minor device number of the filesystem" -//usage: "\n -n Print device name of the filesystem" -//usage: "\n -x Print major/minor device number of the blockdevice" -//usage: -//usage:#define mountpoint_example_usage -//usage: "$ mountpoint /proc\n" -//usage: "/proc is not a mountpoint\n" -//usage: "$ mountpoint /sys\n" -//usage: "/sys is a mountpoint\n" - -#include "libbb.h" - -int mountpoint_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int mountpoint_main(int argc UNUSED_PARAM, char **argv) -{ - struct stat st; - const char *msg; - char *arg; - int rc, opt; - - opt_complementary = "=1"; /* must have one argument */ - opt = getopt32(argv, "qdxn"); -#define OPT_q (1) -#define OPT_d (2) -#define OPT_x (4) -#define OPT_n (8) - arg = argv[optind]; - msg = "%s"; - - rc = (opt & OPT_x) ? stat(arg, &st) : lstat(arg, &st); - if (rc != 0) - goto err; - - if (opt & OPT_x) { - if (S_ISBLK(st.st_mode)) { - printf("%u:%u\n", major(st.st_rdev), - minor(st.st_rdev)); - return EXIT_SUCCESS; - } - errno = 0; /* make perror_msg work as error_msg */ - msg = "%s: not a block device"; - goto err; - } - - errno = ENOTDIR; - if (S_ISDIR(st.st_mode)) { - dev_t st_dev = st.st_dev; - ino_t st_ino = st.st_ino; - char *p = xasprintf("%s/..", arg); - - if (stat(p, &st) == 0) { - //int is_mnt = (st_dev != st.st_dev) || (st_dev == st.st_dev && st_ino == st.st_ino); - int is_not_mnt = (st_dev == st.st_dev) && (st_ino != st.st_ino); - - if (opt & OPT_d) - printf("%u:%u\n", major(st_dev), minor(st_dev)); - if (opt & OPT_n) { - const char *d = find_block_device(arg); - /* name is undefined, but device is mounted -> anonymous superblock! */ - /* happens with btrfs */ - if (!d) { - d = "UNKNOWN"; - /* TODO: iterate /proc/mounts, or /proc/self/mountinfo - * to find out the device name */ - } - printf("%s %s\n", d, arg); - } - if (!(opt & (OPT_q | OPT_d | OPT_n))) - printf("%s is %sa mountpoint\n", arg, is_not_mnt ? "not " : ""); - return is_not_mnt; - } - arg = p; - /* else: stat had set errno, just fall through */ - } - - err: - if (!(opt & OPT_q)) - bb_perror_msg(msg, arg); - return EXIT_FAILURE; -} |