xref: /freebsd/usr.sbin/rpc.lockd/test.c (revision df82e9ba02c7ea6099480b44d09a741c4293ba62)
1df82e9baSPhilippe Charnier #ifndef lint
2df82e9baSPhilippe Charnier #if 0
3df82e9baSPhilippe Charnier static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";
4df82e9baSPhilippe Charnier static char sccsid[] = "from: * @(#)nlm_prot.x	2.1 88/08/01 4.0 RPCSRC";
5df82e9baSPhilippe Charnier #endif
6df82e9baSPhilippe Charnier static const char rcsid[] =
7df82e9baSPhilippe Charnier 	"$Id$";
8df82e9baSPhilippe Charnier #endif /* not lint */
9df82e9baSPhilippe Charnier 
10503d2aa8SPeter Wemm #include <rpc/rpc.h>
11503d2aa8SPeter Wemm #include <rpcsvc/nlm_prot.h>
12503d2aa8SPeter Wemm 
13503d2aa8SPeter Wemm /* Default timeout can be changed using clnt_control() */
14503d2aa8SPeter Wemm static struct timeval TIMEOUT = { 0, 0 };
15503d2aa8SPeter Wemm 
16503d2aa8SPeter Wemm nlm_testres *
17503d2aa8SPeter Wemm nlm_test_1(argp, clnt)
18503d2aa8SPeter Wemm 	struct nlm_testargs *argp;
19503d2aa8SPeter Wemm 	CLIENT *clnt;
20503d2aa8SPeter Wemm {
21503d2aa8SPeter Wemm 	static nlm_testres res;
22503d2aa8SPeter Wemm 
23503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
24503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_TEST, xdr_nlm_testargs, argp, xdr_nlm_testres, &res, TIMEOUT) != RPC_SUCCESS) {
25503d2aa8SPeter Wemm 		return (NULL);
26503d2aa8SPeter Wemm 	}
27503d2aa8SPeter Wemm 	return (&res);
28503d2aa8SPeter Wemm }
29503d2aa8SPeter Wemm 
30503d2aa8SPeter Wemm 
31503d2aa8SPeter Wemm nlm_res *
32503d2aa8SPeter Wemm nlm_lock_1(argp, clnt)
33503d2aa8SPeter Wemm 	struct nlm_lockargs *argp;
34503d2aa8SPeter Wemm 	CLIENT *clnt;
35503d2aa8SPeter Wemm {
36503d2aa8SPeter Wemm 	enum clnt_stat st;
37503d2aa8SPeter Wemm 	static nlm_res res;
38503d2aa8SPeter Wemm 
39503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
40503d2aa8SPeter Wemm 	if (st = clnt_call(clnt, NLM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
41503d2aa8SPeter Wemm 		printf("clnt_call returns %d\n", st);
42503d2aa8SPeter Wemm 		clnt_perror(clnt, "humbug");
43503d2aa8SPeter Wemm 		return (NULL);
44503d2aa8SPeter Wemm 	}
45503d2aa8SPeter Wemm 	return (&res);
46503d2aa8SPeter Wemm }
47503d2aa8SPeter Wemm 
48503d2aa8SPeter Wemm 
49503d2aa8SPeter Wemm nlm_res *
50503d2aa8SPeter Wemm nlm_cancel_1(argp, clnt)
51503d2aa8SPeter Wemm 	struct nlm_cancargs *argp;
52503d2aa8SPeter Wemm 	CLIENT *clnt;
53503d2aa8SPeter Wemm {
54503d2aa8SPeter Wemm 	static nlm_res res;
55503d2aa8SPeter Wemm 
56503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
57503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_CANCEL, xdr_nlm_cancargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
58503d2aa8SPeter Wemm 		return (NULL);
59503d2aa8SPeter Wemm 	}
60503d2aa8SPeter Wemm 	return (&res);
61503d2aa8SPeter Wemm }
62503d2aa8SPeter Wemm 
63503d2aa8SPeter Wemm 
64503d2aa8SPeter Wemm nlm_res *
65503d2aa8SPeter Wemm nlm_unlock_1(argp, clnt)
66503d2aa8SPeter Wemm 	struct nlm_unlockargs *argp;
67503d2aa8SPeter Wemm 	CLIENT *clnt;
68503d2aa8SPeter Wemm {
69503d2aa8SPeter Wemm 	static nlm_res res;
70503d2aa8SPeter Wemm 
71503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
72503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_UNLOCK, xdr_nlm_unlockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
73503d2aa8SPeter Wemm 		return (NULL);
74503d2aa8SPeter Wemm 	}
75503d2aa8SPeter Wemm 	return (&res);
76503d2aa8SPeter Wemm }
77503d2aa8SPeter Wemm 
78503d2aa8SPeter Wemm 
79503d2aa8SPeter Wemm nlm_res *
80503d2aa8SPeter Wemm nlm_granted_1(argp, clnt)
81503d2aa8SPeter Wemm 	struct nlm_testargs *argp;
82503d2aa8SPeter Wemm 	CLIENT *clnt;
83503d2aa8SPeter Wemm {
84503d2aa8SPeter Wemm 	static nlm_res res;
85503d2aa8SPeter Wemm 
86503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
87503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_GRANTED, xdr_nlm_testargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
88503d2aa8SPeter Wemm 		return (NULL);
89503d2aa8SPeter Wemm 	}
90503d2aa8SPeter Wemm 	return (&res);
91503d2aa8SPeter Wemm }
92503d2aa8SPeter Wemm 
93503d2aa8SPeter Wemm 
94503d2aa8SPeter Wemm void *
95503d2aa8SPeter Wemm nlm_test_msg_1(argp, clnt)
96503d2aa8SPeter Wemm 	struct nlm_testargs *argp;
97503d2aa8SPeter Wemm 	CLIENT *clnt;
98503d2aa8SPeter Wemm {
99503d2aa8SPeter Wemm 	static char res;
100503d2aa8SPeter Wemm 
101503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
102503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_TEST_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
103503d2aa8SPeter Wemm 		return (NULL);
104503d2aa8SPeter Wemm 	}
105503d2aa8SPeter Wemm 	return ((void *)&res);
106503d2aa8SPeter Wemm }
107503d2aa8SPeter Wemm 
108503d2aa8SPeter Wemm 
109503d2aa8SPeter Wemm void *
110503d2aa8SPeter Wemm nlm_lock_msg_1(argp, clnt)
111503d2aa8SPeter Wemm 	struct nlm_lockargs *argp;
112503d2aa8SPeter Wemm 	CLIENT *clnt;
113503d2aa8SPeter Wemm {
114503d2aa8SPeter Wemm 	static char res;
115503d2aa8SPeter Wemm 
116503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
117503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_LOCK_MSG, xdr_nlm_lockargs, argp, xdr_void, NULL, TIMEOUT) != RPC_SUCCESS) {
118503d2aa8SPeter Wemm 		clnt_perror(clnt, "nlm_lock_msg_1");
119503d2aa8SPeter Wemm 		return (NULL);
120503d2aa8SPeter Wemm 	}
121503d2aa8SPeter Wemm 	return ((void *)&res);
122503d2aa8SPeter Wemm }
123503d2aa8SPeter Wemm 
124503d2aa8SPeter Wemm 
125503d2aa8SPeter Wemm void *
126503d2aa8SPeter Wemm nlm_cancel_msg_1(argp, clnt)
127503d2aa8SPeter Wemm 	struct nlm_cancargs *argp;
128503d2aa8SPeter Wemm 	CLIENT *clnt;
129503d2aa8SPeter Wemm {
130503d2aa8SPeter Wemm 	static char res;
131503d2aa8SPeter Wemm 
132503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
133503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_CANCEL_MSG, xdr_nlm_cancargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
134503d2aa8SPeter Wemm 		return (NULL);
135503d2aa8SPeter Wemm 	}
136503d2aa8SPeter Wemm 	return ((void *)&res);
137503d2aa8SPeter Wemm }
138503d2aa8SPeter Wemm 
139503d2aa8SPeter Wemm 
140503d2aa8SPeter Wemm void *
141503d2aa8SPeter Wemm nlm_unlock_msg_1(argp, clnt)
142503d2aa8SPeter Wemm 	struct nlm_unlockargs *argp;
143503d2aa8SPeter Wemm 	CLIENT *clnt;
144503d2aa8SPeter Wemm {
145503d2aa8SPeter Wemm 	static char res;
146503d2aa8SPeter Wemm 
147503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
148503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_UNLOCK_MSG, xdr_nlm_unlockargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
149503d2aa8SPeter Wemm 		return (NULL);
150503d2aa8SPeter Wemm 	}
151503d2aa8SPeter Wemm 	return ((void *)&res);
152503d2aa8SPeter Wemm }
153503d2aa8SPeter Wemm 
154503d2aa8SPeter Wemm 
155503d2aa8SPeter Wemm void *
156503d2aa8SPeter Wemm nlm_granted_msg_1(argp, clnt)
157503d2aa8SPeter Wemm 	struct nlm_testargs *argp;
158503d2aa8SPeter Wemm 	CLIENT *clnt;
159503d2aa8SPeter Wemm {
160503d2aa8SPeter Wemm 	static char res;
161503d2aa8SPeter Wemm 
162503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
163503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_GRANTED_MSG, xdr_nlm_testargs, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
164503d2aa8SPeter Wemm 		return (NULL);
165503d2aa8SPeter Wemm 	}
166503d2aa8SPeter Wemm 	return ((void *)&res);
167503d2aa8SPeter Wemm }
168503d2aa8SPeter Wemm 
169503d2aa8SPeter Wemm 
170503d2aa8SPeter Wemm void *
171503d2aa8SPeter Wemm nlm_test_res_1(argp, clnt)
172503d2aa8SPeter Wemm 	nlm_testres *argp;
173503d2aa8SPeter Wemm 	CLIENT *clnt;
174503d2aa8SPeter Wemm {
175503d2aa8SPeter Wemm 	static char res;
176503d2aa8SPeter Wemm 
177503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
178503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_TEST_RES, xdr_nlm_testres, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
179503d2aa8SPeter Wemm 		return (NULL);
180503d2aa8SPeter Wemm 	}
181503d2aa8SPeter Wemm 	return ((void *)&res);
182503d2aa8SPeter Wemm }
183503d2aa8SPeter Wemm 
184503d2aa8SPeter Wemm 
185503d2aa8SPeter Wemm void *
186503d2aa8SPeter Wemm nlm_lock_res_1(argp, clnt)
187503d2aa8SPeter Wemm 	nlm_res *argp;
188503d2aa8SPeter Wemm 	CLIENT *clnt;
189503d2aa8SPeter Wemm {
190503d2aa8SPeter Wemm 	static char res;
191503d2aa8SPeter Wemm 
192503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
193503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_LOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
194503d2aa8SPeter Wemm 		return (NULL);
195503d2aa8SPeter Wemm 	}
196503d2aa8SPeter Wemm 	return ((void *)&res);
197503d2aa8SPeter Wemm }
198503d2aa8SPeter Wemm 
199503d2aa8SPeter Wemm 
200503d2aa8SPeter Wemm void *
201503d2aa8SPeter Wemm nlm_cancel_res_1(argp, clnt)
202503d2aa8SPeter Wemm 	nlm_res *argp;
203503d2aa8SPeter Wemm 	CLIENT *clnt;
204503d2aa8SPeter Wemm {
205503d2aa8SPeter Wemm 	static char res;
206503d2aa8SPeter Wemm 
207503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
208503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_CANCEL_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
209503d2aa8SPeter Wemm 		return (NULL);
210503d2aa8SPeter Wemm 	}
211503d2aa8SPeter Wemm 	return ((void *)&res);
212503d2aa8SPeter Wemm }
213503d2aa8SPeter Wemm 
214503d2aa8SPeter Wemm 
215503d2aa8SPeter Wemm void *
216503d2aa8SPeter Wemm nlm_unlock_res_1(argp, clnt)
217503d2aa8SPeter Wemm 	nlm_res *argp;
218503d2aa8SPeter Wemm 	CLIENT *clnt;
219503d2aa8SPeter Wemm {
220503d2aa8SPeter Wemm 	static char res;
221503d2aa8SPeter Wemm 
222503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
223503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_UNLOCK_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
224503d2aa8SPeter Wemm 		return (NULL);
225503d2aa8SPeter Wemm 	}
226503d2aa8SPeter Wemm 	return ((void *)&res);
227503d2aa8SPeter Wemm }
228503d2aa8SPeter Wemm 
229503d2aa8SPeter Wemm 
230503d2aa8SPeter Wemm void *
231503d2aa8SPeter Wemm nlm_granted_res_1(argp, clnt)
232503d2aa8SPeter Wemm 	nlm_res *argp;
233503d2aa8SPeter Wemm 	CLIENT *clnt;
234503d2aa8SPeter Wemm {
235503d2aa8SPeter Wemm 	static char res;
236503d2aa8SPeter Wemm 
237503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
238503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_GRANTED_RES, xdr_nlm_res, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
239503d2aa8SPeter Wemm 		return (NULL);
240503d2aa8SPeter Wemm 	}
241503d2aa8SPeter Wemm 	return ((void *)&res);
242503d2aa8SPeter Wemm }
243503d2aa8SPeter Wemm 
244503d2aa8SPeter Wemm 
245503d2aa8SPeter Wemm nlm_shareres *
246503d2aa8SPeter Wemm nlm_share_3(argp, clnt)
247503d2aa8SPeter Wemm 	nlm_shareargs *argp;
248503d2aa8SPeter Wemm 	CLIENT *clnt;
249503d2aa8SPeter Wemm {
250503d2aa8SPeter Wemm 	static nlm_shareres res;
251503d2aa8SPeter Wemm 
252503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
253503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_SHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) {
254503d2aa8SPeter Wemm 		return (NULL);
255503d2aa8SPeter Wemm 	}
256503d2aa8SPeter Wemm 	return (&res);
257503d2aa8SPeter Wemm }
258503d2aa8SPeter Wemm 
259503d2aa8SPeter Wemm 
260503d2aa8SPeter Wemm nlm_shareres *
261503d2aa8SPeter Wemm nlm_unshare_3(argp, clnt)
262503d2aa8SPeter Wemm 	nlm_shareargs *argp;
263503d2aa8SPeter Wemm 	CLIENT *clnt;
264503d2aa8SPeter Wemm {
265503d2aa8SPeter Wemm 	static nlm_shareres res;
266503d2aa8SPeter Wemm 
267503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
268503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_UNSHARE, xdr_nlm_shareargs, argp, xdr_nlm_shareres, &res, TIMEOUT) != RPC_SUCCESS) {
269503d2aa8SPeter Wemm 		return (NULL);
270503d2aa8SPeter Wemm 	}
271503d2aa8SPeter Wemm 	return (&res);
272503d2aa8SPeter Wemm }
273503d2aa8SPeter Wemm 
274503d2aa8SPeter Wemm 
275503d2aa8SPeter Wemm nlm_res *
276503d2aa8SPeter Wemm nlm_nm_lock_3(argp, clnt)
277503d2aa8SPeter Wemm 	nlm_lockargs *argp;
278503d2aa8SPeter Wemm 	CLIENT *clnt;
279503d2aa8SPeter Wemm {
280503d2aa8SPeter Wemm 	static nlm_res res;
281503d2aa8SPeter Wemm 
282503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
283503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_NM_LOCK, xdr_nlm_lockargs, argp, xdr_nlm_res, &res, TIMEOUT) != RPC_SUCCESS) {
284503d2aa8SPeter Wemm 		return (NULL);
285503d2aa8SPeter Wemm 	}
286503d2aa8SPeter Wemm 	return (&res);
287503d2aa8SPeter Wemm }
288503d2aa8SPeter Wemm 
289503d2aa8SPeter Wemm 
290503d2aa8SPeter Wemm void *
291503d2aa8SPeter Wemm nlm_free_all_3(argp, clnt)
292503d2aa8SPeter Wemm 	nlm_notify *argp;
293503d2aa8SPeter Wemm 	CLIENT *clnt;
294503d2aa8SPeter Wemm {
295503d2aa8SPeter Wemm 	static char res;
296503d2aa8SPeter Wemm 
297503d2aa8SPeter Wemm 	bzero((char *)&res, sizeof(res));
298503d2aa8SPeter Wemm 	if (clnt_call(clnt, NLM_FREE_ALL, xdr_nlm_notify, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
299503d2aa8SPeter Wemm 		return (NULL);
300503d2aa8SPeter Wemm 	}
301503d2aa8SPeter Wemm 	return ((void *)&res);
302503d2aa8SPeter Wemm }
303503d2aa8SPeter Wemm 
304503d2aa8SPeter Wemm 
305503d2aa8SPeter Wemm int main(int argc, char **argv)
306503d2aa8SPeter Wemm {
307503d2aa8SPeter Wemm   CLIENT *cli;
308503d2aa8SPeter Wemm   nlm_res res_block;
309503d2aa8SPeter Wemm   nlm_res *out;
310503d2aa8SPeter Wemm   nlm_lockargs arg;
311503d2aa8SPeter Wemm   struct timeval tim;
312503d2aa8SPeter Wemm 
313503d2aa8SPeter Wemm   printf("Creating client for host %s\n", argv[1]);
314503d2aa8SPeter Wemm   cli = clnt_create(argv[1], NLM_PROG, NLM_VERS, "udp");
315503d2aa8SPeter Wemm   if (!cli)
316503d2aa8SPeter Wemm   {
317503d2aa8SPeter Wemm     printf("Failed to create client\n");
318503d2aa8SPeter Wemm     exit(1);
319503d2aa8SPeter Wemm   }
320503d2aa8SPeter Wemm 
321ce81d24bSPeter Wemm 
322503d2aa8SPeter Wemm   clnt_control(cli, CLGET_TIMEOUT, &tim);
323503d2aa8SPeter Wemm   printf("Default timeout was %d.%d\n", tim.tv_sec, tim.tv_usec);
324503d2aa8SPeter Wemm   tim.tv_usec = -1;
325503d2aa8SPeter Wemm   tim.tv_sec = -1;
326503d2aa8SPeter Wemm   clnt_control(cli, CLSET_TIMEOUT, &tim);
327ce81d24bSPeter Wemm   clnt_control(cli, CLGET_TIMEOUT, &tim);
328ce81d24bSPeter Wemm   printf("timeout now %d.%d\n", tim.tv_sec, tim.tv_usec);
329ce81d24bSPeter Wemm 
330503d2aa8SPeter Wemm 
331503d2aa8SPeter Wemm   arg.cookie.n_len = 4;
332503d2aa8SPeter Wemm   arg.cookie.n_bytes = "hello";
333503d2aa8SPeter Wemm   arg.block = 0;
334503d2aa8SPeter Wemm   arg.exclusive = 0;
335503d2aa8SPeter Wemm   arg.reclaim = 0;
336503d2aa8SPeter Wemm   arg.state = 0x1234;
337503d2aa8SPeter Wemm   arg.alock.caller_name = "localhost";
338503d2aa8SPeter Wemm   arg.alock.fh.n_len = 32;
339503d2aa8SPeter Wemm   arg.alock.fh.n_bytes = "\x04\x04\x02\x00\x01\x00\x00\x00\x0c\x00\x00\x00\xff\xff\xff\xd0\x16\x00\x00\x5b\x7c\xff\xff\xff\xec\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x54\xef\xbf\xd7\x94";
340503d2aa8SPeter Wemm   arg.alock.oh.n_len = 8;
341503d2aa8SPeter Wemm   arg.alock.oh.n_bytes = "\x00\x00\x02\xff\xff\xff\xd3";
342503d2aa8SPeter Wemm   arg.alock.svid = 0x5678;
343503d2aa8SPeter Wemm   arg.alock.l_offset = 0;
344503d2aa8SPeter Wemm   arg.alock.l_len = 100;
345503d2aa8SPeter Wemm 
346503d2aa8SPeter Wemm   res_block.stat.stat = nlm_granted;
347503d2aa8SPeter Wemm   res_block.cookie.n_bytes = "hello";
348503d2aa8SPeter Wemm   res_block.cookie.n_len = 5;
349503d2aa8SPeter Wemm 
350503d2aa8SPeter Wemm #if 0
351503d2aa8SPeter Wemm   if (nlm_lock_res_1(&res_block, cli)) printf("Success!\n");
352503d2aa8SPeter Wemm   else printf("Fail\n");
353503d2aa8SPeter Wemm #else
354503d2aa8SPeter Wemm   if (out = nlm_lock_msg_1(&arg, cli))
355503d2aa8SPeter Wemm   {
356503d2aa8SPeter Wemm     printf("Success!\n");
357503d2aa8SPeter Wemm     printf("out->stat = %d", out->stat);
358503d2aa8SPeter Wemm   }
359503d2aa8SPeter Wemm   else
360503d2aa8SPeter Wemm   {
361503d2aa8SPeter Wemm     printf("Fail\n");
362503d2aa8SPeter Wemm   }
363503d2aa8SPeter Wemm #endif
364503d2aa8SPeter Wemm 
365503d2aa8SPeter Wemm   return 0;
366503d2aa8SPeter Wemm }
367