#include <sys/cdefs.h>
__RCSID("$NetBSD: quota_schema.c,v 1.7 2012/02/01 05:46:46 dholland Exp $");
#include <sys/types.h>
#include <sys/statvfs.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <quota.h>
#include "quotapvt.h"
const char *
quota_getimplname(struct quotahandle *qh)
{
switch (qh->qh_mode) {
case QUOTA_MODE_NFS:
return "nfs via rquotad";
case QUOTA_MODE_OLDFILES:
return __quota_oldfiles_getimplname(qh);
case QUOTA_MODE_KERNEL:
return __quota_kernel_getimplname(qh);
default:
break;
}
errno = EINVAL;
return NULL;
}
unsigned
quota_getrestrictions(struct quotahandle *qh)
{
switch (qh->qh_mode) {
case QUOTA_MODE_NFS:
return QUOTA_RESTRICT_32BIT | QUOTA_RESTRICT_READONLY;
case QUOTA_MODE_OLDFILES:
return QUOTA_RESTRICT_NEEDSQUOTACHECK |
QUOTA_RESTRICT_UNIFORMGRACE |
QUOTA_RESTRICT_32BIT;
case QUOTA_MODE_KERNEL:
return __quota_kernel_getrestrictions(qh);
default:
break;
}
errno = EINVAL;
return 0;
}
int
quota_getnumidtypes(struct quotahandle *qh)
{
switch (qh->qh_mode) {
case QUOTA_MODE_NFS:
return 2;
case QUOTA_MODE_KERNEL:
return __quota_kernel_getnumidtypes(qh);
case QUOTA_MODE_OLDFILES:
default:
break;
}
return 2;
}
const char *
quota_idtype_getname(struct quotahandle *qh, int idtype)
{
switch (qh->qh_mode) {
case QUOTA_MODE_KERNEL:
return __quota_kernel_idtype_getname(qh, idtype);
case QUOTA_MODE_NFS:
case QUOTA_MODE_OLDFILES:
break;
}
switch (idtype) {
case QUOTA_IDTYPE_USER:
return "user";
case QUOTA_IDTYPE_GROUP:
return "group";
default:
break;
}
errno = EINVAL;
return "???";
}
int
quota_getnumobjtypes(struct quotahandle *qh)
{
switch (qh->qh_mode) {
case QUOTA_MODE_KERNEL:
return __quota_kernel_getnumobjtypes(qh);
case QUOTA_MODE_NFS:
case QUOTA_MODE_OLDFILES:
default:
break;
}
return 2;
}
const char *
quota_objtype_getname(struct quotahandle *qh, int objtype)
{
switch (qh->qh_mode) {
case QUOTA_MODE_KERNEL:
return __quota_kernel_objtype_getname(qh, objtype);
case QUOTA_MODE_NFS:
case QUOTA_MODE_OLDFILES:
default:
break;
}
switch (objtype) {
case QUOTA_OBJTYPE_BLOCKS:
return "block";
case QUOTA_OBJTYPE_FILES:
return "file";
default:
break;
}
errno = EINVAL;
return "???";
}
int
quota_objtype_isbytes(struct quotahandle *qh, int objtype)
{
switch (qh->qh_mode) {
case QUOTA_MODE_KERNEL:
return __quota_kernel_objtype_isbytes(qh, objtype);
case QUOTA_MODE_NFS:
case QUOTA_MODE_OLDFILES:
default:
break;
}
switch (objtype) {
case QUOTA_OBJTYPE_BLOCKS:
return 1;
case QUOTA_OBJTYPE_FILES:
return 0;
default:
break;
}
errno = EINVAL;
return 0;
}