1/* this test should find out what quota api is available on the os */ 2 3 int autoconf_quota(void); 4 5#if defined(HAVE_QUOTACTL_4A) 6/* long quotactl(int cmd, char *special, qid_t id, caddr_t addr) */ 7 8#ifdef HAVE_SYS_TYPES_H 9#include <sys/types.h> 10#endif 11 12#ifdef HAVE_ASM_TYPES_H 13#include <asm/types.h> 14#endif 15 16#if defined(HAVE_LINUX_QUOTA_H) 17# include <linux/quota.h> 18# if defined(HAVE_STRUCT_IF_DQBLK) 19# define SYS_DQBLK if_dqblk 20# elif defined(HAVE_STRUCT_MEM_DQBLK) 21# define SYS_DQBLK mem_dqblk 22# endif 23#elif defined(HAVE_SYS_QUOTA_H) 24# include <sys/quota.h> 25#endif 26 27#ifndef SYS_DQBLK 28#define SYS_DQBLK dqblk 29#endif 30 31 int autoconf_quota(void); 32 33 int autoconf_quota(void) 34{ 35 int ret = -1; 36 struct SYS_DQBLK D; 37 38 ret = quotactl(Q_GETQUOTA,"/dev/hda1",0,(void *)&D); 39 40 return ret; 41} 42 43#elif defined(HAVE_QUOTACTL_4B) 44/* int quotactl(const char *path, int cmd, int id, char *addr); */ 45 46#ifdef HAVE_SYS_QUOTA_H 47#include <sys/quota.h> 48#else /* *BSD */ 49#include <sys/types.h> 50#include <ufs/ufs/quota.h> 51#include <machine/param.h> 52#endif 53 54 int autoconf_quota(void) 55{ 56 int ret = -1; 57 struct dqblk D; 58 59 ret = quotactl("/",Q_GETQUOTA,0,(char *) &D); 60 61 return ret; 62} 63 64#elif defined(HAVE_QUOTACTL_3) 65/* int quotactl (char *spec, int request, char *arg); */ 66 67#ifdef HAVE_SYS_TYPES_H 68#include <sys/types.h> 69#endif 70#ifdef HAVE_SYS_QUOTA_H 71#include <sys/quota.h> 72#endif 73 74 int autoconf_quota(void) 75{ 76 int ret = -1; 77 struct q_request request; 78 79 ret = quotactl("/", Q_GETQUOTA, &request); 80 81 return ret; 82} 83 84#elif defined(HAVE_QUOTACTL_2) 85 86#error HAVE_QUOTACTL_2 not implemented 87 88#else 89 90#error Unknow QUOTACTL prototype 91 92#endif 93 94 int main(void) 95{ 96 autoconf_quota(); 97 return 0; 98} 99