Add quota_getrestrictions() to report the semantic restrictions associated with a particular quotahandle.diff -r1.3 -r1.4 src/include/quota.h
(dholland)
--- src/include/quota.h 2012/01/29 06:40:57 1.3
+++ src/include/quota.h 2012/01/30 16:44:08 1.4
@@ -36,26 +36,27 @@ | @@ -36,26 +36,27 @@ | |||
36 | struct quotahandle; /* Opaque. */ | 36 | struct quotahandle; /* Opaque. */ | |
37 | struct quotacursor; /* Opaque. */ | 37 | struct quotacursor; /* Opaque. */ | |
38 | 38 | |||
39 | 39 | |||
40 | void quotaval_clear(struct quotaval *); | 40 | void quotaval_clear(struct quotaval *); | |
41 | 41 | |||
42 | struct quotahandle *quota_open(const char *); | 42 | struct quotahandle *quota_open(const char *); | |
43 | void quota_close(struct quotahandle *); | 43 | void quota_close(struct quotahandle *); | |
44 | 44 | |||
45 | const char *quota_getmountpoint(struct quotahandle *); | 45 | const char *quota_getmountpoint(struct quotahandle *); | |
46 | const char *quota_getmountdevice(struct quotahandle *); | 46 | const char *quota_getmountdevice(struct quotahandle *); | |
47 | 47 | |||
48 | const char *quota_getimplname(struct quotahandle *); | 48 | const char *quota_getimplname(struct quotahandle *); | |
49 | unsigned quota_getrestrictions(struct quotahandle *); | |||
49 | 50 | |||
50 | unsigned quota_getnumidtypes(struct quotahandle *); | 51 | unsigned quota_getnumidtypes(struct quotahandle *); | |
51 | const char *quota_idtype_getname(struct quotahandle *, int /*idtype*/); | 52 | const char *quota_idtype_getname(struct quotahandle *, int /*idtype*/); | |
52 | 53 | |||
53 | unsigned quota_getnumobjtypes(struct quotahandle *); | 54 | unsigned quota_getnumobjtypes(struct quotahandle *); | |
54 | const char *quota_objtype_getname(struct quotahandle *, int /*objtype*/); | 55 | const char *quota_objtype_getname(struct quotahandle *, int /*objtype*/); | |
55 | int quota_objtype_isbytes(struct quotahandle *, int /*objtype*/); | 56 | int quota_objtype_isbytes(struct quotahandle *, int /*objtype*/); | |
56 | 57 | |||
57 | int quota_get(struct quotahandle *, const struct quotakey *, | 58 | int quota_get(struct quotahandle *, const struct quotakey *, | |
58 | struct quotaval *); | 59 | struct quotaval *); | |
59 | 60 | |||
60 | int quota_put(struct quotahandle *, const struct quotakey *, | 61 | int quota_put(struct quotahandle *, const struct quotakey *, | |
61 | const struct quotaval *); | 62 | const struct quotaval *); |
--- src/lib/libquota/Attic/quota_proplib.c 2012/01/30 06:00:49 1.8
+++ src/lib/libquota/Attic/quota_proplib.c 2012/01/30 16:44:08 1.9
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: quota_proplib.c,v 1.8 2012/01/30 06:00:49 dholland Exp $ */ | 1 | /* $NetBSD: quota_proplib.c,v 1.9 2012/01/30 16:44:08 dholland Exp $ */ | |
2 | /*- | 2 | /*- | |
3 | * Copyright (c) 2011 Manuel Bouyer | 3 | * Copyright (c) 2011 Manuel Bouyer | |
4 | * All rights reserved. | 4 | * All rights reserved. | |
5 | * | 5 | * | |
6 | * Redistribution and use in source and binary forms, with or without | 6 | * Redistribution and use in source and binary forms, with or without | |
7 | * modification, are permitted provided that the following conditions | 7 | * modification, are permitted provided that the following conditions | |
8 | * are met: | 8 | * are met: | |
9 | * 1. Redistributions of source code must retain the above copyright | 9 | * 1. Redistributions of source code must retain the above copyright | |
10 | * notice, this list of conditions and the following disclaimer. | 10 | * notice, this list of conditions and the following disclaimer. | |
11 | * 2. Redistributions in binary form must reproduce the above copyright | 11 | * 2. Redistributions in binary form must reproduce the above copyright | |
12 | * notice, this list of conditions and the following disclaimer in the | 12 | * notice, this list of conditions and the following disclaimer in the | |
13 | * documentation and/or other materials provided with the distribution. | 13 | * documentation and/or other materials provided with the distribution. | |
14 | * | 14 | * | |
@@ -16,27 +16,27 @@ | @@ -16,27 +16,27 @@ | |||
16 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 16 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
17 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 17 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
18 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 18 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
19 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 19 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
25 | * POSSIBILITY OF SUCH DAMAGE. | 25 | * POSSIBILITY OF SUCH DAMAGE. | |
26 | */ | 26 | */ | |
27 | 27 | |||
28 | #include <sys/cdefs.h> | 28 | #include <sys/cdefs.h> | |
29 | __RCSID("$NetBSD: quota_proplib.c,v 1.8 2012/01/30 06:00:49 dholland Exp $"); | 29 | __RCSID("$NetBSD: quota_proplib.c,v 1.9 2012/01/30 16:44:08 dholland Exp $"); | |
30 | 30 | |||
31 | #include <stdlib.h> | 31 | #include <stdlib.h> | |
32 | #include <string.h> | 32 | #include <string.h> | |
33 | #include <limits.h> | 33 | #include <limits.h> | |
34 | #include <errno.h> | 34 | #include <errno.h> | |
35 | #include <err.h> | 35 | #include <err.h> | |
36 | 36 | |||
37 | #include <quota.h> | 37 | #include <quota.h> | |
38 | #include "quotapvt.h" | 38 | #include "quotapvt.h" | |
39 | 39 | |||
40 | #include <quota/quotaprop.h> | 40 | #include <quota/quotaprop.h> | |
41 | #include <quota/quota.h> | 41 | #include <quota/quota.h> | |
42 | 42 | |||
@@ -171,26 +171,44 @@ __quota_proplib_getimplname(struct quota | @@ -171,26 +171,44 @@ __quota_proplib_getimplname(struct quota | |||
171 | 171 | |||
172 | if (__quota_proplib_getversion(qh, &version) < 0) { | 172 | if (__quota_proplib_getversion(qh, &version) < 0) { | |
173 | return NULL; | 173 | return NULL; | |
174 | } | 174 | } | |
175 | switch (version) { | 175 | switch (version) { | |
176 | case 1: return "ffs quota1"; | 176 | case 1: return "ffs quota1"; | |
177 | case 2: return "ffs quota2"; | 177 | case 2: return "ffs quota2"; | |
178 | default: break; | 178 | default: break; | |
179 | } | 179 | } | |
180 | return "unknown"; | 180 | return "unknown"; | |
181 | } | 181 | } | |
182 | 182 | |||
183 | unsigned | 183 | unsigned | |
184 | __quota_proplib_getrestrictions(struct quotahandle *qh) | |||
185 | { | |||
186 | int8_t version; | |||
187 | ||||
188 | if (__quota_proplib_getversion(qh, &version) < 0) { | |||
189 | /* XXX no decent way to report an error here */ | |||
190 | return 0; | |||
191 | } | |||
192 | switch (version) { | |||
193 | case 1: return QUOTA_RESTRICT_NEEDSQUOTACHECK | | |||
194 | QUOTA_RESTRICT_UNIFORMGRACE | | |||
195 | QUOTA_RESTRICT_32BIT; | |||
196 | default: break; | |||
197 | } | |||
198 | return 0; | |||
199 | } | |||
200 | ||||
201 | unsigned | |||
184 | __quota_proplib_getnumidtypes(void) | 202 | __quota_proplib_getnumidtypes(void) | |
185 | { | 203 | { | |
186 | return QUOTA_NCLASS; | 204 | return QUOTA_NCLASS; | |
187 | } | 205 | } | |
188 | 206 | |||
189 | const char * | 207 | const char * | |
190 | __quota_proplib_idtype_getname(int idtype) | 208 | __quota_proplib_idtype_getname(int idtype) | |
191 | { | 209 | { | |
192 | if (idtype < 0 || idtype >= QUOTA_NCLASS) { | 210 | if (idtype < 0 || idtype >= QUOTA_NCLASS) { | |
193 | return NULL; | 211 | return NULL; | |
194 | } | 212 | } | |
195 | return ufs_quota_class_names[idtype]; | 213 | return ufs_quota_class_names[idtype]; | |
196 | } | 214 | } |
--- src/lib/libquota/quota_schema.c 2012/01/25 17:43:37 1.4
+++ src/lib/libquota/quota_schema.c 2012/01/30 16:44:09 1.5
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: quota_schema.c,v 1.4 2012/01/25 17:43:37 dholland Exp $ */ | 1 | /* $NetBSD: quota_schema.c,v 1.5 2012/01/30 16:44:09 dholland Exp $ */ | |
2 | /*- | 2 | /*- | |
3 | * Copyright (c) 2011 The NetBSD Foundation, Inc. | 3 | * Copyright (c) 2011 The NetBSD Foundation, Inc. | |
4 | * All rights reserved. | 4 | * All rights reserved. | |
5 | * | 5 | * | |
6 | * This code is derived from software contributed to The NetBSD Foundation | 6 | * This code is derived from software contributed to The NetBSD Foundation | |
7 | * by David A. Holland. | 7 | * by David A. Holland. | |
8 | * | 8 | * | |
9 | * Redistribution and use in source and binary forms, with or without | 9 | * Redistribution and use in source and binary forms, with or without | |
10 | * modification, are permitted provided that the following conditions | 10 | * modification, are permitted provided that the following conditions | |
11 | * are met: | 11 | * are met: | |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright | |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. | |
14 | * 2. Redistributions in binary form must reproduce the above copyright | 14 | * 2. Redistributions in binary form must reproduce the above copyright | |
@@ -19,27 +19,27 @@ | @@ -19,27 +19,27 @@ | |||
19 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 19 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
20 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 20 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
21 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 21 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
22 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 22 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
28 | * POSSIBILITY OF SUCH DAMAGE. | 28 | * POSSIBILITY OF SUCH DAMAGE. | |
29 | */ | 29 | */ | |
30 | 30 | |||
31 | #include <sys/cdefs.h> | 31 | #include <sys/cdefs.h> | |
32 | __RCSID("$NetBSD: quota_schema.c,v 1.4 2012/01/25 17:43:37 dholland Exp $"); | 32 | __RCSID("$NetBSD: quota_schema.c,v 1.5 2012/01/30 16:44:09 dholland Exp $"); | |
33 | 33 | |||
34 | #include <sys/types.h> | 34 | #include <sys/types.h> | |
35 | #include <sys/statvfs.h> | 35 | #include <sys/statvfs.h> | |
36 | #include <stdlib.h> | 36 | #include <stdlib.h> | |
37 | #include <string.h> | 37 | #include <string.h> | |
38 | #include <errno.h> | 38 | #include <errno.h> | |
39 | 39 | |||
40 | #include <quota.h> | 40 | #include <quota.h> | |
41 | #include "quotapvt.h" | 41 | #include "quotapvt.h" | |
42 | 42 | |||
43 | /* | 43 | /* | |
44 | * Functions for getting information about idtypes and such. | 44 | * Functions for getting information about idtypes and such. | |
45 | */ | 45 | */ | |
@@ -55,114 +55,131 @@ quota_getimplname(struct quotahandle *qh | @@ -55,114 +55,131 @@ quota_getimplname(struct quotahandle *qh | |||
55 | case QUOTA_MODE_PROPLIB: | 55 | case QUOTA_MODE_PROPLIB: | |
56 | return __quota_proplib_getimplname(qh); | 56 | return __quota_proplib_getimplname(qh); | |
57 | 57 | |||
58 | case QUOTA_MODE_OLDFILES: | 58 | case QUOTA_MODE_OLDFILES: | |
59 | return __quota_proplib_getimplname(qh); | 59 | return __quota_proplib_getimplname(qh); | |
60 | 60 | |||
61 | default: | 61 | default: | |
62 | break; | 62 | break; | |
63 | } | 63 | } | |
64 | errno = EINVAL; | 64 | errno = EINVAL; | |
65 | return NULL; | 65 | return NULL; | |
66 | } | 66 | } | |
67 | 67 | |||
68 | /* ARGSUSED */ | 68 | unsigned | |
69 | quota_getrestrictions(struct quotahandle *qh) | |||
70 | { | |||
71 | switch (qh->qh_mode) { | |||
72 | case QUOTA_MODE_NFS: | |||
73 | /* XXX this should maybe report the rquotad protocol version */ | |||
74 | return QUOTA_RESTRICT_32BIT | QUOTA_RESTRICT_READONLY; | |||
75 | ||||
76 | case QUOTA_MODE_PROPLIB: | |||
77 | return __quota_proplib_getrestrictions(qh); | |||
78 | ||||
79 | case QUOTA_MODE_OLDFILES: | |||
80 | return QUOTA_RESTRICT_NEEDSQUOTACHECK | | |||
81 | QUOTA_RESTRICT_UNIFORMGRACE | | |||
82 | QUOTA_RESTRICT_32BIT; | |||
83 | default: | |||
84 | break; | |||
85 | } | |||
86 | errno = EINVAL; | |||
87 | return 0; | |||
88 | } | |||
89 | ||||
69 | unsigned | 90 | unsigned | |
70 | quota_getnumidtypes(struct quotahandle *qh) | 91 | quota_getnumidtypes(struct quotahandle *qh) | |
71 | { | 92 | { | |
72 | switch (qh->qh_mode) { | 93 | switch (qh->qh_mode) { | |
73 | case QUOTA_MODE_NFS: | 94 | case QUOTA_MODE_NFS: | |
74 | /* XXX for old rquotad versions this should be 1... */ | 95 | /* XXX for old rquotad versions this should be 1... */ | |
75 | return 2; | 96 | return 2; | |
76 | 97 | |||
77 | case QUOTA_MODE_PROPLIB: | 98 | case QUOTA_MODE_PROPLIB: | |
78 | return __quota_proplib_getnumidtypes(); | 99 | return __quota_proplib_getnumidtypes(); | |
79 | 100 | |||
80 | case QUOTA_MODE_OLDFILES: | 101 | case QUOTA_MODE_OLDFILES: | |
81 | default: | 102 | default: | |
82 | break; | 103 | break; | |
83 | } | 104 | } | |
84 | return 2; | 105 | return 2; | |
85 | } | 106 | } | |
86 | 107 | |||
87 | /* ARGSUSED */ | |||
88 | const char * | 108 | const char * | |
89 | quota_idtype_getname(struct quotahandle *qh, int idtype) | 109 | quota_idtype_getname(struct quotahandle *qh, int idtype) | |
90 | { | 110 | { | |
91 | switch (qh->qh_mode) { | 111 | switch (qh->qh_mode) { | |
92 | case QUOTA_MODE_PROPLIB: | 112 | case QUOTA_MODE_PROPLIB: | |
93 | return __quota_proplib_idtype_getname(idtype); | 113 | return __quota_proplib_idtype_getname(idtype); | |
94 | 114 | |||
95 | case QUOTA_MODE_NFS: | 115 | case QUOTA_MODE_NFS: | |
96 | case QUOTA_MODE_OLDFILES: | 116 | case QUOTA_MODE_OLDFILES: | |
97 | break; | 117 | break; | |
98 | } | 118 | } | |
99 | 119 | |||
100 | switch (idtype) { | 120 | switch (idtype) { | |
101 | case QUOTA_IDTYPE_USER: | 121 | case QUOTA_IDTYPE_USER: | |
102 | return "user"; | 122 | return "user"; | |
103 | 123 | |||
104 | case QUOTA_IDTYPE_GROUP: | 124 | case QUOTA_IDTYPE_GROUP: | |
105 | return "group"; | 125 | return "group"; | |
106 | 126 | |||
107 | default: | 127 | default: | |
108 | break; | 128 | break; | |
109 | } | 129 | } | |
110 | errno = EINVAL; | 130 | errno = EINVAL; | |
111 | return "???"; | 131 | return "???"; | |
112 | } | 132 | } | |
113 | 133 | |||
114 | /* ARGSUSED */ | |||
115 | unsigned | 134 | unsigned | |
116 | quota_getnumobjtypes(struct quotahandle *qh) | 135 | quota_getnumobjtypes(struct quotahandle *qh) | |
117 | { | 136 | { | |
118 | switch (qh->qh_mode) { | 137 | switch (qh->qh_mode) { | |
119 | case QUOTA_MODE_PROPLIB: | 138 | case QUOTA_MODE_PROPLIB: | |
120 | return __quota_proplib_getnumobjtypes(); | 139 | return __quota_proplib_getnumobjtypes(); | |
121 | 140 | |||
122 | case QUOTA_MODE_NFS: | 141 | case QUOTA_MODE_NFS: | |
123 | case QUOTA_MODE_OLDFILES: | 142 | case QUOTA_MODE_OLDFILES: | |
124 | default: | 143 | default: | |
125 | break; | 144 | break; | |
126 | } | 145 | } | |
127 | return 2; | 146 | return 2; | |
128 | } | 147 | } | |
129 | 148 | |||
130 | /* ARGSUSED */ | |||
131 | const char * | 149 | const char * | |
132 | quota_objtype_getname(struct quotahandle *qh, int objtype) | 150 | quota_objtype_getname(struct quotahandle *qh, int objtype) | |
133 | { | 151 | { | |
134 | switch (qh->qh_mode) { | 152 | switch (qh->qh_mode) { | |
135 | case QUOTA_MODE_PROPLIB: | 153 | case QUOTA_MODE_PROPLIB: | |
136 | return __quota_proplib_objtype_getname(objtype); | 154 | return __quota_proplib_objtype_getname(objtype); | |
137 | case QUOTA_MODE_NFS: | 155 | case QUOTA_MODE_NFS: | |
138 | case QUOTA_MODE_OLDFILES: | 156 | case QUOTA_MODE_OLDFILES: | |
139 | default: | 157 | default: | |
140 | break; | 158 | break; | |
141 | } | 159 | } | |
142 | 160 | |||
143 | switch (objtype) { | 161 | switch (objtype) { | |
144 | case QUOTA_OBJTYPE_BLOCKS: | 162 | case QUOTA_OBJTYPE_BLOCKS: | |
145 | return "block"; | 163 | return "block"; | |
146 | case QUOTA_OBJTYPE_FILES: | 164 | case QUOTA_OBJTYPE_FILES: | |
147 | return "file"; | 165 | return "file"; | |
148 | default: | 166 | default: | |
149 | break; | 167 | break; | |
150 | } | 168 | } | |
151 | errno = EINVAL; | 169 | errno = EINVAL; | |
152 | return "???"; /* ? */ | 170 | return "???"; /* ? */ | |
153 | } | 171 | } | |
154 | 172 | |||
155 | /* ARGSUSED */ | |||
156 | int | 173 | int | |
157 | quota_objtype_isbytes(struct quotahandle *qh, int objtype) | 174 | quota_objtype_isbytes(struct quotahandle *qh, int objtype) | |
158 | { | 175 | { | |
159 | switch (qh->qh_mode) { | 176 | switch (qh->qh_mode) { | |
160 | case QUOTA_MODE_PROPLIB: | 177 | case QUOTA_MODE_PROPLIB: | |
161 | return __quota_proplib_objtype_isbytes(objtype); | 178 | return __quota_proplib_objtype_isbytes(objtype); | |
162 | case QUOTA_MODE_NFS: | 179 | case QUOTA_MODE_NFS: | |
163 | case QUOTA_MODE_OLDFILES: | 180 | case QUOTA_MODE_OLDFILES: | |
164 | default: | 181 | default: | |
165 | break; | 182 | break; | |
166 | } | 183 | } | |
167 | 184 | |||
168 | switch (objtype) { | 185 | switch (objtype) { |
--- src/lib/libquota/quotapvt.h 2012/01/25 17:43:37 1.10
+++ src/lib/libquota/quotapvt.h 2012/01/30 16:44:09 1.11
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: quotapvt.h,v 1.10 2012/01/25 17:43:37 dholland Exp $ */ | 1 | /* $NetBSD: quotapvt.h,v 1.11 2012/01/30 16:44:09 dholland Exp $ */ | |
2 | /*- | 2 | /*- | |
3 | * Copyright (c) 2011 The NetBSD Foundation, Inc. | 3 | * Copyright (c) 2011 The NetBSD Foundation, Inc. | |
4 | * All rights reserved. | 4 | * All rights reserved. | |
5 | * | 5 | * | |
6 | * This code is derived from software contributed to The NetBSD Foundation | 6 | * This code is derived from software contributed to The NetBSD Foundation | |
7 | * by David A. Holland. | 7 | * by David A. Holland. | |
8 | * | 8 | * | |
9 | * Redistribution and use in source and binary forms, with or without | 9 | * Redistribution and use in source and binary forms, with or without | |
10 | * modification, are permitted provided that the following conditions | 10 | * modification, are permitted provided that the following conditions | |
11 | * are met: | 11 | * are met: | |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright | |
13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. | |
14 | * 2. Redistributions in binary form must reproduce the above copyright | 14 | * 2. Redistributions in binary form must reproduce the above copyright | |
@@ -48,26 +48,27 @@ struct quotahandle { | @@ -48,26 +48,27 @@ struct quotahandle { | |||
48 | struct quotacursor { | 48 | struct quotacursor { | |
49 | struct quotahandle *qc_qh; | 49 | struct quotahandle *qc_qh; | |
50 | enum { QC_PROPLIB, QC_OLDFILES } qc_type; | 50 | enum { QC_PROPLIB, QC_OLDFILES } qc_type; | |
51 | union { | 51 | union { | |
52 | struct proplib_quotacursor *qc_proplib; | 52 | struct proplib_quotacursor *qc_proplib; | |
53 | struct oldfiles_quotacursor *qc_oldfiles; | 53 | struct oldfiles_quotacursor *qc_oldfiles; | |
54 | } u; | 54 | } u; | |
55 | }; | 55 | }; | |
56 | 56 | |||
57 | 57 | |||
58 | /* proplib kernel interface */ | 58 | /* proplib kernel interface */ | |
59 | int __quota_proplib_getversion(struct quotahandle *qh, int8_t *version_ret); | 59 | int __quota_proplib_getversion(struct quotahandle *qh, int8_t *version_ret); | |
60 | const char *__quota_proplib_getimplname(struct quotahandle *); | 60 | const char *__quota_proplib_getimplname(struct quotahandle *); | |
61 | unsigned __quota_proplib_getrestrictions(struct quotahandle *); | |||
61 | unsigned __quota_proplib_getnumidtypes(void); | 62 | unsigned __quota_proplib_getnumidtypes(void); | |
62 | const char *__quota_proplib_idtype_getname(int idtype); | 63 | const char *__quota_proplib_idtype_getname(int idtype); | |
63 | unsigned __quota_proplib_getnumobjtypes(void); | 64 | unsigned __quota_proplib_getnumobjtypes(void); | |
64 | const char *__quota_proplib_objtype_getname(int objtype); | 65 | const char *__quota_proplib_objtype_getname(int objtype); | |
65 | int __quota_proplib_objtype_isbytes(int objtype); | 66 | int __quota_proplib_objtype_isbytes(int objtype); | |
66 | int __quota_proplib_get(struct quotahandle *qh, const struct quotakey *qk, | 67 | int __quota_proplib_get(struct quotahandle *qh, const struct quotakey *qk, | |
67 | struct quotaval *qv); | 68 | struct quotaval *qv); | |
68 | int __quota_proplib_put(struct quotahandle *qh, const struct quotakey *qk, | 69 | int __quota_proplib_put(struct quotahandle *qh, const struct quotakey *qk, | |
69 | const struct quotaval *qv); | 70 | const struct quotaval *qv); | |
70 | int __quota_proplib_delete(struct quotahandle *qh, const struct quotakey *qk); | 71 | int __quota_proplib_delete(struct quotahandle *qh, const struct quotakey *qk); | |
71 | struct proplib_quotacursor *__quota_proplib_cursor_create(void); | 72 | struct proplib_quotacursor *__quota_proplib_cursor_create(void); | |
72 | void __quota_proplib_cursor_destroy(struct proplib_quotacursor *); | 73 | void __quota_proplib_cursor_destroy(struct proplib_quotacursor *); | |
73 | int __quota_proplib_cursor_skipidtype(struct proplib_quotacursor *, | 74 | int __quota_proplib_cursor_skipidtype(struct proplib_quotacursor *, |