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