Implement -x option for mountpoint(1)

This commit is contained in:
sin 2013-09-03 13:24:08 +01:00
parent 163a17a835
commit fc7c1c0a88

View File

@ -11,14 +11,14 @@
static void static void
usage(void) usage(void)
{ {
eprintf("usage: %s [-dq] target\n", argv0); eprintf("usage: %s [-dqx] target\n", argv0);
} }
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
int i; int i;
int qflag = 0, dflag = 0; int qflag = 0, dflag = 0, xflag = 0;
struct mntinfo *minfo = NULL; struct mntinfo *minfo = NULL;
int siz; int siz;
int ret = 0; int ret = 0;
@ -31,6 +31,9 @@ main(int argc, char *argv[])
case 'd': case 'd':
dflag = 1; dflag = 1;
break; break;
case 'x':
xflag = 1;
break;
default: default:
usage(); usage();
} ARGEND; } ARGEND;
@ -41,8 +44,17 @@ main(int argc, char *argv[])
if (stat(argv[0], &st1) < 0) if (stat(argv[0], &st1) < 0)
eprintf("stat %s:", argv[0]); eprintf("stat %s:", argv[0]);
if (xflag) {
if (!S_ISBLK(st1.st_mode))
eprintf("stat: %s: not a block device\n",
argv[0]);
printf("%u:%u\n", major(st1.st_rdev),
minor(st1.st_rdev));
return 0;
}
if (!S_ISDIR(st1.st_mode)) if (!S_ISDIR(st1.st_mode))
eprintf("lstat %s: not a directory\n", argv[0]); eprintf("stat %s: not a directory\n", argv[0]);
if (dflag) { if (dflag) {
printf("%u:%u\n", major(st1.st_dev), printf("%u:%u\n", major(st1.st_dev),