diff options
| author | dholland <dholland@NetBSD.org> | 2012-01-09 15:19:44 +0000 |
|---|---|---|
| committer | dholland <dholland@NetBSD.org> | 2012-01-09 15:19:44 +0000 |
| commit | fedf130a7fcc481f2cdf6237ebd11b67c8e96078 (patch) | |
| tree | 9987f134a19b10ded830f549bc5ec28be5a72b9c /include | |
| parent | 551fc874161bae632ef4c9701dc27404ec50b392 (diff) | |
Add <quota.h> with the new libquota API.
This is the user/application API and does not include the kernel
interface. Definitions shared with the kernel are found in
<sys/quota.h>.
Since I've been working on a local branch I have taken the liberty of
moving the latest-so-far version of <quota.h> to the front of the
patch queue. This loses (a small amount of) history but has the
advantage of avoiding unnecessary version bumps of libquota.so.
Diffstat (limited to 'include')
| -rw-r--r-- | include/Makefile | 4 | ||||
| -rw-r--r-- | include/quota.h | 102 |
2 files changed, 104 insertions, 2 deletions
diff --git a/include/Makefile b/include/Makefile index dd8209b8cff..1bd046a5db0 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.136 2011/08/26 21:22:10 dyoung Exp $ +# $NetBSD: Makefile,v 1.137 2012/01/09 15:19:45 dholland Exp $ # @(#)Makefile 8.2 (Berkeley) 1/4/94 # Doing a make includes builds /usr/include @@ -16,7 +16,7 @@ INCS= a.out.h aio.h ar.h assert.h atomic.h \ login_cap.h lwp.h malloc.h math.h md2.h \ memory.h mntopts.h monetary.h mpool.h mqueue.h \ ndbm.h netconfig.h netdb.h netgroup.h nlist.h nl_types.h nsswitch.h \ - paths.h pwd.h randomid.h ranlib.h re_comp.h regex.h regexp.h \ + paths.h pwd.h quota.h randomid.h ranlib.h re_comp.h regex.h regexp.h \ resolv.h res_update.h rmt.h sched.h search.h semaphore.h setjmp.h \ sgtty.h signal.h stab.h stdbool.h stddef.h stdio.h stdlib.h string.h \ strings.h stringlist.h struct.h sysexits.h tar.h time.h \ diff --git a/include/quota.h b/include/quota.h new file mode 100644 index 00000000000..06233a5caf8 --- /dev/null +++ b/include/quota.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by David A. Holland. + * + * 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. + */ + +#ifndef _QUOTA_H_ +#define _QUOTA_H_ + +#include <sys/types.h> +#include <sys/quota.h> + +struct quotahandle; /* Opaque. */ +struct quotacursor; /* Opaque. */ + +/* quota id types (entities being billed) */ +#define QUOTA_IDTYPE_USER 0 +#define QUOTA_IDTYPE_GROUP 1 + +/* quota object types (things being limited) */ +#define QUOTA_OBJTYPE_BLOCKS 0 +#define QUOTA_OBJTYPE_FILES 1 + +/* id value for "default" */ +#define QUOTA_DEFAULTID ((id_t)-1) + +/* limit value for "no limit" */ +#define QUOTA_NOLIMIT ((uint64_t)0xffffffffffffffffULL) + +/* time value for "no time" */ +#define QUOTA_NOTIME ((time_t)-1) + + +struct quotakey { + int qk_idtype; + id_t qk_id; + int qk_objtype; +}; + +void quotaval_clear(struct quotaval *); + +struct quotahandle *quota_open(const char *); +void quota_close(struct quotahandle *); + +const char *quota_getmountpoint(struct quotahandle *); +const char *quota_getmountdevice(struct quotahandle *); + +const char *quota_getimplname(struct quotahandle *); + +unsigned quota_getnumidtypes(struct quotahandle *); +const char *quota_idtype_getname(struct quotahandle *, int /*idtype*/); + +unsigned quota_getnumobjtypes(struct quotahandle *); +const char *quota_objtype_getname(struct quotahandle *, int /*objtype*/); +int quota_objtype_isbytes(struct quotahandle *, int /*objtype*/); + +int quota_get(struct quotahandle *, const struct quotakey *, + struct quotaval *); + +int quota_put(struct quotahandle *, const struct quotakey *, + const struct quotaval *); + +int quota_delete(struct quotahandle *, const struct quotakey *); + +struct quotacursor *quota_opencursor(struct quotahandle *); +void quotacursor_close(struct quotacursor *); + +int quotacursor_skipidtype(struct quotacursor *, unsigned /*idtype*/); + +int quotacursor_get(struct quotacursor *, struct quotakey *, + struct quotaval *); + +int quotacursor_getn(struct quotacursor *, struct quotakey *, + struct quotaval *, unsigned /*maxnum*/); + +int quotacursor_atend(struct quotacursor *); +int quotacursor_rewind(struct quotacursor *); + +#endif /* _QUOTA_H_ */ |
