home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2683 / zipcode.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-07  |  1.5 KB  |  82 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <rpc/rpc.h>
  4. #include "zipcode.h"
  5. #include "copyright.h"
  6. #include "version.h"
  7.  
  8. main(argc,argv)
  9. int argc ;
  10. char *argv[];
  11. {
  12.     char *server;
  13.     char *keyword;
  14.     CLIENT *client;
  15.     RESULT *result;
  16.     int n;
  17.     ZIPLIST *zl;
  18.     extern char *optarg;
  19.     extern int optind;
  20.  
  21.     server  = NULL;
  22.     keyword = NULL;
  23.     while ((n = getopt(argc, argv, "h:v")) != -1) {
  24.        switch (n) {
  25.         case 'v':
  26.             printf ("zipcode: version %s\n", VERSION);
  27.             break;
  28.         case 'h':
  29.             server = optarg;
  30.             break;
  31.         case '?':
  32.             fprintf(stderr,
  33.                 "Usage: zipcode [-v][-h server] keyword\n");
  34.             exit (1);
  35.        }
  36.     }
  37.  
  38.     keyword = argv[optind];
  39.     if (server == NULL)
  40.         server  = strdup("localhost");
  41.  
  42.     if (keyword == NULL) {
  43.         fprintf(stderr, "no keyword specified\n");
  44.         fprintf(stderr,
  45.             "Usage: zipcode [-v][-h server] keyword\n");
  46.         exit (1);
  47.     }
  48.     if (strlen(keyword) > 120) {
  49.         fprintf(stderr, "keyword %s too long\n", keyword);
  50.         exit (1);
  51.     }
  52.  
  53.     /* open rpc connection */
  54.     client = clnt_create(server, ZIPCODEPROC, ZIPCODEVERS, "tcp");
  55.     if (client == NULL) {
  56.         clnt_pcreateerror(server);
  57.         exit (1);
  58.     }
  59.  
  60.     /* call the remote procedure on the server */
  61.     result = zipcode_1(&keyword, client);
  62.     if (result == NULL) {
  63.         clnt_perror (client, server);
  64.         exit (2);
  65.     }
  66.  
  67.     /* print the result */
  68.     switch (result->ziperror) {
  69.     case 0:
  70.         zl = result->list;
  71.         while (zl != NULL) {
  72.             printf ("%s\n", zl->data);
  73.             if (zl->next == NULL)
  74.                 break;
  75.             zl = zl->next;
  76.         }
  77.         break;
  78.     default:            /* error */
  79.         fprintf (stderr, "zipcode: unknown error\n");
  80.     }
  81. }
  82.