From dde996756c7d1f5568b1549fab5f8b905e396089 Mon Sep 17 00:00:00 2001 From: deraadt Date: Thu, 25 Apr 1996 11:04:01 +0000 Subject: [PATCH] permit quotas to work on mfs; problem reported by rdante@pnet.net --- sbin/quotacheck/quotacheck.c | 3 ++- usr.bin/quota/quota.c | 8 ++++---- usr.sbin/edquota/edquota.c | 5 +++-- usr.sbin/quot/quot.c | 6 ++++-- usr.sbin/quotaon/quotaon.c | 15 +++++++++++---- usr.sbin/repquota/repquota.c | 5 +++-- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/sbin/quotacheck/quotacheck.c b/sbin/quotacheck/quotacheck.c index 3c1e3fca961..08db8485bc9 100644 --- a/sbin/quotacheck/quotacheck.c +++ b/sbin/quotacheck/quotacheck.c @@ -223,7 +223,8 @@ needchk(fs) if (strcmp(fs->fs_type, FSTAB_RW)) return (NULL); if (strcmp(fs->fs_vfstype, "ffs") && - strcmp(fs->fs_vfstype, "ufs")) + strcmp(fs->fs_vfstype, "ufs") && + strcmp(fs->fs_vfstype, "mfs")) return (NULL); if ((qnp = malloc(sizeof(*qnp))) == NULL) err(1, "%s", strerror(errno)); diff --git a/usr.bin/quota/quota.c b/usr.bin/quota/quota.c index 6ec5d5f9b5a..c278849c676 100644 --- a/usr.bin/quota/quota.c +++ b/usr.bin/quota/quota.c @@ -42,7 +42,7 @@ static char copyright[] = #ifndef lint /*static char sccsid[] = "from: @(#)quota.c 8.1 (Berkeley) 6/6/93";*/ -static char rcsid[] = "$Id: quota.c,v 1.3 1996/04/21 23:43:38 deraadt Exp $"; +static char rcsid[] = "$Id: quota.c,v 1.4 1996/04/25 11:04:06 deraadt Exp $"; #endif /* not lint */ /* @@ -452,9 +452,9 @@ getprivs(id, quotatype) if (strncmp(fst[i].f_fstypename, "nfs", MFSNAMELEN) == 0) { if (getnfsquota(&fst[i], NULL, qup, id, quotatype) == 0) continue; - } else if ((strncmp(fst[i].f_fstypename, "ffs", - MFSNAMELEN) == 0) || (strncmp(fst[i].f_fstypename, "ufs", - MFSNAMELEN) == 0)) { + } else if (!strncmp(fst[i].f_fstypename, "ffs", MFSNAMELEN) || + !strncmp(fst[i].f_fstypename, "ufs", MFSNAMELEN) || + !strncmp(fst[i].f_fstypename, "mfs", MFSNAMELEN)) { /* * XXX * UFS filesystems must be in /etc/fstab, and must diff --git a/usr.sbin/edquota/edquota.c b/usr.sbin/edquota/edquota.c index 454ac052562..a78afda4325 100644 --- a/usr.sbin/edquota/edquota.c +++ b/usr.sbin/edquota/edquota.c @@ -42,7 +42,7 @@ static char copyright[] = #ifndef lint /*static char sccsid[] = "from: @(#)edquota.c 8.1 (Berkeley) 6/6/93";*/ -static char *rcsid = "$Id: edquota.c,v 1.5 1996/04/21 23:40:32 deraadt Exp $"; +static char *rcsid = "$Id: edquota.c,v 1.6 1996/04/25 11:04:08 deraadt Exp $"; #endif /* not lint */ /* @@ -223,7 +223,8 @@ getprivs(id, quotatype) qcmd = QCMD(Q_GETQUOTA, quotatype); while (fs = getfsent()) { if (strcmp(fs->fs_vfstype, "ffs") && - strcmp(fs->fs_vfstype, "ufs")) + strcmp(fs->fs_vfstype, "ufs") && + strcmp(fs->fs_vfstype, "mfs")) continue; if (!hasquota(fs, quotatype, &qfpathname)) continue; diff --git a/usr.sbin/quot/quot.c b/usr.sbin/quot/quot.c index 2c0b6f583f0..63b442b761d 100644 --- a/usr.sbin/quot/quot.c +++ b/usr.sbin/quot/quot.c @@ -30,7 +30,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: quot.c,v 1.2 1995/11/06 21:40:54 deraadt Exp $"; +static char rcsid[] = "$Id: quot.c,v 1.3 1996/04/25 11:04:11 deraadt Exp $"; #endif /* not lint */ #include @@ -567,7 +567,9 @@ int main(argc,argv) if (all) { cnt = getmntinfo(&mp,MNT_NOWAIT); for (; --cnt >= 0; mp++) { - if (!strncmp(mp->f_fstypename, MOUNT_FFS, MFSNAMELEN)) { + if (!strncmp(mp->f_fstypename, MOUNT_FFS, MFSNAMELEN) || + !strncmp(mp->f_fstypename, MOUNT_MFS, MFSNAMELEN) || + !strncmp(mp->f_fstypename, "ufs", MFSNAMELEN)) { if (nm = strrchr(mp->f_mntfromname,'/')) { sprintf(dev,"/dev/r%s",nm + 1); nm = dev; diff --git a/usr.sbin/quotaon/quotaon.c b/usr.sbin/quotaon/quotaon.c index bb0fdc0aeb0..5dd2769331c 100644 --- a/usr.sbin/quotaon/quotaon.c +++ b/usr.sbin/quotaon/quotaon.c @@ -42,7 +42,7 @@ static char copyright[] = #ifndef lint /*static char sccsid[] = "from: @(#)quotaon.c 8.1 (Berkeley) 6/6/93";*/ -static char *rcsid = "$Id: quotaon.c,v 1.5 1996/04/21 23:41:36 deraadt Exp $"; +static char *rcsid = "$Id: quotaon.c,v 1.6 1996/04/25 11:04:13 deraadt Exp $"; #endif /* not lint */ /* @@ -117,7 +117,8 @@ main(argc, argv) if (strcmp(fs->fs_type, FSTAB_RW)) continue; if (strcmp(fs->fs_vfstype, "ffs") && - strcmp(fs->fs_vfstype, "ufs")) + strcmp(fs->fs_vfstype, "ufs") && + strcmp(fs->fs_vfstype, "mfs")) continue; if (aflag) { if (gflag && hasquota(fs, GRPQUOTA, &qfnp)) @@ -236,6 +237,7 @@ hasquota(fs, type, qfnamep) /* * Verify file system is mounted and not readonly. + * MFS is special -- it puts "mfs:" in the kernel's mount table */ readonly(fs) register struct fstab *fs; @@ -245,8 +247,13 @@ readonly(fs) if (statfs(fs->fs_file, &fsbuf) < 0 || strcmp(fsbuf.f_mntonname, fs->fs_file) || strcmp(fsbuf.f_mntfromname, fs->fs_spec)) { - printf("%s: not mounted\n", fs->fs_file); - return (1); + if (strcmp(fs->fs_file, "mfs") || + memcmp(fsbuf.f_mntfromname, "mfs:", sizeof("mfs:")-1)) + ; + else { + printf("%s: not mounted\n", fs->fs_file); + return (1); + } } if (fsbuf.f_flags & MNT_RDONLY) { printf("%s: mounted read-only\n", fs->fs_file); diff --git a/usr.sbin/repquota/repquota.c b/usr.sbin/repquota/repquota.c index ec07841efe4..7db5c19acb6 100644 --- a/usr.sbin/repquota/repquota.c +++ b/usr.sbin/repquota/repquota.c @@ -42,7 +42,7 @@ static char copyright[] = #ifndef lint /*static char sccsid[] = "from: @(#)repquota.c 8.1 (Berkeley) 6/6/93";*/ -static char *rcsid = "$Id: repquota.c,v 1.5 1996/04/21 23:41:45 deraadt Exp $"; +static char *rcsid = "$Id: repquota.c,v 1.6 1996/04/25 11:04:14 deraadt Exp $"; #endif /* not lint */ /* @@ -133,7 +133,8 @@ main(argc, argv) setfsent(); while ((fs = getfsent()) != NULL) { if (strcmp(fs->fs_vfstype, "ffs") && - strcmp(fs->fs_vfstype, "ufs")) + strcmp(fs->fs_vfstype, "ufs") && + strcmp(fs->fs_vfstype, "mfs")) continue; if (aflag) { if (gflag && hasquota(fs, GRPQUOTA, &qfnp)) -- 2.20.1