Fix prototypes and parameters for compiling with enabled warnings.
[kopensolaris-gnu/glibc.git] / sunrpc / rpcinfo.c
index 30932c8..23fb3c0 100644 (file)
@@ -1,6 +1,7 @@
-/* @(#)rpcinfo.c       2.2 88/08/11 4.0 RPCSRC */
-#ifndef lint
-static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
+
+/* @(#)rpcinfo.c        2.2 88/08/11 4.0 RPCSRC */
+#if !defined(lint) && defined (SCCSID)
+static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
 #endif
 
 /*
@@ -41,33 +42,38 @@ static      char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
  * Mountain View, California  94043
  */
 
+#include <getopt.h>
+#include <string.h>
+#include <unistd.h>
 #include <rpc/rpc.h>
 #include <stdio.h>
 #include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
 #include <netdb.h>
 #include <rpc/pmap_prot.h>
 #include <rpc/pmap_clnt.h>
 #include <signal.h>
 #include <ctype.h>
+#include <locale.h>
+#include <libintl.h>
 
 #define MAXHOSTLEN 256
 
 #define        MIN_VERS        ((u_long) 0)
-#define        MAX_VERS        ((u_long) 4294967295L)
-
-static void    udpping(/*u_short portflag, int argc, char **argv*/);
-static void    tcpping(/*u_short portflag, int argc, char **argv*/);
-static int     pstatus(/*CLIENT *client, u_long prognum, u_long vers*/);
-static void    pmapdump(/*int argc, char **argv*/);
-static bool_t  reply_proc(/*void *res, struct sockaddr_in *who*/);
-static void    brdcst(/*int argc, char **argv*/);
-static void    deletereg(/* int argc, char **argv */) ;
-static void    usage(/*void*/);
-static u_long  getprognum(/*char *arg*/);
-static u_long  getvers(/*char *arg*/);
-static void    get_inet_address(/*struct sockaddr_in *addr, char *host*/);
-extern u_long inet_addr();  /* in 4.2BSD, arpa/inet.h called that a in_addr */
-extern char *inet_ntoa();
+#define        MAX_VERS        ((u_long) 4294967295UL)
+
+static void udpping (u_short portflag, int argc, char **argv);
+static void tcpping (u_short portflag, int argc, char **argv);
+static int pstatus (CLIENT *client, u_long prognum, u_long vers);
+static void pmapdump (int argc, char **argv);
+static bool_t reply_proc (void *res, struct sockaddr_in *who);
+static void brdcst (int argc, char **argv);
+static void deletereg (int argc, char **argv);
+static void usage (void);
+static u_long getprognum (char *arg);
+static u_long getvers (char *arg);
+static void get_inet_address (struct sockaddr_in *addr, char *host);
 
 /*
  * Functions to be performed.
@@ -80,365 +86,408 @@ extern char *inet_ntoa();
 #define DELETES                5       /* delete registration for the service */
 
 int
-main(argc, argv)
-       int argc;
-       char **argv;
+main (int argc, char **argv)
 {
-       register int c;
-       extern char *optarg;
-       extern int optind;
-       int errflg;
-       int function;
-       u_short portnum;
-
-       function = NONE;
-       portnum = 0;
-       errflg = 0;
-       while ((c = getopt(argc, argv, "ptubdn:")) != -1) {
-               switch (c) {
-
-               case 'p':
-                       if (function != NONE)
-                               errflg = 1;
-                       else
-                               function = PMAPDUMP;
-                       break;
-
-               case 't':
-                       if (function != NONE)
-                               errflg = 1;
-                       else
-                               function = TCPPING;
-                       break;
-
-               case 'u':
-                       if (function != NONE)
-                               errflg = 1;
-                       else
-                               function = UDPPING;
-                       break;
-
-               case 'b':
-                       if (function != NONE)
-                               errflg = 1;
-                       else
-                               function = BRDCST;
-                       break;
-
-               case 'n':
-                       portnum = (u_short) atoi(optarg);   /* hope we don't get bogus # */
-                       break;
-
-               case 'd':
-                       if (function != NONE)
-                               errflg = 1;
-                       else
-                               function = DELETES;
-                       break;
-
-               case '?':
-                       errflg = 1;
-               }
+  register int c;
+  int errflg;
+  int function;
+  u_short portnum;
+
+  setlocale (LC_ALL, "");
+  textdomain (_libc_intl_domainname);
+
+  function = NONE;
+  portnum = 0;
+  errflg = 0;
+  while ((c = getopt (argc, argv, "ptubdn:")) != -1)
+    {
+      switch (c)
+       {
+
+       case 'p':
+         if (function != NONE)
+           errflg = 1;
+         else
+           function = PMAPDUMP;
+         break;
+
+       case 't':
+         if (function != NONE)
+           errflg = 1;
+         else
+           function = TCPPING;
+         break;
+
+       case 'u':
+         if (function != NONE)
+           errflg = 1;
+         else
+           function = UDPPING;
+         break;
+
+       case 'b':
+         if (function != NONE)
+           errflg = 1;
+         else
+           function = BRDCST;
+         break;
+
+       case 'n':
+         portnum = (u_short) atoi (optarg);    /* hope we don't get bogus # */
+         break;
+
+       case 'd':
+         if (function != NONE)
+           errflg = 1;
+         else
+           function = DELETES;
+         break;
+
+       case '?':
+         errflg = 1;
        }
-
-       if (errflg || function == NONE) {
-               usage();
-               return (1);
+    }
+
+  if (errflg || function == NONE)
+    {
+      usage ();
+      return (1);
+    }
+
+  switch (function)
+    {
+
+    case PMAPDUMP:
+      if (portnum != 0)
+       {
+         usage ();
+         return (1);
        }
-
-       switch (function) {
-
-       case PMAPDUMP:
-               if (portnum != 0) {
-                       usage();
-                       return (1);
-               }
-               pmapdump(argc - optind, argv + optind);
-               break;
-
-       case UDPPING:
-               udpping(portnum, argc - optind, argv + optind);
-               break;
-
-       case TCPPING:
-               tcpping(portnum, argc - optind, argv + optind);
-               break;
-
-       case BRDCST:
-               if (portnum != 0) {
-                       usage();
-                       return (1);
-               }
-               brdcst(argc - optind, argv + optind);
-               break;
-
-       case DELETES:
-               deletereg(argc - optind, argv + optind);
-               break;
+      pmapdump (argc - optind, argv + optind);
+      break;
+
+    case UDPPING:
+      udpping (portnum, argc - optind, argv + optind);
+      break;
+
+    case TCPPING:
+      tcpping (portnum, argc - optind, argv + optind);
+      break;
+
+    case BRDCST:
+      if (portnum != 0)
+       {
+         usage ();
+         return (1);
        }
+      brdcst (argc - optind, argv + optind);
+      break;
 
-       return (0);
+    case DELETES:
+      deletereg (argc - optind, argv + optind);
+      break;
+    }
+
+  return (0);
 }
 
 static void
-udpping(portnum, argc, argv)
-       u_short portnum;
-       int argc;
-       char **argv;
+udpping (portnum, argc, argv)
+     u_short portnum;
+     int argc;
+     char **argv;
 {
-       struct timeval to;
-       struct sockaddr_in addr;
-       enum clnt_stat rpc_stat;
-       CLIENT *client;
-       u_long prognum, vers, minvers, maxvers;
-       int sock = RPC_ANYSOCK;
-       struct rpc_err rpcerr;
-       int failure;
-
-       if (argc < 2 || argc > 3) {
-               usage();
-               exit(1);
+  struct timeval to;
+  struct sockaddr_in addr;
+  enum clnt_stat rpc_stat;
+  CLIENT *client;
+  u_long prognum, vers, minvers, maxvers;
+  int sock = RPC_ANYSOCK;
+  struct rpc_err rpcerr;
+  int failure;
+
+  if (argc < 2 || argc > 3)
+    {
+      usage ();
+      exit (1);
+    }
+  prognum = getprognum (argv[1]);
+  get_inet_address (&addr, argv[0]);
+  /* Open the socket here so it will survive calls to clnt_destroy */
+  sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+  if (sock < 0)
+    {
+      perror ("rpcinfo: socket");
+      exit (1);
+    }
+  failure = 0;
+  if (argc == 2)
+    {
+      /*
+       * A call to version 0 should fail with a program/version
+       * mismatch, and give us the range of versions supported.
+       */
+      addr.sin_port = htons (portnum);
+      to.tv_sec = 5;
+      to.tv_usec = 0;
+      if ((client = clntudp_create (&addr, prognum, (u_long) 0,
+                                   to, &sock)) == NULL)
+       {
+         clnt_pcreateerror ("rpcinfo");
+         printf (_ ("program %lu is not available\n"),
+                 prognum);
+         exit (1);
+       }
+      to.tv_sec = 10;
+      to.tv_usec = 0;
+      rpc_stat = clnt_call (client, NULLPROC, (xdrproc_t) xdr_void,
+                           (char *) NULL, (xdrproc_t) xdr_void,
+                           (char *) NULL, to);
+      if (rpc_stat == RPC_PROGVERSMISMATCH)
+       {
+         clnt_geterr (client, &rpcerr);
+         minvers = rpcerr.re_vers.low;
+         maxvers = rpcerr.re_vers.high;
+       }
+      else if (rpc_stat == RPC_SUCCESS)
+       {
+         /*
+          * Oh dear, it DOES support version 0.
+          * Let's try version MAX_VERS.
+          */
+         addr.sin_port = htons (portnum);
+         to.tv_sec = 5;
+         to.tv_usec = 0;
+         if ((client = clntudp_create (&addr, prognum, MAX_VERS,
+                                       to, &sock)) == NULL)
+           {
+             clnt_pcreateerror ("rpcinfo");
+             printf (_ ("program %lu version %lu is not available\n"),
+                     prognum, MAX_VERS);
+             exit (1);
+           }
+         to.tv_sec = 10;
+         to.tv_usec = 0;
+         rpc_stat = clnt_call (client, NULLPROC, (xdrproc_t) xdr_void,
+                               NULL, (xdrproc_t) xdr_void, NULL, to);
+         if (rpc_stat == RPC_PROGVERSMISMATCH)
+           {
+             clnt_geterr (client, &rpcerr);
+             minvers = rpcerr.re_vers.low;
+             maxvers = rpcerr.re_vers.high;
+           }
+         else if (rpc_stat == RPC_SUCCESS)
+           {
+             /*
+              * It also supports version MAX_VERS.
+              * Looks like we have a wise guy.
+              * OK, we give them information on all
+              * 4 billion versions they support...
+              */
+             minvers = 0;
+             maxvers = MAX_VERS;
+           }
+         else
+           {
+             (void) pstatus (client, prognum, MAX_VERS);
+             exit (1);
+           }
        }
-       prognum = getprognum(argv[1]);
-       get_inet_address(&addr, argv[0]);
-       /* Open the socket here so it will survive calls to clnt_destroy */
-       sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP);
-       if (sock < 0) {
-               perror("rpcinfo: socket");
-               exit(1);
+      else
+       {
+         (void) pstatus (client, prognum, (u_long) 0);
+         exit (1);
        }
-       failure = 0;
-       if (argc == 2) {
-               /*
-                * A call to version 0 should fail with a program/version
-                * mismatch, and give us the range of versions supported.
-                */
-               addr.sin_port = htons(portnum);
-               to.tv_sec = 5;
-               to.tv_usec = 0;
-               if ((client = clntudp_create(&addr, prognum, (u_long)0,
-                   to, &sock)) == NULL) {
-                       clnt_pcreateerror("rpcinfo");
-                       printf(_("program %lu is not available\n"),
-                           prognum);
-                       exit(1);
-               }
-               to.tv_sec = 10;
-               to.tv_usec = 0;
-               rpc_stat = clnt_call(client, NULLPROC, xdr_void, (char *)NULL,
-                   xdr_void, (char *)NULL, to);
-               if (rpc_stat == RPC_PROGVERSMISMATCH) {
-                       clnt_geterr(client, &rpcerr);
-                       minvers = rpcerr.re_vers.low;
-                       maxvers = rpcerr.re_vers.high;
-               } else if (rpc_stat == RPC_SUCCESS) {
-                       /*
-                        * Oh dear, it DOES support version 0.
-                        * Let's try version MAX_VERS.
-                        */
-                       addr.sin_port = htons(portnum);
-                       to.tv_sec = 5;
-                       to.tv_usec = 0;
-                       if ((client = clntudp_create(&addr, prognum, MAX_VERS,
-                           to, &sock)) == NULL) {
-                               clnt_pcreateerror("rpcinfo");
-                               printf(_("program %lu version %lu is not available\n"),
-                                   prognum, MAX_VERS);
-                               exit(1);
-                       }
-                       to.tv_sec = 10;
-                       to.tv_usec = 0;
-                       rpc_stat = clnt_call(client, NULLPROC, xdr_void,
-                           (char *)NULL, xdr_void, (char *)NULL, to);
-                       if (rpc_stat == RPC_PROGVERSMISMATCH) {
-                               clnt_geterr(client, &rpcerr);
-                               minvers = rpcerr.re_vers.low;
-                               maxvers = rpcerr.re_vers.high;
-                       } else if (rpc_stat == RPC_SUCCESS) {
-                               /*
-                                * It also supports version MAX_VERS.
-                                * Looks like we have a wise guy.
-                                * OK, we give them information on all
-                                * 4 billion versions they support...
-                                */
-                               minvers = 0;
-                               maxvers = MAX_VERS;
-                       } else {
-                               (void) pstatus(client, prognum, MAX_VERS);
-                               exit(1);
-                       }
-               } else {
-                       (void) pstatus(client, prognum, (u_long)0);
-                       exit(1);
-               }
-               clnt_destroy(client);
-               for (vers = minvers; vers <= maxvers; vers++) {
-                       addr.sin_port = htons(portnum);
-                       to.tv_sec = 5;
-                       to.tv_usec = 0;
-                       if ((client = clntudp_create(&addr, prognum, vers,
-                           to, &sock)) == NULL) {
-                               clnt_pcreateerror("rpcinfo");
-                               printf(_("program %lu version %lu is not available\n"),
-                                   prognum, vers);
-                               exit(1);
-                       }
-                       to.tv_sec = 10;
-                       to.tv_usec = 0;
-                       rpc_stat = clnt_call(client, NULLPROC, xdr_void,
-                           (char *)NULL, xdr_void, (char *)NULL, to);
-                       if (pstatus(client, prognum, vers) < 0)
-                               failure = 1;
-                       clnt_destroy(client);
-               }
+      clnt_destroy (client);
+      for (vers = minvers; vers <= maxvers; vers++)
+       {
+         addr.sin_port = htons (portnum);
+         to.tv_sec = 5;
+         to.tv_usec = 0;
+         if ((client = clntudp_create (&addr, prognum, vers,
+                                       to, &sock)) == NULL)
+           {
+             clnt_pcreateerror ("rpcinfo");
+             printf (_ ("program %lu version %lu is not available\n"),
+                     prognum, vers);
+             exit (1);
+           }
+         to.tv_sec = 10;
+         to.tv_usec = 0;
+         rpc_stat = clnt_call (client, NULLPROC, (xdrproc_t) xdr_void,
+                               NULL, (xdrproc_t) xdr_void, NULL, to);
+         if (pstatus (client, prognum, vers) < 0)
+           failure = 1;
+         clnt_destroy (client);
        }
-       else {
-               vers = getvers(argv[2]);
-               addr.sin_port = htons(portnum);
-               to.tv_sec = 5;
-               to.tv_usec = 0;
-               if ((client = clntudp_create(&addr, prognum, vers,
-                   to, &sock)) == NULL) {
-                       clnt_pcreateerror("rpcinfo");
-                       printf("program %lu version %lu is not available\n",
-                           prognum, vers);
-                       exit(1);
-               }
-               to.tv_sec = 10;
-               to.tv_usec = 0;
-               rpc_stat = clnt_call(client, 0, xdr_void, (char *)NULL,
-                   xdr_void, (char *)NULL, to);
-               if (pstatus(client, prognum, vers) < 0)
-                       failure = 1;
+    }
+  else
+    {
+      vers = getvers (argv[2]);
+      addr.sin_port = htons (portnum);
+      to.tv_sec = 5;
+      to.tv_usec = 0;
+      if ((client = clntudp_create (&addr, prognum, vers,
+                                   to, &sock)) == NULL)
+       {
+         clnt_pcreateerror ("rpcinfo");
+         printf ("program %lu version %lu is not available\n",
+                 prognum, vers);
+         exit (1);
        }
-       (void) close(sock); /* Close it up again */
-       if (failure)
-               exit(1);
+      to.tv_sec = 10;
+      to.tv_usec = 0;
+      rpc_stat = clnt_call (client, 0, (xdrproc_t) xdr_void, NULL,
+                           (xdrproc_t) xdr_void, NULL, to);
+      if (pstatus (client, prognum, vers) < 0)
+       failure = 1;
+    }
+  (void) close (sock);         /* Close it up again */
+  if (failure)
+    exit (1);
 }
 
 static void
-tcpping(portnum, argc, argv)
-       u_short portnum;
-       int argc;
-       char **argv;
+tcpping (portnum, argc, argv)
+     u_short portnum;
+     int argc;
+     char **argv;
 {
-       struct timeval to;
-       struct sockaddr_in addr;
-       enum clnt_stat rpc_stat;
-       CLIENT *client;
-       u_long prognum, vers, minvers, maxvers;
-       int sock = RPC_ANYSOCK;
-       struct rpc_err rpcerr;
-       int failure;
-
-       if (argc < 2 || argc > 3) {
-               usage();
-               exit(1);
+  struct timeval to;
+  struct sockaddr_in addr;
+  enum clnt_stat rpc_stat;
+  CLIENT *client;
+  u_long prognum, vers, minvers, maxvers;
+  int sock = RPC_ANYSOCK;
+  struct rpc_err rpcerr;
+  int failure;
+
+  if (argc < 2 || argc > 3)
+    {
+      usage ();
+      exit (1);
+    }
+  prognum = getprognum (argv[1]);
+  get_inet_address (&addr, argv[0]);
+  failure = 0;
+  if (argc == 2)
+    {
+      /*
+       * A call to version 0 should fail with a program/version
+       * mismatch, and give us the range of versions supported.
+       */
+      addr.sin_port = htons (portnum);
+      if ((client = clnttcp_create (&addr, prognum, MIN_VERS,
+                                   &sock, 0, 0)) == NULL)
+       {
+         clnt_pcreateerror ("rpcinfo");
+         printf (_ ("program %lu is not available\n"),
+                 prognum);
+         exit (1);
        }
-       prognum = getprognum(argv[1]);
-       get_inet_address(&addr, argv[0]);
-       failure = 0;
-       if (argc == 2) {
-               /*
-                * A call to version 0 should fail with a program/version
-                * mismatch, and give us the range of versions supported.
-                */
-               addr.sin_port = htons(portnum);
-               if ((client = clnttcp_create(&addr, prognum, MIN_VERS,
-                   &sock, 0, 0)) == NULL) {
-                       clnt_pcreateerror("rpcinfo");
-                       printf(_("program %lu is not available\n"),
-                           prognum);
-                       exit(1);
-               }
-               to.tv_sec = 10;
-               to.tv_usec = 0;
-               rpc_stat = clnt_call(client, NULLPROC, xdr_void, (char *)NULL,
-                   xdr_void, (char *)NULL, to);
-               if (rpc_stat == RPC_PROGVERSMISMATCH) {
-                       clnt_geterr(client, &rpcerr);
-                       minvers = rpcerr.re_vers.low;
-                       maxvers = rpcerr.re_vers.high;
-               } else if (rpc_stat == RPC_SUCCESS) {
-                       /*
-                        * Oh dear, it DOES support version 0.
-                        * Let's try version MAX_VERS.
-                        */
-                       addr.sin_port = htons(portnum);
-                       if ((client = clnttcp_create(&addr, prognum, MAX_VERS,
-                           &sock, 0, 0)) == NULL) {
-                               clnt_pcreateerror("rpcinfo");
-                               printf(_("program %lu version %lu is not available\n"),
-                                   prognum, MAX_VERS);
-                               exit(1);
-                       }
-                       to.tv_sec = 10;
-                       to.tv_usec = 0;
-                       rpc_stat = clnt_call(client, NULLPROC, xdr_void,
-                           (char *)NULL, xdr_void, (char *)NULL, to);
-                       if (rpc_stat == RPC_PROGVERSMISMATCH) {
-                               clnt_geterr(client, &rpcerr);
-                               minvers = rpcerr.re_vers.low;
-                               maxvers = rpcerr.re_vers.high;
-                       } else if (rpc_stat == RPC_SUCCESS) {
-                               /*
-                                * It also supports version MAX_VERS.
-                                * Looks like we have a wise guy.
-                                * OK, we give them information on all
-                                * 4 billion versions they support...
-                                */
-                               minvers = 0;
-                               maxvers = MAX_VERS;
-                       } else {
-                               (void) pstatus(client, prognum, MAX_VERS);
-                               exit(1);
-                       }
-               } else {
-                       (void) pstatus(client, prognum, MIN_VERS);
-                       exit(1);
-               }
-               clnt_destroy(client);
-               (void) close(sock);
-               sock = RPC_ANYSOCK; /* Re-initialize it for later */
-               for (vers = minvers; vers <= maxvers; vers++) {
-                       addr.sin_port = htons(portnum);
-                       if ((client = clnttcp_create(&addr, prognum, vers,
-                           &sock, 0, 0)) == NULL) {
-                               clnt_pcreateerror("rpcinfo");
-                               printf(_("program %lu version %lu is not available\n"),
-                                   prognum, vers);
-                               exit(1);
-                       }
-                       to.tv_usec = 0;
-                       to.tv_sec = 10;
-                       rpc_stat = clnt_call(client, 0, xdr_void, (char *)NULL,
-                           xdr_void, (char *)NULL, to);
-                       if (pstatus(client, prognum, vers) < 0)
-                               failure = 1;
-                       clnt_destroy(client);
-                       (void) close(sock);
-                       sock = RPC_ANYSOCK;
-               }
+      to.tv_sec = 10;
+      to.tv_usec = 0;
+      rpc_stat = clnt_call (client, NULLPROC, (xdrproc_t) xdr_void, NULL,
+                           (xdrproc_t) xdr_void, NULL, to);
+      if (rpc_stat == RPC_PROGVERSMISMATCH)
+       {
+         clnt_geterr (client, &rpcerr);
+         minvers = rpcerr.re_vers.low;
+         maxvers = rpcerr.re_vers.high;
        }
-       else {
-               vers = getvers(argv[2]);
-               addr.sin_port = htons(portnum);
-               if ((client = clnttcp_create(&addr, prognum, vers, &sock,
-                   0, 0)) == NULL) {
-                       clnt_pcreateerror("rpcinfo");
-                       printf(_("program %lu version %lu is not available\n"),
-                           prognum, vers);
-                       exit(1);
-               }
-               to.tv_usec = 0;
-               to.tv_sec = 10;
-               rpc_stat = clnt_call(client, 0, xdr_void, (char *)NULL,
-                   xdr_void, (char *)NULL, to);
-               if (pstatus(client, prognum, vers) < 0)
-                       failure = 1;
+      else if (rpc_stat == RPC_SUCCESS)
+       {
+         /*
+          * Oh dear, it DOES support version 0.
+          * Let's try version MAX_VERS.
+          */
+         addr.sin_port = htons (portnum);
+         if ((client = clnttcp_create (&addr, prognum, MAX_VERS,
+                                       &sock, 0, 0)) == NULL)
+           {
+             clnt_pcreateerror ("rpcinfo");
+             printf (_ ("program %lu version %lu is not available\n"),
+                     prognum, MAX_VERS);
+             exit (1);
+           }
+         to.tv_sec = 10;
+         to.tv_usec = 0;
+         rpc_stat = clnt_call (client, NULLPROC, (xdrproc_t) xdr_void,
+                               NULL, (xdrproc_t) xdr_void, NULL, to);
+         if (rpc_stat == RPC_PROGVERSMISMATCH)
+           {
+             clnt_geterr (client, &rpcerr);
+             minvers = rpcerr.re_vers.low;
+             maxvers = rpcerr.re_vers.high;
+           }
+         else if (rpc_stat == RPC_SUCCESS)
+           {
+             /*
+              * It also supports version MAX_VERS.
+              * Looks like we have a wise guy.
+              * OK, we give them information on all
+              * 4 billion versions they support...
+              */
+             minvers = 0;
+             maxvers = MAX_VERS;
+           }
+         else
+           {
+             (void) pstatus (client, prognum, MAX_VERS);
+             exit (1);
+           }
        }
-       if (failure)
-               exit(1);
+      else
+       {
+         (void) pstatus (client, prognum, MIN_VERS);
+         exit (1);
+       }
+      clnt_destroy (client);
+      (void) close (sock);
+      sock = RPC_ANYSOCK;      /* Re-initialize it for later */
+      for (vers = minvers; vers <= maxvers; vers++)
+       {
+         addr.sin_port = htons (portnum);
+         if ((client = clnttcp_create (&addr, prognum, vers,
+                                       &sock, 0, 0)) == NULL)
+           {
+             clnt_pcreateerror ("rpcinfo");
+             printf (_ ("program %lu version %lu is not available\n"),
+                     prognum, vers);
+             exit (1);
+           }
+         to.tv_usec = 0;
+         to.tv_sec = 10;
+         rpc_stat = clnt_call (client, 0, (xdrproc_t) xdr_void, NULL,
+                               (xdrproc_t) xdr_void, NULL, to);
+         if (pstatus (client, prognum, vers) < 0)
+           failure = 1;
+         clnt_destroy (client);
+         (void) close (sock);
+         sock = RPC_ANYSOCK;
+       }
+    }
+  else
+    {
+      vers = getvers (argv[2]);
+      addr.sin_port = htons (portnum);
+      if ((client = clnttcp_create (&addr, prognum, vers, &sock,
+                                   0, 0)) == NULL)
+       {
+         clnt_pcreateerror ("rpcinfo");
+         printf (_ ("program %lu version %lu is not available\n"),
+                 prognum, vers);
+         exit (1);
+       }
+      to.tv_usec = 0;
+      to.tv_sec = 10;
+      rpc_stat = clnt_call (client, 0, (xdrproc_t) xdr_void, NULL,
+                           (xdrproc_t) xdr_void, NULL, to);
+      if (pstatus (client, prognum, vers) < 0)
+       failure = 1;
+    }
+  if (failure)
+    exit (1);
 }
 
 /*
@@ -449,90 +498,102 @@ tcpping(portnum, argc, argv)
  * a good error message.
  */
 static int
-pstatus(client, prognum, vers)
-       register CLIENT *client;
-       u_long prognum;
-       u_long vers;
+pstatus (client, prognum, vers)
+     register CLIENT *client;
+     u_long prognum;
+     u_long vers;
 {
-       struct rpc_err rpcerr;
-
-       clnt_geterr(client, &rpcerr);
-       if (rpcerr.re_status != RPC_SUCCESS) {
-               clnt_perror(client, "rpcinfo");
-               printf(_("program %lu version %lu is not available\n"),
-                   prognum, vers);
-               return (-1);
-       } else {
-               printf(_("program %lu version %lu ready and waiting\n"),
-                   prognum, vers);
-               return (0);
-       }
+  struct rpc_err rpcerr;
+
+  clnt_geterr (client, &rpcerr);
+  if (rpcerr.re_status != RPC_SUCCESS)
+    {
+      clnt_perror (client, "rpcinfo");
+      printf (_ ("program %lu version %lu is not available\n"),
+             prognum, vers);
+      return (-1);
+    }
+  else
+    {
+      printf (_ ("program %lu version %lu ready and waiting\n"),
+             prognum, vers);
+      return (0);
+    }
 }
 
 static void
-pmapdump(argc, argv)
-       int argc;
-       char **argv;
+pmapdump (argc, argv)
+     int argc;
+     char **argv;
 {
-       struct sockaddr_in server_addr;
-       register struct hostent *hp;
-       struct pmaplist *head = NULL;
-       int socket = RPC_ANYSOCK;
-       struct timeval minutetimeout;
-       register CLIENT *client;
-       struct rpcent *rpc;
-
-       if (argc > 1) {
-               usage();
-               exit(1);
-       }
-       if (argc == 1)
-               get_inet_address(&server_addr, argv[0]);
-       else {
-               bzero((char *)&server_addr, sizeof server_addr);
-               server_addr.sin_family = AF_INET;
-               if ((hp = gethostbyname("localhost")) != NULL)
-                       bcopy(hp->h_addr, (caddr_t)&server_addr.sin_addr,
-                           hp->h_length);
-               else
-                       server_addr.sin_addr.s_addr = inet_addr("0.0.0.0");
-       }
-       minutetimeout.tv_sec = 60;
-       minutetimeout.tv_usec = 0;
-       server_addr.sin_port = htons(PMAPPORT);
-       if ((client = clnttcp_create(&server_addr, PMAPPROG,
-           PMAPVERS, &socket, 50, 500)) == NULL) {
-               clnt_pcreateerror(_("rpcinfo: can't contact portmapper"));
-               exit(1);
-       }
-       if (clnt_call(client, PMAPPROC_DUMP, xdr_void, NULL,
-           xdr_pmaplist, &head, minutetimeout) != RPC_SUCCESS) {
-               fprintf(stderr, _("rpcinfo: can't contact portmapper: "));
-               clnt_perror(client, "rpcinfo");
-               exit(1);
-       }
-       if (head == NULL) {
-               printf(_("No remote programs registered.\n"));
-       } else {
-               printf(_("   program vers proto   port\n"));
-               for (; head != NULL; head = head->pml_next) {
-                       printf("%10ld%5ld",
-                           head->pml_map.pm_prog,
-                           head->pml_map.pm_vers);
-                       if (head->pml_map.pm_prot == IPPROTO_UDP)
-                               printf("%6s",  "udp");
-                       else if (head->pml_map.pm_prot == IPPROTO_TCP)
-                               printf("%6s", "tcp");
-                       else
-                               printf("%6ld",  head->pml_map.pm_prot);
-                       printf("%7ld",  head->pml_map.pm_port);
-                       rpc = getrpcbynumber(head->pml_map.pm_prog);
-                       if (rpc)
-                               printf("  %s\n", rpc->r_name);
-                       else
-                               printf("\n");
-               }
+  struct sockaddr_in server_addr;
+  register struct hostent *hp;
+  struct pmaplist *head = NULL;
+  int socket = RPC_ANYSOCK;
+  struct timeval minutetimeout;
+  register CLIENT *client;
+  struct rpcent *rpc;
+
+  if (argc > 1)
+    {
+      usage ();
+      exit (1);
+    }
+  if (argc == 1)
+    get_inet_address (&server_addr, argv[0]);
+  else
+    {
+      bzero ((char *) &server_addr, sizeof server_addr);
+      server_addr.sin_family = AF_INET;
+      if ((hp = gethostbyname ("localhost")) != NULL)
+       bcopy (hp->h_addr, (caddr_t) & server_addr.sin_addr,
+              hp->h_length);
+      else
+       server_addr.sin_addr.s_addr = inet_addr ("0.0.0.0");
+    }
+  minutetimeout.tv_sec = 60;
+  minutetimeout.tv_usec = 0;
+  server_addr.sin_port = htons (PMAPPORT);
+  if ((client = clnttcp_create (&server_addr, PMAPPROG,
+                               PMAPVERS, &socket, 50, 500)) == NULL)
+    {
+      clnt_pcreateerror (_ ("rpcinfo: can't contact portmapper"));
+      exit (1);
+    }
+  if (clnt_call (client, PMAPPROC_DUMP, (xdrproc_t) xdr_void, NULL,
+                (xdrproc_t) xdr_pmaplist, (caddr_t) &head,
+                minutetimeout) != RPC_SUCCESS)
+    {
+      fprintf (stderr, _ ("rpcinfo: can't contact portmapper: "));
+      clnt_perror (client, "rpcinfo");
+      exit (1);
+    }
+  if (head == NULL)
+    {
+      printf (_ ("No remote programs registered.\n"));
+    }
+  else
+    {
+      printf (_ ("   program vers proto   port\n"));
+      for (; head != NULL; head = head->pml_next)
+       {
+         printf ("%10ld%5ld",
+                 head->pml_map.pm_prog,
+                 head->pml_map.pm_vers);
+         if (head->pml_map.pm_prot == IPPROTO_UDP)
+           printf ("%6s", "udp");
+         else if (head->pml_map.pm_prot == IPPROTO_TCP)
+           printf ("%6s", "tcp");
+         else
+           printf ("%6ld", head->pml_map.pm_prot);
+         printf ("%7ld", head->pml_map.pm_port);
+         rpc = getrpcbynumber (head->pml_map.pm_prog);
+         if (rpc)
+           printf ("  %s\n", rpc->r_name);
+         else
+           printf ("\n");
        }
+    }
 }
 
 /*
@@ -541,126 +602,139 @@ pmapdump(argc, argv)
  * be piped through sort(1) and then uniq(1).
  */
 
-/*ARGSUSED*/
+/*ARGSUSED */
 static bool_t
-reply_proc(res, who)
-       void *res;              /* Nothing comes back */
-       struct sockaddr_in *who; /* Who sent us the reply */
+reply_proc (res, who)
+     void *res;                        /* Nothing comes back */
+     struct sockaddr_in *who;  /* Who sent us the reply */
 {
-       register struct hostent *hp;
+  register struct hostent *hp;
 
-       hp = gethostbyaddr((char *) &who->sin_addr, sizeof who->sin_addr,
-           AF_INET);
-       printf("%s %s\n", inet_ntoa(who->sin_addr),
-           (hp == NULL) ? _("(unknown)") : hp->h_name);
-       return(FALSE);
+  hp = gethostbyaddr ((char *) &who->sin_addr, sizeof who->sin_addr,
+                     AF_INET);
+  printf ("%s %s\n", inet_ntoa (who->sin_addr),
+         (hp == NULL) ? _ ("(unknown)") : hp->h_name);
+  return (FALSE);
 }
 
 static void
-brdcst(argc, argv)
-       int argc;
-       char **argv;
+brdcst (argc, argv)
+     int argc;
+     char **argv;
 {
-       enum clnt_stat rpc_stat;
-       u_long prognum, vers;
-
-       if (argc != 2) {
-               usage();
-               exit(1);
-       }
-       prognum = getprognum(argv[0]);
-       vers = getvers(argv[1]);
-       rpc_stat = clnt_broadcast(prognum, vers, NULLPROC, xdr_void,
-           (char *)NULL, xdr_void, (char *)NULL, reply_proc);
-       if ((rpc_stat != RPC_SUCCESS) && (rpc_stat != RPC_TIMEDOUT)) {
-               fprintf(stderr, _("rpcinfo: broadcast failed: %s\n"),
-                   clnt_sperrno(rpc_stat));
-               exit(1);
-       }
-       exit(0);
+  enum clnt_stat rpc_stat;
+  u_long prognum, vers;
+
+  if (argc != 2)
+    {
+      usage ();
+      exit (1);
+    }
+  prognum = getprognum (argv[0]);
+  vers = getvers (argv[1]);
+  rpc_stat = clnt_broadcast (prognum, vers, NULLPROC, (xdrproc_t) xdr_void,
+                            NULL, (xdrproc_t) xdr_void, NULL,
+                            (resultproc_t) reply_proc);
+  if ((rpc_stat != RPC_SUCCESS) && (rpc_stat != RPC_TIMEDOUT))
+    {
+      fprintf (stderr, _ ("rpcinfo: broadcast failed: %s\n"),
+              clnt_sperrno (rpc_stat));
+      exit (1);
+    }
+  exit (0);
 }
 
 static void
-deletereg(argc, argv)
-       int argc;
-       char **argv;
-{      u_long prog_num, version_num ;
-
-       if (argc != 2) {
-               usage() ;
-               exit(1) ;
-       }
-       if (getuid()) { /* This command allowed only to root */
-               fprintf(stderr, "Sorry. You are not root\n") ;
-               exit(1) ;
-       }
-       prog_num = getprognum(argv[0]);
-       version_num = getvers(argv[1]);
-       if ((pmap_unset(prog_num, version_num)) == 0) {
-               fprintf(stderr, _("rpcinfo: Could not delete registration for prog %s version %s\n"),
-                       argv[0], argv[1]) ;
-               exit(1) ;
-       }
+deletereg (argc, argv)
+     int argc;
+     char **argv;
+{
+  u_long prog_num, version_num;
+
+  if (argc != 2)
+    {
+      usage ();
+      exit (1);
+    }
+  if (getuid ())
+    {                          /* This command allowed only to root */
+      fprintf (stderr, "Sorry. You are not root\n");
+      exit (1);
+    }
+  prog_num = getprognum (argv[0]);
+  version_num = getvers (argv[1]);
+  if ((pmap_unset (prog_num, version_num)) == 0)
+    {
+      fprintf (stderr, _ ("rpcinfo: Could not delete registration for prog %s version %s\n"),
+              argv[0], argv[1]);
+      exit (1);
+    }
 }
 
 static void
-usage()
+usage ()
 {
-       fprintf(stderr, _("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"));
-       fprintf(stderr, _("       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"));
-       fprintf(stderr, _("       rpcinfo -p [ host ]\n"));
-       fprintf(stderr, _("       rpcinfo -b prognum versnum\n"));
-       fprintf(stderr, _("       rpcinfo -d prognum versnum\n")) ;
+  fprintf (stderr, _ ("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"));
+  fprintf (stderr, _ ("       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"));
+  fprintf (stderr, _ ("       rpcinfo -p [ host ]\n"));
+  fprintf (stderr, _ ("       rpcinfo -b prognum versnum\n"));
+  fprintf (stderr, _ ("       rpcinfo -d prognum versnum\n"));
 }
 
 static u_long
-getprognum(arg)
-       char *arg;
+getprognum (arg)
+     char *arg;
 {
-       register struct rpcent *rpc;
-       register u_long prognum;
-
-       if (isalpha(*arg)) {
-               rpc = getrpcbyname(arg);
-               if (rpc == NULL) {
-                       fprintf(stderr, _("rpcinfo: %s is unknown service\n"),
-                           arg);
-                       exit(1);
-               }
-               prognum = rpc->r_number;
-       } else {
-               prognum = (u_long) atoi(arg);
+  register struct rpcent *rpc;
+  register u_long prognum;
+
+  if (isalpha (*arg))
+    {
+      rpc = getrpcbyname (arg);
+      if (rpc == NULL)
+       {
+         fprintf (stderr, _ ("rpcinfo: %s is unknown service\n"),
+                  arg);
+         exit (1);
        }
-
-       return (prognum);
+      prognum = rpc->r_number;
+    }
+  else
+    {
+      prognum = (u_long) atoi (arg);
+    }
+
+  return (prognum);
 }
 
 static u_long
-getvers(arg)
-       char *arg;
+getvers (arg)
+     char *arg;
 {
-       register u_long vers;
+  register u_long vers;
 
-       vers = (int) atoi(arg);
-       return (vers);
+  vers = (int) atoi (arg);
+  return (vers);
 }
 
 static void
-get_inet_address(addr, host)
-       struct sockaddr_in *addr;
-       char *host;
+get_inet_address (addr, host)
+     struct sockaddr_in *addr;
+     char *host;
 {
-       register struct hostent *hp;
-
-       bzero((char *)addr, sizeof *addr);
-       addr->sin_addr.s_addr = (u_long) inet_addr(host);
-       if (addr->sin_addr.s_addr == -1 || addr->sin_addr.s_addr == 0) {
-               if ((hp = gethostbyname(host)) == NULL) {
-                       fprintf(stderr, _("rpcinfo: %s is unknown host\n"),
-                               host);
-                       exit(1);
-               }
-               bcopy(hp->h_addr, (char *)&addr->sin_addr, hp->h_length);
+  register struct hostent *hp;
+
+  bzero ((char *) addr, sizeof *addr);
+  addr->sin_addr.s_addr = (u_long) inet_addr (host);
+  if (addr->sin_addr.s_addr == -1 || addr->sin_addr.s_addr == 0)
+    {
+      if ((hp = gethostbyname (host)) == NULL)
+       {
+         fprintf (stderr, _ ("rpcinfo: %s is unknown host\n"),
+                  host);
+         exit (1);
        }
-       addr->sin_family = AF_INET;
+      bcopy (hp->h_addr, (char *) &addr->sin_addr, hp->h_length);
+    }
+  addr->sin_family = AF_INET;
 }