This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _SYSQUOTAS_H
#ifdef HAVE_SYS_QUOTAS
-/* Sometimes we need this on linux for linux/quota.h */
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#ifdef HAVE_ASM_TYPES_H
-#include <asm/types.h>
-#endif
-
-/*
- * This shouldn't be neccessary - it should be /usr/include/sys/quota.h
- * Unfortunately, RH7.1 ships with a different quota system using struct mem_dqblk
- * rather than the struct dqblk defined in /usr/include/sys/quota.h.
- * This means we must include linux/quota.h to have a hope of working on
- * RH7.1 systems. And it also means this breaks if the kernel is upgraded
- * to a Linus 2.4.x (where x > the minor number shipped with RH7.1) until
- * Linus synchronises with the AC patches. Sometimes I *hate* Linux :-). JRA.
- */
-#ifdef HAVE_LINUX_QUOTA_H
-#include <linux/quota.h>
-#elif defined(HAVE_SYS_QUOTA_H)
-#include <sys/quota.h>
-#endif
-
-#if defined(HAVE_STRUCT_IF_DQBLK)
-# define SYS_DQBLK if_dqblk
-# define dqb_curblocks dqb_curspace/bsize
-#elif defined(HAVE_STRUCT_MEM_DQBLK)
-# define SYS_DQBLK mem_dqblk
-# define dqb_curblocks dqb_curspace/bsize
-#else /* STRUCT_DQBLK */
-# define SYS_DQBLK dqblk
-#endif
-
-#ifndef Q_SETQLIM
-#define Q_SETQLIM Q_SETQUOTA
-#endif
-
-/*********************************************
- check for XFS QUOTA MANAGER
- *********************************************/
-/* on linux */
-#ifdef HAVE_LINUX_XQM_H
-# include <linux/xqm.h>
-# define HAVE_XFS_QUOTA
-#else
-# ifdef HAVE_XFS_XQM_H
-# include <xfs/xqm.h>
-# define HAVE_XFS_QUOTA
-# else
-# ifdef HAVE_LINUX_DQBLK_XFS_H
-# include <linux/dqblk_xfs.h>
-# define HAVE_XFS_QUOTA
-# endif
-# endif
-#endif
-/* on IRIX */
-#ifdef Q_XGETQUOTA
-# ifndef HAVE_XFS_QUOTA
-# define HAVE_XFS_QUOTA
-# ifndef Q_XQUOTAON
-# define Q_XQUOTAON Q_QUOTAON
-# endif /* Q_XQUOTAON */
-# ifndef Q_XQUOTAOFF
-# define Q_XQUOTAOFF Q_QUOTAOFF
-# endif /* Q_XQUOTAOFF */
-# ifndef Q_XGETQSTAT
-# define Q_XGETQSTAT Q_GETQSTAT
-# endif /* Q_XGETQSTAT */
-# endif /* HAVE_XFS_QUOTA */
-#endif /* Q_XGETQUOTA */
-
-#ifdef HAVE_XFS_QUOTA
-/* Linux has BBSIZE in <linux/xfs_fs.h>
- * or <xfs/xfs_fs.h>
- * IRIX has BBSIZE in <sys/param.h>
- */
-#ifdef HAVE_LINUX_XFS_FS_H
-#include <linux/xfs_fs.h>
-#elif defined(HAVE_XFS_XFS_FS_H)
-#include <xfs/xfs_fs.h>
-#endif /* *_XFS_FS_H */
-
-#ifndef BBSHIFT
-#define BBSHIFT 9
-#endif /* BBSHIFT */
-#ifndef BBSIZE
-#define BBSIZE (1<<BBSHIFT)
-#endif /* BBSIZE */
-
-#endif /* HAVE_XFS_QUOTA */
-
-#ifdef LINUX
-# ifndef QUOTABLOCK_SIZE
-# define QUOTABLOCK_SIZE 1024
-# endif
-/* end LINUX */
-#elif defined(IRIX6)
-# ifndef QUOTABLOCK_SIZE
-# define QUOTABLOCK_SIZE BBSIZE
-# endif
-/* end IRIX6 */
-#else /* HPUP,... */
-# ifndef QUOTABLOCK_SIZE
-# define QUOTABLOCK_SIZE DEV_BSIZE
-# endif
-#endif /* HPUP,... */
-
-#if !defined(QUOTAFILENAME) && defined(QFILENAME)
-#define QUOTAFILENAME QFILENAME
-#endif
-
-#ifdef INITQFNAMES
-#define USERQUOTAFILE_EXTENSION ".user"
-#else
-#define USERQUOTAFILE_EXTENSION ""
-#endif
-
-/* this check should be before the QCMD fake! */
-#if defined(QCMD)&&defined(GRPQUOTA)
-#define HAVE_GROUP_QUOTA
-#endif
-
-/* on some systems we have to fake this up ...*/
-#ifndef QCMD
-#define QCMD(cmd,type) (cmd)
-#endif /* QCMD */
-
-
-#ifdef HAVE_DQB_FSOFTLIMIT
-#define dqb_isoftlimit dqb_fsoftlimit
-#define dqb_ihardlimit dqb_fhardlimit
-#define dqb_curinodes dqb_curfiles
-#endif
-
-/* maybe we can add a configure test for HAVE_CADDR_T,
- * but it's not needed
- */
-#ifdef HAVE_CADDR_T
-#define CADDR_T caddr_t
-#else /* CADDR_T */
-#define CADDR_T void*
-#endif /* CADDR_T */
-
#if defined(HAVE_MNTENT_H)&&defined(HAVE_SETMNTENT)&&defined(HAVE_GETMNTENT)&&defined(HAVE_ENDMNTENT)
#include <mntent.h>
#define HAVE_MNTENT 1
#endif /* HAVE_SYS_QUOTAS */
-#ifndef QUOTABLOCK_SIZE
-#define QUOTABLOCK_SIZE 1024
-#endif
-
/**************************************************
Some stuff for the sys_quota api.
**************************************************/
-#define SMB_QUOTAS_NO_LIMIT ((SMB_BIG_UINT)(0))
-#define SMB_QUOTAS_NO_SPACE ((SMB_BIG_UINT)(1))
+#define SMB_QUOTAS_NO_LIMIT ((uint64_t)(0))
+#define SMB_QUOTAS_NO_SPACE ((uint64_t)(1))
+
+#define SMB_QUOTAS_SET_NO_LIMIT(dp) \
+{\
+ (dp)->softlimit = SMB_QUOTAS_NO_LIMIT;\
+ (dp)->hardlimit = SMB_QUOTAS_NO_LIMIT;\
+ (dp)->isoftlimit = SMB_QUOTAS_NO_LIMIT;\
+ (dp)->ihardlimit = SMB_QUOTAS_NO_LIMIT;\
+}
+
+#define SMB_QUOTAS_SET_NO_SPACE(dp) \
+{\
+ (dp)->softlimit = SMB_QUOTAS_NO_SPACE;\
+ (dp)->hardlimit = SMB_QUOTAS_NO_SPACE;\
+ (dp)->isoftlimit = SMB_QUOTAS_NO_SPACE;\
+ (dp)->ihardlimit = SMB_QUOTAS_NO_SPACE;\
+}
typedef struct _SMB_DISK_QUOTA {
enum SMB_QUOTA_TYPE qtype;
- SMB_BIG_UINT bsize;
- SMB_BIG_UINT hardlimit; /* In bsize units. */
- SMB_BIG_UINT softlimit; /* In bsize units. */
- SMB_BIG_UINT curblocks; /* In bsize units. */
- SMB_BIG_UINT ihardlimit; /* inode hard limit. */
- SMB_BIG_UINT isoftlimit; /* inode soft limit. */
- SMB_BIG_UINT curinodes; /* Current used inodes. */
- uint32 qflags;
+ uint64_t bsize;
+ uint64_t hardlimit; /* In bsize units. */
+ uint64_t softlimit; /* In bsize units. */
+ uint64_t curblocks; /* In bsize units. */
+ uint64_t ihardlimit; /* inode hard limit. */
+ uint64_t isoftlimit; /* inode soft limit. */
+ uint64_t curinodes; /* Current used inodes. */
+ uint32_t qflags;
} SMB_DISK_QUOTA;
+#ifndef QUOTABLOCK_SIZE
+#define QUOTABLOCK_SIZE 1024
+#endif
+
#endif /*_SYSQUOTAS_H */