• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/netatalk-3.0.5/libatalk/compat/
1/*
2 *
3 * taken from the quota-1.55 used on linux. here's the bsd copyright:
4 *
5 * Copyright (c) 1980, 1990 Regents of the University of California. All
6 * rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by Robert Elz at
9 * The University of Melbourne.
10 */
11
12#ifdef HAVE_CONFIG_H
13#include "config.h"
14#endif /* HAVE_CONFIG_H */
15
16#include <stdio.h> /* to get __GNU_LIBRARY__ */
17
18/* list of machines that don't have these functions:
19	solaris
20	linux libc5
21*/
22#if defined(NEED_RQUOTA) || defined(SOLARIS) || (defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ < 6)
23
24#include <rpc/rpc.h>
25#include <rpcsvc/rquota.h>
26
27#ifndef u_int
28#define u_int unsigned
29#endif
30
31bool_t
32xdr_getquota_args(xdrs, objp)
33	XDR *xdrs;
34	getquota_args *objp;
35{
36	if (!xdr_string(xdrs, &objp->gqa_pathp, RQ_PATHLEN)) {
37		return (FALSE);
38	}
39	if (!xdr_int(xdrs, &objp->gqa_uid)) {
40		return (FALSE);
41	}
42	return (TRUE);
43}
44
45
46bool_t
47xdr_rquota(xdrs, objp)
48	XDR *xdrs;
49	rquota *objp;
50{
51	if (!xdr_int(xdrs, &objp->rq_bsize)) {
52		return (FALSE);
53	}
54	if (!xdr_bool(xdrs, &objp->rq_active)) {
55		return (FALSE);
56	}
57	if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
58		return (FALSE);
59	}
60	if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
61		return (FALSE);
62	}
63	if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
64		return (FALSE);
65	}
66	if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
67		return (FALSE);
68	}
69	if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
70		return (FALSE);
71	}
72	if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
73		return (FALSE);
74	}
75	if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
76		return (FALSE);
77	}
78	if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
79		return (FALSE);
80	}
81	return (TRUE);
82}
83
84
85
86
87bool_t
88xdr_gqr_status(xdrs, objp)
89	XDR *xdrs;
90	gqr_status *objp;
91{
92	if (!xdr_enum(xdrs, (enum_t *)objp)) {
93		return (FALSE);
94	}
95	return (TRUE);
96}
97
98
99bool_t
100xdr_getquota_rslt(xdrs, objp)
101	XDR *xdrs;
102	getquota_rslt *objp;
103{
104	if (!xdr_gqr_status(xdrs, &objp->status)) {
105		return (FALSE);
106	}
107	switch (objp->status) {
108	case Q_OK:
109		if (!xdr_rquota(xdrs, &objp->getquota_rslt_u.gqr_rquota)) {
110			return (FALSE);
111		}
112		break;
113	case Q_NOQUOTA:
114		break;
115	case Q_EPERM:
116		break;
117	default:
118		return (FALSE);
119	}
120	return (TRUE);
121}
122#endif
123