static int default_quota_get_quota(vfs_handle_struct *handle, const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) { int ret = -1; if ((ret = SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, dq)) != 0) { return ret; } switch (qtype) { case SMB_USER_QUOTA_TYPE: /* we use id.uid == 0 for default quotas */ if ((id.uid==DEFAULT_QUOTA_UID(handle)) && DEFAULT_QUOTA_UID_NOLIMIT(handle)) { SMB_QUOTAS_SET_NO_LIMIT(dq); } break; #ifdef HAVE_GROUP_QUOTA case SMB_GROUP_QUOTA_TYPE: /* we use id.gid == 0 for default quotas */ if ((id.gid==DEFAULT_QUOTA_GID(handle)) && DEFAULT_QUOTA_GID_NOLIMIT(handle)) { SMB_QUOTAS_SET_NO_LIMIT(dq); } break; #endif /* HAVE_GROUP_QUOTA */ case SMB_USER_FS_QUOTA_TYPE: { unid_t qid; uint32_t qflags = dq->qflags; qid.uid = DEFAULT_QUOTA_UID(handle); SMB_VFS_NEXT_GET_QUOTA( handle, path, SMB_USER_QUOTA_TYPE, qid, dq); dq->qflags = qflags; } break; #ifdef HAVE_GROUP_QUOTA case SMB_GROUP_FS_QUOTA_TYPE: { unid_t qid; uint32_t qflags = dq->qflags; qid.gid = DEFAULT_QUOTA_GID(handle); SMB_VFS_NEXT_GET_QUOTA(handle, path, SMB_GROUP_QUOTA_TYPE, qid, dq); dq->qflags = qflags; } break; #endif /* HAVE_GROUP_QUOTA */ default: errno = ENOSYS; return -1; break; } return ret; }
static int skel_get_quota(vfs_handle_struct *handle, const struct smb_filename *smb_fname, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) { return SMB_VFS_NEXT_GET_QUOTA(handle, smb_fname, qtype, id, dq); }
static int skel_get_quota(vfs_handle_struct *handle, const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) { return SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, dq); }