summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2009-01-30 13:54:03 +0000
committerdes <des@FreeBSD.org>2009-01-30 13:54:03 +0000
commit604db9f61a0640dd95d3f93b517db0e54b17f090 (patch)
treef6bcaa578ebaec30009182705f8c54ba76d1e4c0 /libexec
parentc5677e5d7ad2e7b7122f55bc89be13fcb3f7128d (diff)
downloadFreeBSD-src-604db9f61a0640dd95d3f93b517db0e54b17f090.zip
FreeBSD-src-604db9f61a0640dd95d3f93b517db0e54b17f090.tar.gz
WIP
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rpc.rquotad/Makefile4
-rw-r--r--libexec/rpc.rquotad/rquotad.c28
2 files changed, 9 insertions, 23 deletions
diff --git a/libexec/rpc.rquotad/Makefile b/libexec/rpc.rquotad/Makefile
index feacce5..fb3f38bc 100644
--- a/libexec/rpc.rquotad/Makefile
+++ b/libexec/rpc.rquotad/Makefile
@@ -6,7 +6,7 @@ MAN = rpc.rquotad.8
WARNS ?= 6
-DPADD= ${LIBRPCSVC}
-LDADD= -lrpcsvc
+DPADD= ${LIBRPCSVC} ${LIBUTIL}
+LDADD= -lrpcsvc -lutil
.include <bsd.prog.mk>
diff --git a/libexec/rpc.rquotad/rquotad.c b/libexec/rpc.rquotad/rquotad.c
index 559a57a..63bb0c7 100644
--- a/libexec/rpc.rquotad/rquotad.c
+++ b/libexec/rpc.rquotad/rquotad.c
@@ -23,6 +23,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <fstab.h>
#include <grp.h>
+#include <libutil.h>
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
@@ -247,9 +248,10 @@ initfs(void)
int
getfsquota(long id, char *path, struct dqblk *dqblk)
{
+ struct quotafile *qf;
struct stat st_path;
struct fs_stat *fs;
- int qcmd, fd, ret = 0;
+ int qcmd, ret = 0;
if (stat(path, &st_path) < 0)
return (0);
@@ -265,32 +267,16 @@ getfsquota(long id, char *path, struct dqblk *dqblk)
if (quotactl(fs->fs_file, qcmd, id, dqblk) == 0)
return (1);
- if ((fd = open(fs->qfpathname, O_RDONLY)) < 0) {
+ if ((qf = quota_open(fs->qfpathname)) == NULL) {
syslog(LOG_ERR, "open error: %s: %m", fs->qfpathname);
return (0);
}
- if (lseek(fd, (off_t)(id * sizeof(struct dqblk)), L_SET) == (off_t)-1) {
- close(fd);
- return (1);
- }
- switch (read(fd, dqblk, sizeof(struct dqblk))) {
- case 0:
- /*
- * Convert implicit 0 quota (EOF)
- * into an explicit one (zero'ed dqblk)
- */
- bzero(dqblk, sizeof(struct dqblk));
- ret = 1;
- break;
- case sizeof(struct dqblk): /* OK */
- ret = 1;
- break;
- default: /* ERROR */
+ if (quota_read(qf, dqblk, id) != 0) {
syslog(LOG_ERR, "read error: %s: %m", fs->qfpathname);
- close(fd);
+ quota_close(qf);
return (0);
}
- close(fd);
+ quota_close(qf);
}
return (ret);
}
OpenPOWER on IntegriCloud