Module Name:    src
Committed By:   christos
Date:           Sun Mar  6 23:24:33 UTC 2011

Modified Files:
        src/usr.sbin/quotaon: Makefile quotaon.c

Log Message:
use common utils


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/quotaon/Makefile
cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/quotaon/quotaon.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/quotaon/Makefile
diff -u src/usr.sbin/quotaon/Makefile:1.6 src/usr.sbin/quotaon/Makefile:1.7
--- src/usr.sbin/quotaon/Makefile:1.6	Sun Mar  6 12:08:43 2011
+++ src/usr.sbin/quotaon/Makefile	Sun Mar  6 18:24:33 2011
@@ -1,13 +1,19 @@
 #	from: @(#)Makefile	8.1 (Berkeley) 6/6/93
-#	$NetBSD: Makefile,v 1.6 2011/03/06 17:08:43 bouyer Exp $
+#	$NetBSD: Makefile,v 1.7 2011/03/06 23:24:33 christos Exp $
 
 .include <bsd.own.mk>
+WARNS	?= 4
+
 PROG=	quotaon
 SRCS=	quotaon.c
 MAN=	quotaon.8
 MLINKS=	quotaon.8 quotaoff.8
 LINKS=	${BINDIR}/quotaon ${BINDIR}/quotaoff
 
+.PATH:  ${NETBSDSRCDIR}/usr.bin/quota
+SRCS+=  quotautil.c
+CPPFLAGS+=-I${NETBSDSRCDIR}/usr.bin/quota
+
 CPPFLAGS+=-I${NETBSDSRCDIR}/sys
 DPADD=	${LIBPROP}
 LDADD=	-lprop

Index: src/usr.sbin/quotaon/quotaon.c
diff -u src/usr.sbin/quotaon/quotaon.c:1.24 src/usr.sbin/quotaon/quotaon.c:1.25
--- src/usr.sbin/quotaon/quotaon.c:1.24	Sun Mar  6 12:08:43 2011
+++ src/usr.sbin/quotaon/quotaon.c	Sun Mar  6 18:24:33 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: quotaon.c,v 1.24 2011/03/06 17:08:43 bouyer Exp $	*/
+/*	$NetBSD: quotaon.c,v 1.25 2011/03/06 23:24:33 christos Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)quotaon.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: quotaon.c,v 1.24 2011/03/06 17:08:43 bouyer Exp $");
+__RCSID("$NetBSD: quotaon.c,v 1.25 2011/03/06 23:24:33 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -61,33 +61,27 @@
 #include <err.h>
 #include <fstab.h>
 #include <stdio.h>
+#include <errno.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
-const char *qfname = QUOTAFILENAME;
-const char *qfextension[] = INITQFNAMES;
+#include "quotautil.h"
 
-int	aflag;		/* all file systems */
-int	gflag;		/* operate on group quotas */
-int	uflag;		/* operate on user quotas */
-int	vflag;		/* verbose */
-
-int main __P((int, char *[]));
-
-static void usage __P((void));
-static int quotaonoff __P((struct fstab *, int, int, char *));
-static int oneof __P((const char *, char *[], int));
-static int hasquota __P((struct fstab *, int, char **));
-static int readonly __P((struct fstab *));
+static int	aflag;		/* all file systems */
+static int	gflag;		/* operate on group quotas */
+static int	uflag;		/* operate on user quotas */
+static int	vflag;		/* verbose */
+
+static void usage(void) __attribute__((__noreturn__));
+static int quotaonoff(struct fstab *, int, int, const char *);
+static int readonly(struct fstab *);
 
 int
-main(argc, argv)
-	int argc;
-	char *argv[];
+main(int argc, char *argv[])
 {
 	struct fstab *fs;
-	char *qfnp;
+	char qfnp[MAXPATHLEN];
 	long argnum, done = 0;
 	int i, offmode = 0, errs = 0;
 	int ch;
@@ -133,50 +127,44 @@
 		    strcmp(fs->fs_type, FSTAB_RW))
 			continue;
 		if (aflag) {
-			if (gflag && hasquota(fs, GRPQUOTA, &qfnp))
+			if (gflag && hasquota(qfnp, sizeof(qfnp), fs, GRPQUOTA))
 				errs += quotaonoff(fs, offmode, GRPQUOTA, qfnp);
-			if (uflag && hasquota(fs, USRQUOTA, &qfnp))
+			if (uflag && hasquota(qfnp, sizeof(qfnp), fs, USRQUOTA))
 				errs += quotaonoff(fs, offmode, USRQUOTA, qfnp);
 			continue;
 		}
 		if ((argnum = oneof(fs->fs_file, argv, argc)) >= 0 ||
 		    (argnum = oneof(fs->fs_spec, argv, argc)) >= 0) {
-			done |= 1 << argnum;
-			if (gflag && hasquota(fs, GRPQUOTA, &qfnp))
+			done |= 1U << argnum;
+			if (gflag && hasquota(qfnp, sizeof(qfnp), fs, GRPQUOTA))
 				errs += quotaonoff(fs, offmode, GRPQUOTA, qfnp);
-			if (uflag && hasquota(fs, USRQUOTA, &qfnp))
+			if (uflag && hasquota(qfnp, sizeof(qfnp), fs, USRQUOTA))
 				errs += quotaonoff(fs, offmode, USRQUOTA, qfnp);
 		}
 	}
 	endfsent();
 	for (i = 0; i < argc; i++)
-		if ((done & (1 << i)) == 0)
+		if ((done & (1U << i)) == 0)
 			warnx("%s not found in fstab", argv[i]);
-	exit(errs);
+	return errs;
 }
 
 static void
-usage()
+usage(void)
 {
-
-	(void) fprintf(stderr, "usage:\n\t%s [-g] [-u] [-v] -a\n",
-	    getprogname());
-	(void) fprintf(stderr, "\t%s [-g] [-u] [-v] filesys ...\n",
-	    getprogname());
+	const char *p = getprogname();
+	(void) fprintf(stderr, "Usage: %s [-g] [-u] [-v] -a\n"
+	    "\t%s [-g] [-u] [-v] filesys ...\n", p, p);
 	exit(1);
 }
 
 static int
-quotaonoff(fs, offmode, type, qfpathname)
-	struct fstab *fs;
-	int offmode, type;
-	char *qfpathname;
+quotaonoff( struct fstab *fs, int offmode, int type, const char *qfpathname)
 {
 	const char *mode = (offmode == 1) ? "off" : "on";
 	prop_dictionary_t dict, data, cmd;
 	prop_array_t cmds, datas;
 	struct plistref pref;
-	int error;
 	int8_t error8;
 
 	dict = quota2_prop_create();
@@ -184,7 +172,7 @@
 	datas = prop_array_create();
 
 	if (strcmp(fs->fs_file, "/") && readonly(fs))
-		return (1);
+		return 1;
 
 	if (dict == NULL || cmds == NULL || datas == NULL)
 		errx(1, "can't allocate proplist");
@@ -218,14 +206,12 @@
 		return(1);
 	}
 
-	if ((error = prop_dictionary_recv_syscall(&pref, &dict)) != 0) {
-		errx(1, "prop_dictionary_recv_syscall: %s\n",
-		    strerror(error));
-	}
+	if ((errno = prop_dictionary_recv_syscall(&pref, &dict)) != 0)
+		err(1, "prop_dictionary_recv_syscall");
+
+	if ((errno = quota2_get_cmds(dict, &cmds)) != 0)
+		err(1, "quota2_get_cmds");
 
-	if ((error = quota2_get_cmds(dict, &cmds)) != 0) {
-		errx(1, "quota2_get_cmds: %s\n", strerror(error));
-	}
 	/* only one command, no need to iter */
 	cmd = prop_array_get(cmds, 0);
 	if (cmd == NULL)
@@ -235,8 +221,8 @@
 		err(1, "prop_get(return)");
 
 	if (error8) {
-		warnx("quota%s for %s: %s", mode, fs->fs_file,
-		    strerror(error8));
+		errno = error8;
+		warn("quota%s for %s", mode, fs->fs_file);
 		return 1;
 	}
 
@@ -244,74 +230,14 @@
 		printf("%s: %s quotas turned %s\n",
 		    fs->fs_file, qfextension[type], mode);
 	}
-	return (0);
-}
-
-/*
- * Check to see if target appears in list of size cnt.
- */
-static int
-oneof(target, list, cnt)
-	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);
-}
-
-/*
- * Check to see if a particular quota is to be enabled.
- */
-static int
-hasquota(fs, type, qfnamep)
-	struct fstab *fs;
-	int type;
-	char **qfnamep;
-{
-	char *opt;
-	char *cp = NULL;
-	static char initname, usrname[100], grpname[100];
-	static char buf[BUFSIZ];
-
-	if (!initname) {
-		(void) snprintf(usrname, sizeof(usrname), "%s%s",
-		    qfextension[USRQUOTA], qfname);
-		(void) snprintf(grpname, sizeof(grpname), "%s%s",
-		    qfextension[GRPQUOTA], qfname);
-		initname = 1;
-	}
-	strcpy(buf, fs->fs_mntops);
-	for (opt = strtok(buf, ","); opt; opt = strtok(NULL, ",")) {
-		if ((cp = strchr(opt, '=')) != NULL)
-			*cp++ = '\0';
-		if (type == USRQUOTA && strcmp(opt, usrname) == 0)
-			break;
-		if (type == GRPQUOTA && strcmp(opt, grpname) == 0)
-			break;
-	}
-	if (!opt)
-		return (0);
-	if (cp) {
-		*qfnamep = cp;
-		return (1);
-	}
-	(void) snprintf(buf, sizeof(buf), "%s/%s.%s", fs->fs_file, qfname,
-	    qfextension[type]);
-	*qfnamep = buf;
-	return (1);
+	return 0;
 }
 
 /*
  * Verify file system is mounted and not readonly.
  */
 static int
-readonly(fs)
-	struct fstab *fs;
+readonly(struct fstab *fs)
 {
 	struct statvfs fsbuf;
 
@@ -319,11 +245,11 @@
 	    strcmp(fsbuf.f_mntonname, fs->fs_file) ||
 	    strcmp(fsbuf.f_mntfromname, fs->fs_spec)) {
 		printf("%s: not mounted\n", fs->fs_file);
-		return (1);
+		return 1;
 	}
 	if (fsbuf.f_flag & MNT_RDONLY) {
 		printf("%s: mounted read-only\n", fs->fs_file);
-		return (1);
+		return 1;
 	}
-	return (0);
+	return 0;
 }

Reply via email to