]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/rquotad/rquota_server.c
rerun autoconf
[nfs-utils.git] / utils / rquotad / rquota_server.c
index 1c5e0e6f56c474793a196213467338a87929d953..2832974c735c174097074319682342a5242f5dfb 100644 (file)
@@ -26,7 +26,7 @@
 #include <sys/stat.h>
 #include <sys/param.h>
 #include <sys/quota.h>
-#include <sys/vfs.h>
+#include <sys/mount.h>
 #include <dirent.h>
 #include <paths.h>
 #include <stdio.h>
 #define MNTTYPE_AUTOFS "autofs"
 #endif
 
+#ifndef BLOCK_SIZE
+#define BLOCK_SIZE 1024
+#endif
+
 /*
  * Global unix authentication credentials.
  */
@@ -72,7 +76,6 @@ getquota_rslt *getquotainfo(int flags, caddr_t *argp, struct svc_req *rqstp)
    char *pathname, *qfpathname;
    int fd, err, id, type;
    struct stat stm, stn;
-   struct statfs stf;
 
    /*
     * First check authentication.
@@ -107,8 +110,10 @@ getquota_rslt *getquotainfo(int flags, caddr_t *argp, struct svc_req *rqstp)
 
    fp = setmntent(MNTTAB, "r");
    while ((mnt = getmntent(fp)) != (struct mntent *)0) {
-      if (stat(mnt->mnt_dir, &stm) == -1
-         || stat(pathname, &stn) == -1)
+      if (stat(mnt->mnt_dir, &stm) == -1)
+         continue;
+
+      if (stat(pathname, &stn) == -1)
          break;
       else if (stm.st_dev != stn.st_dev)
          continue;
@@ -120,11 +125,8 @@ getquota_rslt *getquotainfo(int flags, caddr_t *argp, struct svc_req *rqstp)
          || strcasecmp (mnt->mnt_type, MNTTYPE_IGNORE) == 0)
          break;
 
-      if (statfs(pathname, &stf) == -1) {
-         result.status = Q_EPERM;
-         return (&result);
-      }
-      result.getquota_rslt_u.gqr_rquota.rq_bsize = stf.f_bsize;
+      /* All blocks reported are in BLOCK_SIZE. */
+      result.getquota_rslt_u.gqr_rquota.rq_bsize = BLOCK_SIZE;
 
       if (hasquota(mnt, type, &qfpathname)) {
          if ((err = quotactl(QCMD(Q_GETQUOTA, type), mnt->mnt_fsname,