#include <quota/quota.h>
static int
-getfreespace(struct vol *vol, VolSpace *bfree, VolSpace *btotal,
- uid_t uid, const char *classq)
+getfreespace(const AFPObj *obj, struct vol *vol, VolSpace *bfree, VolSpace *btotal,
+ uid_t uid, const char *classq)
{
int retq;
struct ufs_quota_entry ufsq[QUOTA_NLIMITS];
strerror(errno));
return -1;
}
- if ((retq = getfsquota(vol->v_path, ufsq, uid, classq)) < 0) {
+ if ((retq = getfsquota(obj, vol, ufsq, uid, classq)) < 0) {
LOG(log_info, logtype_afpd, "getfsquota(%s, %s): %s",
vol->v_path, classq, strerror(errno));
}
return 1;
}
-int uquota_getvolspace( struct vol *vol, VolSpace *bfree, VolSpace *btotal, const u_int32_t bsize)
+int uquota_getvolspace(const AFPObj *obj, struct vol *vol, VolSpace *bfree, VolSpace *btotal, const u_int32_t bsize)
{
int uretq, gretq;
VolSpace ubfree, ubtotal;
VolSpace gbfree, gbtotal;
- uretq = getfreespace(vol, &ubfree, &ubtotal,
- uuid, QUOTADICT_CLASS_USER);
+ uretq = getfreespace(obj, vol, &ubfree, &ubtotal,
+ uuid, QUOTADICT_CLASS_USER);
LOG(log_info, logtype_afpd, "getfsquota(%s): %d %d",
vol->v_path, (int)ubfree, (int)ubtotal);
- if (ngroups >= 1) {
+ if (obj->ngroups >= 1) {
gretq = getfreespace(vol, &ubfree, &ubtotal,
- groups[0], QUOTADICT_CLASS_GROUP);
+ obj->groups[0], QUOTADICT_CLASS_GROUP);
} else
gretq = -1;
if (uretq < 1 && gretq < 1) { /* no quota for this fs */
#endif /* __svr4__ */
-static int getfsquota(struct vol *vol, const int uid, struct dqblk *dq)
+static int getfsquota(const AFPObj *obj, struct vol *vol, const int uid, struct dqblk *dq)
{
struct dqblk dqg;
if ( quotactl( vol->v_path, QCMD(Q_GETQUOTA,USRQUOTA),
uid, (char *)dq ) != 0 ) {
/* try group quotas */
- if (ngroups >= 1) {
+ if (obj->ngroups >= 1) {
if ( quotactl(vol->v_path, QCMD(Q_GETQUOTA, GRPQUOTA),
- groups[0], (char *) &dqg) != 0 ) {
+ obj->groups[0], (char *) &dqg) != 0 ) {
seteuid( uid );
return( AFPERR_PARAM );
}
}
-static int getquota( struct vol *vol, struct dqblk *dq, const uint32_t bsize)
+static int getquota(const AFPObj *obj, struct vol *vol, struct dqblk *dq, const uint32_t bsize)
{
char *p;
return getnfsquota(vol, uuid, bsize, dq);
} else
/* local filesystem */
- return getfsquota(vol, uuid, dq);
+ return getfsquota(obj, vol, obj->uid, dq);
#else /* TRU64 */
- return vol->v_nfs ? getnfsquota(vol, uuid, bsize, dq) :
- getfsquota(vol, uuid, dq);
+ return vol->v_nfs ? getnfsquota(vol, obj->uid, bsize, dq) :
+ getfsquota(obj, vol, obj->uid, dq);
#endif /* TRU64 */
}
#define tobytes(a, b) dbtob((VolSpace) (a))
#endif
-int uquota_getvolspace( struct vol *vol, VolSpace *bfree, VolSpace *btotal, const uint32_t bsize)
+int uquota_getvolspace(const AFPObj *obj, struct vol *vol, VolSpace *bfree, VolSpace *btotal, const uint32_t bsize)
{
uint64_t this_bsize;
struct dqblk dqblk;
this_bsize = bsize;
- if (getquota( vol, &dqblk, bsize) != 0 ) {
+ if (getquota(obj, vol, &dqblk, bsize) != 0 ) {
return( AFPERR_PARAM );
}