Add pf example configs
[dragonfly.git] / share / examples / sunrpc / dir / rls.c
1 /* @(#)rls.c    2.2 88/08/12 4.0 RPCSRC */
2 /*
3  * rls.c: Remote directory listing client
4  */
5 #include <stdio.h>
6 #include <rpc/rpc.h>            /* always need this */
7 #include "dir.h"                /* need this too: will be generated by rpcgen*/
8
9 extern int errno;
10
11 main(argc, argv)
12         int argc;
13         char *argv[];
14 {
15         CLIENT *cl;
16         char *server;
17         char *dir;
18         readdir_res *result;
19         namelist nl;
20
21
22         if (argc != 3) {
23                 fprintf(stderr, "usage: %s host directory\n", argv[0]);
24                 exit(1);
25         }
26
27         /*
28          * Remember what our command line arguments refer to
29          */
30         server = argv[1];
31         dir = argv[2];
32
33         /*
34          * Create client "handle" used for calling DIRPROG on the
35          * server designated on the command line. We tell the rpc package
36          * to use the "tcp" protocol when contacting the server.
37          */
38         cl = clnt_create(server, DIRPROG, DIRVERS, "tcp");
39         if (cl == NULL) {
40                 /*
41                  * Couldn't establish connection with server.
42                  * Print error message and die.
43                  */
44                 clnt_pcreateerror(server);
45                 exit(1);
46         }
47
48         /*
49          * Call the remote procedure "readdir" on the server
50          */
51         result = readdir_1(&dir, cl);
52         if (result == NULL) {
53                 /*
54                  * An error occurred while calling the server.
55                  * Print error message and die.
56                  */
57                 clnt_perror(cl, server);
58                 exit(1);
59         }
60
61         /*
62          * Okay, we successfully called the remote procedure.
63          */
64         if (result->errno != 0) {
65                 /*
66                  * A remote system error occurred.
67                  * Print error message and die.
68                  */
69                 errno = result->errno;
70                 perror(dir);
71                 exit(1);
72         }
73
74         /*
75          * Successfuly got a directory listing.
76          * Print it out.
77          */
78         for (nl = result->readdir_res_u.list; nl != NULL; nl = nl->next) {
79                 printf("%s\n", nl->name);
80         }
81 }