Module Name:    src
Committed By:   bouyer
Date:           Fri Jan 28 22:15:36 UTC 2011

Modified Files:
        src/tests/fs/ffs/clients [bouyer-quota2]: Makefile
        src/usr.bin/quota [bouyer-quota2]: Makefile printquota.h quota.c
Added Files:
        src/usr.bin/quota [bouyer-quota2]: getvfsquota.c getvfsquota.h

Log Message:
Rename getufsquota to getvfsquota, and abstract in its own file.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/tests/fs/ffs/clients/Makefile
cvs rdiff -u -r1.6.64.2 -r1.6.64.3 src/usr.bin/quota/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/usr.bin/quota/getvfsquota.c \
    src/usr.bin/quota/getvfsquota.h
cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/usr.bin/quota/printquota.h
cvs rdiff -u -r1.33.2.2 -r1.33.2.3 src/usr.bin/quota/quota.c

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

Modified files:

Index: src/tests/fs/ffs/clients/Makefile
diff -u src/tests/fs/ffs/clients/Makefile:1.1.2.1 src/tests/fs/ffs/clients/Makefile:1.1.2.2
--- src/tests/fs/ffs/clients/Makefile:1.1.2.1	Fri Jan 28 18:38:08 2011
+++ src/tests/fs/ffs/clients/Makefile	Fri Jan 28 22:15:36 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.1.2.1 2011/01/28 18:38:08 bouyer Exp $
+#	$NetBSD: Makefile,v 1.1.2.2 2011/01/28 22:15:36 bouyer Exp $
 #
 
 .include <bsd.own.mk>
@@ -9,10 +9,11 @@
 PROGS=			rump_quota rump_repquota
 
 .PATH: ${NETBSDSRCDIR}/usr.bin/quota
-SRCS.rump_quota=	quota.c printquota.c quota_rumpops.c
+SRCS.rump_quota=	quota.c printquota.c getvfsquota.c quota_rumpops.c
 SRCS.rump_repquota=	printquota.c quota_rumpops.c
-CPPFLAGS.quota.c+=	-I${NETBSDSRCDIR}/sys -I${NETBSDSRCDIR}/usr.bin/quota
-CPPFLAGS.printquota.c+=	-I${NETBSDSRCDIR}/sys -I${NETBSDSRCDIR}/usr.bin/quota
+CPPFLAGS.quota.c+=	-I${NETBSDSRCDIR}/usr.bin/quota
+CPPFLAGS.printquota.c+=	-I${NETBSDSRCDIR}/usr.bin/quota
+CPPFLAGS.getvfsquota.c+=-I${NETBSDSRCDIR}/usr.bin/quota -I${NETBSDSRCDIR}/sys
 
 .PATH: ${NETBSDSRCDIR}/usr.sbin/repquota
 SRCS.rump_repquota+=	repquota.c
@@ -20,7 +21,7 @@
 
 .PATH:  ${NETBSDSRCDIR}/sys/ufs/ufs 
 SRCS.rump_quota+=	quota2_prop.c
-SRCS.rump_repquota+=	quota2_prop.c
+SRCS.rump_repquota+=	quota2_prop.c quota1_subr.c
 CPPFLAGS.quota2_prop.c+=-I${NETBSDSRCDIR}/sys -I${NETBSDSRCDIR}/usr.bin/quota
 
 DPADD.rump_quota=	${LIBRPCSVC} ${LIBPROP} ${LIBRUMPCLIENT}

Index: src/usr.bin/quota/Makefile
diff -u src/usr.bin/quota/Makefile:1.6.64.2 src/usr.bin/quota/Makefile:1.6.64.3
--- src/usr.bin/quota/Makefile:1.6.64.2	Fri Jan 21 16:58:06 2011
+++ src/usr.bin/quota/Makefile	Fri Jan 28 22:15:36 2011
@@ -1,9 +1,9 @@
-#	$NetBSD: Makefile,v 1.6.64.2 2011/01/21 16:58:06 bouyer Exp $	
+#	$NetBSD: Makefile,v 1.6.64.3 2011/01/28 22:15:36 bouyer Exp $	
 #	from: @(#)Makefile	8.1 (Berkeley) 6/6/93
 
 .include <bsd.own.mk>
 PROG=	quota
-SRCS=	quota.c printquota.c
+SRCS=	quota.c printquota.c getvfsquota.c
 
 CPPFLAGS+=-I${NETBSDSRCDIR}/sys -I${NETBSDSRCDIR}/usr.bin/quota
 DPADD=	${LIBRPCSVC} ${LIBPROP}

Index: src/usr.bin/quota/printquota.h
diff -u src/usr.bin/quota/printquota.h:1.1.2.1 src/usr.bin/quota/printquota.h:1.1.2.2
--- src/usr.bin/quota/printquota.h:1.1.2.1	Fri Jan 21 16:58:06 2011
+++ src/usr.bin/quota/printquota.h	Fri Jan 28 22:15:36 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: printquota.h,v 1.1.2.1 2011/01/21 16:58:06 bouyer Exp $	*/
+/*	$NetBSD: printquota.h,v 1.1.2.2 2011/01/28 22:15:36 bouyer Exp $ */
 
 const char *intprt(uint64_t, int, int);
 const char *timeprt(time_t);

Index: src/usr.bin/quota/quota.c
diff -u src/usr.bin/quota/quota.c:1.33.2.2 src/usr.bin/quota/quota.c:1.33.2.3
--- src/usr.bin/quota/quota.c:1.33.2.2	Fri Jan 21 16:58:06 2011
+++ src/usr.bin/quota/quota.c	Fri Jan 28 22:15:36 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: quota.c,v 1.33.2.2 2011/01/21 16:58:06 bouyer Exp $	*/
+/*	$NetBSD: quota.c,v 1.33.2.3 2011/01/28 22:15:36 bouyer Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)quota.c	8.4 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: quota.c,v 1.33.2.2 2011/01/21 16:58:06 bouyer Exp $");
+__RCSID("$NetBSD: quota.c,v 1.33.2.3 2011/01/28 22:15:36 bouyer Exp $");
 #endif
 #endif /* not lint */
 
@@ -56,9 +56,6 @@
 #include <sys/mount.h>
 #include <sys/socket.h>
 
-#include <ufs/ufs/quota2_prop.h>
-#include <sys/quota.h>
-
 #include <ctype.h>
 #include <err.h>
 #include <errno.h>
@@ -72,11 +69,14 @@
 #include <time.h>
 #include <unistd.h>
 
+#include <ufs/ufs/quota2.h>
+
 #include <rpc/rpc.h>
 #include <rpc/pmap_prot.h>
 #include <rpcsvc/rquota.h>
 
 #include <printquota.h>
+#include <getvfsquota.h>
 
 struct quotause {
 	struct	quotause *next;
@@ -100,10 +100,6 @@
 void	showusrname(const char *);
 void	usage(void);
 
-extern const char *qfextension[];
-
-int  getufsquota(const char *, struct quota2_entry *, long, int, int, int);
-
 int	qflag = 0;
 int	vflag = 0;
 int	hflag = 0;
@@ -489,7 +485,7 @@
 		} else if (strncmp(fst[i].f_fstypename, "ffs",
 		    sizeof(fst[i].f_fstypename)) == 0 &&
 		    (fst[i].f_flag & ST_QUOTA) != 0) {
-			if (getufsquota(fst[i].f_mntonname, &qup->q2e,
+			if (getvfsquota(fst[i].f_mntonname, &qup->q2e,
 			    id, quotatype, dflag, Dflag) == 0)
 				continue;
 		} else
@@ -658,104 +654,3 @@
 	} while ((c = *s++) != 0);
 	return (1);
 }
-
-const char *qfextension[] = INITQFNAMES;
-
-int
-getufsquota(const char *mp, struct quota2_entry *q2e, long id, int type,
-    int defaultq, int debug)
-{
-	prop_dictionary_t dict, data, cmd;
-	prop_array_t cmds, datas;
-	struct plistref pref;
-	int error;
-	int8_t error8;
-	bool ret;
-
-	dict = quota2_prop_create();
-	cmds = prop_array_create();
-	datas = prop_array_create();
-	data = prop_dictionary_create();
-
-	if (dict == NULL || cmds == NULL || datas == NULL || data == NULL)
-		errx(1, "can't allocate proplist");
-
-	if (defaultq)
-		ret = prop_dictionary_set_cstring(data, "id", "default");
-	else
-		ret = prop_dictionary_set_uint32(data, "id", id);
-	if (!ret)
-		err(1, "prop_dictionary_set(id)");
-		
-	if (!prop_array_add(datas, data))
-		err(1, "prop_array_add(data)");
-	prop_object_release(data);
-	if (!quota2_prop_add_command(cmds, "get", qfextension[type], datas))
-		err(1, "prop_add_command");
-	if (!prop_dictionary_set(dict, "commands", cmds))
-		err(1, "prop_dictionary_set(command)");
-	if (debug)
-		printf("message to kernel:\n%s\n",
-		    prop_dictionary_externalize(dict));
-
-	if (!prop_dictionary_send_syscall(dict, &pref))
-		err(1, "prop_dictionary_send_syscall");
-	prop_object_release(dict);
-
-	if (quotactl(mp, &pref) != 0)
-		err(1, "quotactl");
-	
-	if ((error = prop_dictionary_recv_syscall(&pref, &dict)) != 0) {
-		errx(1, "prop_dictionary_recv_syscall: %s\n",
-		    strerror(error));
-	}
-	if (debug)
-		printf("reply from kernel:\n%s\n",
-		    prop_dictionary_externalize(dict));
-	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)
-		err(1, "prop_array_get(cmd)");
-
-	if (!prop_dictionary_get_int8(cmd, "return", &error8))
-		err(1, "prop_get(return)");
-
-	if (error8) {
-		if (error8 != ENOENT && error8 != ENODEV) {
-			if (defaultq)
-				fprintf(stderr, "get default %s quota: %s\n",
-				    qfextension[type], strerror(error8));
-			else 
-				fprintf(stderr, "get %s quota for %ld: %s\n",
-				    qfextension[type], id, strerror(error8));
-		}
-		prop_object_release(dict);
-		return (0);
-	}
-	datas = prop_dictionary_get(cmd, "data");
-	if (datas == NULL)
-		err(1, "prop_dict_get(datas)");
-
-	/* only one data, no need to iter */
-	if (prop_array_count(datas) == 0) {
-		/* no quota for this user/group */
-		prop_object_release(dict);
-		return (0);
-	}
-	
-	data = prop_array_get(datas, 0);
-	if (data == NULL)
-		err(1, "prop_array_get(data)");
-
-	error = quota2_dict_get_q2e_usage(data, q2e);
-	if (error) {
-		errx(1, "quota2_dict_get_q2e_usage: %s\n",
-		    strerror(error));
-	}
-	prop_object_release(dict);
-	return (1);
-}

Added files:

Index: src/usr.bin/quota/getvfsquota.c
diff -u /dev/null src/usr.bin/quota/getvfsquota.c:1.1.2.1
--- /dev/null	Fri Jan 28 22:15:36 2011
+++ src/usr.bin/quota/getvfsquota.c	Fri Jan 28 22:15:36 2011
@@ -0,0 +1,147 @@
+/*	$NetBSD: getvfsquota.c,v 1.1.2.1 2011/01/28 22:15:36 bouyer Exp $ */
+
+/*-
+  * Copyright (c) 2011 Manuel Bouyer
+  * All rights reserved.
+  * This software is distributed under the following condiions
+  * compliant with the NetBSD foundation policy.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  * POSSIBILITY OF SUCH DAMAGE.
+  */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: getvfsquota.c,v 1.1.2.1 2011/01/28 22:15:36 bouyer Exp $");
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <err.h>
+#include <string.h>
+
+#include <sys/types.h>
+
+#include <ufs/ufs/quota2_prop.h>
+#include <sys/quota.h>
+
+#include <getvfsquota.h>
+
+const char *qfextension[] = INITQFNAMES;
+
+/* retrieve quotas from vfs, for the given user id */
+int
+getvfsquota(const char *mp, struct quota2_entry *q2e, long id, int type,
+    int defaultq, int debug)
+{
+	prop_dictionary_t dict, data, cmd;
+	prop_array_t cmds, datas;
+	struct plistref pref;
+	int error;
+	int8_t error8;
+	bool ret;
+
+	dict = quota2_prop_create();
+	cmds = prop_array_create();
+	datas = prop_array_create();
+	data = prop_dictionary_create();
+
+	if (dict == NULL || cmds == NULL || datas == NULL || data == NULL)
+		errx(1, "can't allocate proplist");
+
+	if (defaultq)
+		ret = prop_dictionary_set_cstring(data, "id", "default");
+	else
+		ret = prop_dictionary_set_uint32(data, "id", id);
+	if (!ret)
+		err(1, "prop_dictionary_set(id)");
+		
+	if (!prop_array_add(datas, data))
+		err(1, "prop_array_add(data)");
+	prop_object_release(data);
+	if (!quota2_prop_add_command(cmds, "get", qfextension[type], datas))
+		err(1, "prop_add_command");
+	if (!prop_dictionary_set(dict, "commands", cmds))
+		err(1, "prop_dictionary_set(command)");
+	if (debug)
+		printf("message to kernel:\n%s\n",
+		    prop_dictionary_externalize(dict));
+
+	if (!prop_dictionary_send_syscall(dict, &pref))
+		err(1, "prop_dictionary_send_syscall");
+	prop_object_release(dict);
+
+	if (quotactl(mp, &pref) != 0)
+		err(1, "quotactl");
+	
+	if ((error = prop_dictionary_recv_syscall(&pref, &dict)) != 0) {
+		errx(1, "prop_dictionary_recv_syscall: %s\n",
+		    strerror(error));
+	}
+	if (debug)
+		printf("reply from kernel:\n%s\n",
+		    prop_dictionary_externalize(dict));
+	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)
+		err(1, "prop_array_get(cmd)");
+
+	if (!prop_dictionary_get_int8(cmd, "return", &error8))
+		err(1, "prop_get(return)");
+
+	if (error8) {
+		if (error8 != ENOENT && error8 != ENODEV) {
+			if (defaultq)
+				fprintf(stderr, "get default %s quota: %s\n",
+				    qfextension[type], strerror(error8));
+			else 
+				fprintf(stderr, "get %s quota for %ld: %s\n",
+				    qfextension[type], id, strerror(error8));
+		}
+		prop_object_release(dict);
+		return (0);
+	}
+	datas = prop_dictionary_get(cmd, "data");
+	if (datas == NULL)
+		err(1, "prop_dict_get(datas)");
+
+	/* only one data, no need to iter */
+	if (prop_array_count(datas) == 0) {
+		/* no quota for this user/group */
+		prop_object_release(dict);
+		return (0);
+	}
+	
+	data = prop_array_get(datas, 0);
+	if (data == NULL)
+		err(1, "prop_array_get(data)");
+
+	error = quota2_dict_get_q2e_usage(data, q2e);
+	if (error) {
+		errx(1, "quota2_dict_get_q2e_usage: %s\n",
+		    strerror(error));
+	}
+	prop_object_release(dict);
+	return (1);
+}
Index: src/usr.bin/quota/getvfsquota.h
diff -u /dev/null src/usr.bin/quota/getvfsquota.h:1.1.2.1
--- /dev/null	Fri Jan 28 22:15:36 2011
+++ src/usr.bin/quota/getvfsquota.h	Fri Jan 28 22:15:36 2011
@@ -0,0 +1,5 @@
+/*	$NetBSD: getvfsquota.h,v 1.1.2.1 2011/01/28 22:15:36 bouyer Exp $ */
+
+int getvfsquota(const char *, struct quota2_entry *, long, int, int, int);
+
+extern const char *qfextension[];

Reply via email to