home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include <rpc/rpc.h>
- #include "zipcode.h"
- #include "copyright.h"
- #include "version.h"
-
- main(argc,argv)
- int argc ;
- char *argv[];
- {
- char *server;
- char *keyword;
- CLIENT *client;
- RESULT *result;
- int n;
- ZIPLIST *zl;
- extern char *optarg;
- extern int optind;
-
- server = NULL;
- keyword = NULL;
- while ((n = getopt(argc, argv, "h:v")) != -1) {
- switch (n) {
- case 'v':
- printf ("zipcode: version %s\n", VERSION);
- break;
- case 'h':
- server = optarg;
- break;
- case '?':
- fprintf(stderr,
- "Usage: zipcode [-v][-h server] keyword\n");
- exit (1);
- }
- }
-
- keyword = argv[optind];
- if (server == NULL)
- server = strdup("localhost");
-
- if (keyword == NULL) {
- fprintf(stderr, "no keyword specified\n");
- fprintf(stderr,
- "Usage: zipcode [-v][-h server] keyword\n");
- exit (1);
- }
- if (strlen(keyword) > 120) {
- fprintf(stderr, "keyword %s too long\n", keyword);
- exit (1);
- }
-
- /* open rpc connection */
- client = clnt_create(server, ZIPCODEPROC, ZIPCODEVERS, "tcp");
- if (client == NULL) {
- clnt_pcreateerror(server);
- exit (1);
- }
-
- /* call the remote procedure on the server */
- result = zipcode_1(&keyword, client);
- if (result == NULL) {
- clnt_perror (client, server);
- exit (2);
- }
-
- /* print the result */
- switch (result->ziperror) {
- case 0:
- zl = result->list;
- while (zl != NULL) {
- printf ("%s\n", zl->data);
- if (zl->next == NULL)
- break;
- zl = zl->next;
- }
- break;
- default: /* error */
- fprintf (stderr, "zipcode: unknown error\n");
- }
- }
-