aboutsummaryrefslogtreecommitdiff
path: root/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc')
-rw-r--r--sunrpc/rpc_main.c96
-rw-r--r--sunrpc/rpcinfo.c59
2 files changed, 100 insertions, 55 deletions
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
index a3d227e..8a7d369 100644
--- a/sunrpc/rpc_main.c
+++ b/sunrpc/rpc_main.c
@@ -52,6 +52,9 @@
#include "rpc_scan.h"
#include "proto.h"
+#include "../version.h"
+#define PACKAGE _libc_intl_domainname
+
#define EXTEND 1 /* alias for TRUE */
#define DONT_EXTEND 0 /* alias for FALSE */
@@ -132,8 +135,9 @@ static void addarg (const char *cp);
static void putarg (int whereto, const char *cp);
static void checkfiles (const char *infile, const char *outfile);
static int parseargs (int argc, const char *argv[], struct commandline *cmd);
-static void usage (void) __attribute__ ((noreturn));
-static void options_usage (void) __attribute__ ((noreturn));
+static void usage (FILE *stream, int status) __attribute__ ((noreturn));
+static void options_usage (FILE *stream, int status) __attribute__ ((noreturn));
+static void print_version (void);
static void c_initialize (void);
static char *generate_guard (const char *pathname);
@@ -185,7 +189,7 @@ main (int argc, const char *argv[])
(void) memset ((char *) &cmd, 0, sizeof (struct commandline));
clear_args ();
if (!parseargs (argc, argv, &cmd))
- usage ();
+ usage (stderr, 1);
if (cmd.cflag || cmd.hflag || cmd.lflag || cmd.tflag || cmd.sflag ||
cmd.mflag || cmd.nflag || cmd.Ssflag || cmd.Scflag)
@@ -787,7 +791,7 @@ s_output (int argc, const char *argv[], const char *infile, const char *define,
{
if (outfilename)
unlink (outfilename);
- usage ();
+ usage (stderr, 1);
}
write_rest ();
}
@@ -1218,6 +1222,10 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
}
cmd->infile = argv[i];
}
+ else if (strcmp (argv[i], "--help") == 0)
+ usage (stdout, 0);
+ else if (strcmp (argv[i], "--version") == 0)
+ print_version ();
else
{
for (j = 1; argv[i][j] != 0; j++)
@@ -1442,46 +1450,56 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
}
static void
-usage (void)
+usage (FILE *stream, int status)
{
- fprintf (stderr, _("usage: %s infile\n"), cmdname);
- fprintf (stderr, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
+ fprintf (stream, _("usage: %s infile\n"), cmdname);
+ fprintf (stream, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
[-I [-K seconds]] [-Y path] infile\n"), cmdname);
- fprintf (stderr, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
+ fprintf (stream, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
[-o outfile] [infile]\n"), cmdname);
- fprintf (stderr, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
- fprintf (stderr, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
- options_usage ();
- exit (1);
+ fprintf (stream, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
+ fprintf (stream, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
+ options_usage (stream, status);
+ exit (status);
+}
+
+static void
+options_usage (FILE *stream, int status)
+{
+ f_print (stream, _("options:\n"));
+ f_print (stream, _("-a\t\tgenerate all files, including samples\n"));
+ f_print (stream, _("-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"));
+ f_print (stream, _("-c\t\tgenerate XDR routines\n"));
+ f_print (stream, _("-C\t\tANSI C mode\n"));
+ f_print (stream, _("-Dname[=value]\tdefine a symbol (same as #define)\n"));
+ f_print (stream, _("-h\t\tgenerate header file\n"));
+ f_print (stream, _("-i size\t\tsize at which to start generating inline code\n"));
+ f_print (stream, _("-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"));
+ f_print (stream, _("-K seconds\tserver exits after K seconds of inactivity\n"));
+ f_print (stream, _("-l\t\tgenerate client side stubs\n"));
+ f_print (stream, _("-L\t\tserver errors will be printed to syslog\n"));
+ f_print (stream, _("-m\t\tgenerate server side stubs\n"));
+ f_print (stream, _("-M\t\tgenerate MT-safe code\n"));
+ f_print (stream, _("-n netid\tgenerate server code that supports named netid\n"));
+ f_print (stream, _("-N\t\tsupports multiple arguments and call-by-value\n"));
+ f_print (stream, _("-o outfile\tname of the output file\n"));
+ f_print (stream, _("-s nettype\tgenerate server code that supports named nettype\n"));
+ f_print (stream, _("-Sc\t\tgenerate sample client code that uses remote procedures\n"));
+ f_print (stream, _("-Ss\t\tgenerate sample server code that defines remote procedures\n"));
+ f_print (stream, _("-Sm \t\tgenerate makefile template \n"));
+ f_print (stream, _("-t\t\tgenerate RPC dispatch table\n"));
+ f_print (stream, _("-T\t\tgenerate code to support RPC dispatch tables\n"));
+ f_print (stream, _("-Y path\t\tdirectory name to find C preprocessor (cpp)\n"));
+
+ f_print (stream, "\n%s", _("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ exit (status);
}
static void
-options_usage (void)
+print_version (void)
{
- f_print (stderr, "options:\n");
- f_print (stderr, "-a\t\tgenerate all files, including samples\n");
- f_print (stderr, "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n");
- f_print (stderr, "-c\t\tgenerate XDR routines\n");
- f_print (stderr, "-C\t\tANSI C mode\n");
- f_print (stderr, "-Dname[=value]\tdefine a symbol (same as #define)\n");
- f_print (stderr, "-h\t\tgenerate header file\n");
- f_print (stderr, "-i size\t\tsize at which to start generating inline code\n");
- f_print (stderr, "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n");
- f_print (stderr, "-K seconds\tserver exits after K seconds of inactivity\n");
- f_print (stderr, "-l\t\tgenerate client side stubs\n");
- f_print (stderr, "-L\t\tserver errors will be printed to syslog\n");
- f_print (stderr, "-m\t\tgenerate server side stubs\n");
- f_print (stderr, "-M\t\tgenerate MT-safe code\n");
- f_print (stderr, "-n netid\tgenerate server code that supports named netid\n");
- f_print (stderr, "-N\t\tsupports multiple arguments and call-by-value\n");
- f_print (stderr, "-o outfile\tname of the output file\n");
- f_print (stderr, "-s nettype\tgenerate server code that supports named nettype\n");
- f_print (stderr, "-Sc\t\tgenerate sample client code that uses remote procedures\n");
- f_print (stderr, "-Ss\t\tgenerate sample server code that defines remote procedures\n");
- f_print (stderr, "-Sm \t\tgenerate makefile template \n");
- f_print (stderr, "-t\t\tgenerate RPC dispatch table\n");
- f_print (stderr, "-T\t\tgenerate code to support RPC dispatch tables\n");
- f_print (stderr, "-Y path\t\tdirectory name to find C preprocessor (cpp)\n");
-
- exit (1);
+ printf ("rpcgen (GNU %s) %s\n", PACKAGE, VERSION);
+ exit (0);
}
diff --git a/sunrpc/rpcinfo.c b/sunrpc/rpcinfo.c
index d9da989..91f360c 100644
--- a/sunrpc/rpcinfo.c
+++ b/sunrpc/rpcinfo.c
@@ -58,6 +58,9 @@ static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
#include <locale.h>
#include <libintl.h>
+#include "../version.h"
+#define PACKAGE _libc_intl_domainname
+
#define MAXHOSTLEN 256
#define MIN_VERS ((u_long) 0)
@@ -70,7 +73,8 @@ 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) __attribute__ ((noreturn));
static void deletereg (int argc, char **argv);
-static void usage (void);
+static void usage (FILE *stream);
+static void print_version (void);
static u_long getprognum (char *arg);
static u_long getvers (char *arg);
static void get_inet_address (struct sockaddr_in *addr, char *host);
@@ -92,6 +96,11 @@ main (int argc, char **argv)
int errflg;
int function;
u_short portnum;
+ static const struct option long_options[] = {
+ { "help", no_argument, NULL, 'H' },
+ { "version", no_argument, NULL, 'V' },
+ { NULL, 0, NULL, 0 }
+ };
setlocale (LC_ALL, "");
textdomain (_libc_intl_domainname);
@@ -99,7 +108,7 @@ main (int argc, char **argv)
function = NONE;
portnum = 0;
errflg = 0;
- while ((c = getopt (argc, argv, "ptubdn:")) != -1)
+ while ((c = getopt_long (argc, argv, "ptubdn:", long_options, NULL)) != -1)
{
switch (c)
{
@@ -143,6 +152,14 @@ main (int argc, char **argv)
function = DELETES;
break;
+ case 'H':
+ usage (stdout);
+ return 0;
+
+ case 'V':
+ print_version ();
+ return 0;
+
case '?':
errflg = 1;
}
@@ -150,7 +167,7 @@ main (int argc, char **argv)
if (errflg || function == NONE)
{
- usage ();
+ usage (stderr);
return 1;
}
@@ -160,7 +177,7 @@ main (int argc, char **argv)
case PMAPDUMP:
if (portnum != 0)
{
- usage ();
+ usage (stderr);
return 1;
}
pmapdump (argc - optind, argv + optind);
@@ -177,7 +194,7 @@ main (int argc, char **argv)
case BRDCST:
if (portnum != 0)
{
- usage ();
+ usage (stderr);
return 1;
}
brdcst (argc - optind, argv + optind);
@@ -208,7 +225,7 @@ udpping (portnum, argc, argv)
if (argc < 2 || argc > 3)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[1]);
@@ -363,7 +380,7 @@ tcpping (portnum, argc, argv)
if (argc < 2 || argc > 3)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[1]);
@@ -532,7 +549,7 @@ pmapdump (argc, argv)
if (argc > 1)
{
- usage ();
+ usage (stderr);
exit (1);
}
if (argc == 1)
@@ -624,7 +641,7 @@ brdcst (argc, argv)
if (argc != 2)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[0]);
@@ -650,7 +667,7 @@ deletereg (argc, argv)
if (argc != 2)
{
- usage ();
+ usage (stderr);
exit (1);
}
if (getuid ())
@@ -669,15 +686,25 @@ deletereg (argc, argv)
}
static void
-usage ()
+usage (FILE *stream)
{
fputs (_("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"),
- stderr);
+ stream);
fputs (_(" rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"),
- stderr);
- fputs (_(" rpcinfo -p [ host ]\n"), stderr);
- fputs (_(" rpcinfo -b prognum versnum\n"), stderr);
- fputs (_(" rpcinfo -d prognum versnum\n"), stderr);
+ stream);
+ fputs (_(" rpcinfo -p [ host ]\n"), stream);
+ fputs (_(" rpcinfo -b prognum versnum\n"), stream);
+ fputs (_(" rpcinfo -d prognum versnum\n"), stream);
+ fputc ('\n', stream);
+ fprintf (stream, _("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+}
+
+static void
+print_version (void)
+{
+ printf ("rpcinfo (GNU %s) %s\n", PACKAGE, VERSION);
}
static u_long