Module Name:    src
Committed By:   dholland
Date:           Mon Jan  9 15:42:37 UTC 2012

Modified Files:
        src/usr.sbin/repquota: repquota.c

Log Message:
Remove the explicit fallback direct file access code from repquota and
rely on libquota.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/usr.sbin/repquota/repquota.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/repquota/repquota.c
diff -u src/usr.sbin/repquota/repquota.c:1.36 src/usr.sbin/repquota/repquota.c:1.37
--- src/usr.sbin/repquota/repquota.c:1.36	Mon Jan  9 15:40:47 2012
+++ src/usr.sbin/repquota/repquota.c	Mon Jan  9 15:42:37 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: repquota.c,v 1.36 2012/01/09 15:40:47 dholland Exp $	*/
+/*	$NetBSD: repquota.c,v 1.37 2012/01/09 15:42:37 dholland Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
 #if 0
 static char sccsid[] = "@(#)repquota.c	8.2 (Berkeley) 11/22/94";
 #else
-__RCSID("$NetBSD: repquota.c,v 1.36 2012/01/09 15:40:47 dholland Exp $");
+__RCSID("$NetBSD: repquota.c,v 1.37 2012/01/09 15:42:37 dholland Exp $");
 #endif
 #endif /* not lint */
 
@@ -65,11 +65,10 @@ __RCSID("$NetBSD: repquota.c,v 1.36 2012
 #include <unistd.h>
 
 #include <quota/quota.h>
-#include <ufs/ufs/quota1.h>
+#include <quota/quotaprop.h>
 #include <quota.h>
 
 #include "printquota.h"
-#include "quotautil.h"
 
 struct fileusage {
 	struct	fileusage *fu_next;
@@ -95,11 +94,10 @@ static struct fileusage *addid(uint32_t,
 static struct fileusage *lookup(uint32_t, int);
 static struct fileusage *qremove(uint32_t, int);
 static int	repquota(struct quotahandle *, int);
-static int	repquota2(struct quotahandle *, int);
-static int	repquota1(struct quotahandle *, int);
 static void	usage(void) __attribute__((__noreturn__));
 static void	printquotas(int, struct quotahandle *);
 static void	exportquotas(void);
+static int	oneof(const char *, char *[], int cnt);
 
 int
 main(int argc, char **argv)
@@ -207,14 +205,6 @@ usage(void)
 static int
 repquota(struct quotahandle *qh, int idtype)
 {
-	if (repquota2(qh, idtype) != 0)
-		return repquota1(qh, idtype);
-	return 0;
-}
-
-static int
-repquota2(struct quotahandle *qh, int idtype)
-{
 	struct quotacursor *qc;
 	struct quotakey qk;
 	struct quotaval qv;
@@ -263,72 +253,6 @@ repquota2(struct quotahandle *qh, int id
 	return 0;
 }
 
-static int
-repquota1(struct quotahandle *qh, int idtype)
-{
-	char qfpathname[MAXPATHLEN];
-	struct fstab *fs;
-	struct fileusage *fup;
-	FILE *qf;
-	uint32_t id;
-	struct dqblk dqbuf;
-	time_t bgrace = MAX_DQ_TIME, igrace = MAX_DQ_TIME;
-	int type = ufsclass2qtype(idtype);
-	const char *mountpoint;
-
-	mountpoint = quota_getmountpoint(qh);
-
-	setfsent();
-	while ((fs = getfsent()) != NULL) {
-		if (strcmp(fs->fs_vfstype, "ffs") == 0 &&
-		   strcmp(fs->fs_file, mountpoint) == 0)
-			break;
-	}
-	endfsent();
-	if (fs == NULL) {
-		warnx("%s not found in fstab", mountpoint);
-		return 1;
-	}
-	if (!hasquota(qfpathname, sizeof(qfpathname), fs, type))
-		return 0;
-		
-	if ((qf = fopen(qfpathname, "r")) == NULL) {
-		warn("Cannot open `%s'", qfpathname);
-		return 1;
-	}
-	for (id = 0; ; id++) {
-		fread(&dqbuf, sizeof(struct dqblk), 1, qf);
-		if (feof(qf))
-			break;
-		if (id == 0) {
-			if (dqbuf.dqb_btime > 0)
-				bgrace = dqbuf.dqb_btime;
-			if (dqbuf.dqb_itime > 0)
-				igrace = dqbuf.dqb_itime;
-		}
-		if (dqbuf.dqb_curinodes == 0 && dqbuf.dqb_curblocks == 0 &&
-		    dqbuf.dqb_bsoftlimit == 0 && dqbuf.dqb_bhardlimit == 0 &&
-		    dqbuf.dqb_isoftlimit == 0 && dqbuf.dqb_ihardlimit == 0)
-			continue;
-		if ((fup = lookup(id, idtype)) == 0)
-			fup = addid(id, idtype, (char *)0);
-		dqblk_to_quotaval(&dqbuf, fup->fu_qv);
-		fup->fu_qv[QUOTA_LIMIT_BLOCK].qv_grace = bgrace;
-		fup->fu_qv[QUOTA_LIMIT_FILE].qv_grace = igrace;
-	}
-	defaultqv[idtype][QUOTA_LIMIT_BLOCK].qv_grace = bgrace;
-	defaultqv[idtype][QUOTA_LIMIT_FILE].qv_grace = igrace;
-	defaultqv[idtype][QUOTA_LIMIT_BLOCK].qv_softlimit = 
-	    defaultqv[idtype][QUOTA_LIMIT_BLOCK].qv_hardlimit = 
-	    defaultqv[idtype][QUOTA_LIMIT_FILE].qv_softlimit = 
-	    defaultqv[idtype][QUOTA_LIMIT_FILE].qv_hardlimit = QUOTA_NOLIMIT;
-	fclose(qf);
-	valid[idtype] = 1;
-	if (xflag == 0)
-		printquotas(idtype, qh);
-	return 0;
-}
-
 static void
 printquotas(int idtype, struct quotahandle *qh)
 {
@@ -591,3 +515,17 @@ addid(uint32_t id, int idtype, const cha
 	fup->fu_qv[QUOTA_LIMIT_FILE] = defaultqv[idtype][QUOTA_LIMIT_FILE];
 	return fup;
 }
+
+/*
+ * Check to see if target appears in list of size cnt.
+ */
+static int
+oneof(const char *target, char *list[], int cnt)
+{
+	int i;
+
+	for (i = 0; i < cnt; i++)
+		if (strcmp(target, list[i]) == 0)
+			return i;
+	return -1;
+}

Reply via email to