df: Remove support for mounting devices

This was marked deprecated in r329092, over two and a half years ago.
This functionality is also buggy per PR 237368.

PR:		237368
Reviewed by:	brooks, cem, emaste, imp
Differential Revision:	https://reviews.freebsd.org/D27197
This commit is contained in:
Mark Johnston 2020-11-13 16:47:42 +00:00
parent ec26a84475
commit 1740c2dbb6
3 changed files with 5 additions and 77 deletions

View File

@ -10,9 +10,6 @@ SRCS= df.c vfslist.c
CFLAGS+= -I${MOUNT} CFLAGS+= -I${MOUNT}
CFLAGS+= -DMOUNT_CHAR_DEVS
SRCS+= getmntopts.c
LIBADD= xo util LIBADD= xo util
.include <bsd.prog.mk> .include <bsd.prog.mk>

View File

@ -48,6 +48,7 @@ The
.Nm .Nm
utility utility
displays statistics about the amount of free disk space on the specified displays statistics about the amount of free disk space on the specified
mounted
.Ar file system .Ar file system
or on the file system of which or on the file system of which
.Ar file .Ar file

View File

@ -52,16 +52,10 @@ __FBSDID("$FreeBSD$");
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/mount.h> #include <sys/mount.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#ifdef MOUNT_CHAR_DEVS
#include <ufs/ufs/ufsmount.h>
#endif
#include <err.h> #include <err.h>
#include <getopt.h> #include <getopt.h>
#include <libutil.h> #include <libutil.h>
#include <locale.h> #include <locale.h>
#ifdef MOUNT_CHAR_DEVS
#include <mntopts.h>
#endif
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -106,9 +100,6 @@ imax(int a, int b)
static int aflag = 0, cflag, hflag, iflag, kflag, lflag = 0, nflag, Tflag; static int aflag = 0, cflag, hflag, iflag, kflag, lflag = 0, nflag, Tflag;
static int thousands; static int thousands;
#ifdef MOUNT_CHAR_DEVS
static struct ufs_args mdev;
#endif
static const struct option long_options[] = static const struct option long_options[] =
{ {
@ -123,21 +114,11 @@ main(int argc, char *argv[])
struct statfs statfsbuf, totalbuf; struct statfs statfsbuf, totalbuf;
struct maxwidths maxwidths; struct maxwidths maxwidths;
struct statfs *mntbuf; struct statfs *mntbuf;
#ifdef MOUNT_CHAR_DEVS
struct iovec *iov = NULL;
#endif
const char *fstype; const char *fstype;
#ifdef MOUNT_CHAR_DEVS
char *mntpath;
char errmsg[255] = {0};
#endif
char *mntpt; char *mntpt;
const char **vfslist; const char **vfslist;
int i, mntsize; int i, mntsize;
int ch, rv; int ch, rv;
#ifdef MOUNT_CHAR_DEVS
int iovlen = 0;
#endif
fstype = "ufs"; fstype = "ufs";
(void)setlocale(LC_ALL, ""); (void)setlocale(LC_ALL, "");
@ -255,66 +236,15 @@ main(int argc, char *argv[])
continue; continue;
} }
} else if (S_ISCHR(stbuf.st_mode)) { } else if (S_ISCHR(stbuf.st_mode)) {
if ((mntpt = getmntpt(*argv)) == NULL) { mntpt = getmntpt(*argv);
#ifdef MOUNT_CHAR_DEVS
xo_warnx(
"df on unmounted devices is deprecated");
mdev.fspec = *argv;
mntpath = strdup("/tmp/df.XXXXXX");
if (mntpath == NULL) {
xo_warn("strdup failed");
rv = 1;
continue;
}
mntpt = mkdtemp(mntpath);
if (mntpt == NULL) { if (mntpt == NULL) {
xo_warn("mkdtemp(\"%s\") failed", mntpath);
rv = 1;
free(mntpath);
continue;
}
if (iov != NULL)
free_iovec(&iov, &iovlen);
build_iovec_argf(&iov, &iovlen, "fstype", "%s",
fstype);
build_iovec_argf(&iov, &iovlen, "fspath", "%s",
mntpath);
build_iovec_argf(&iov, &iovlen, "from", "%s",
*argv);
build_iovec(&iov, &iovlen, "errmsg", errmsg,
sizeof(errmsg));
if (nmount(iov, iovlen,
MNT_RDONLY|MNT_NOEXEC) < 0) {
if (errmsg[0])
xo_warn("%s: %s", *argv,
errmsg);
else
xo_warn("%s", *argv);
rv = 1;
(void)rmdir(mntpt);
free(mntpath);
continue;
} else if (statfs(mntpt, &statfsbuf) == 0) {
statfsbuf.f_mntonname[0] = '\0';
prtstat(&statfsbuf, &maxwidths);
if (cflag)
addstat(&totalbuf, &statfsbuf);
} else {
xo_warn("%s", *argv);
rv = 1;
}
(void)unmount(mntpt, 0);
(void)rmdir(mntpt);
free(mntpath);
continue;
#else
xo_warnx("%s: not mounted", *argv); xo_warnx("%s: not mounted", *argv);
rv = 1; rv = 1;
continue; continue;
#endif
} }
} else } else {
mntpt = *argv; mntpt = *argv;
}
/* /*
* Statfs does not take a `wait' flag, so we cannot * Statfs does not take a `wait' flag, so we cannot