(authdes_getucred): Removed fixed limit on number of groups in the
[kopensolaris-gnu/glibc.git] / sunrpc / rpc_main.c
index 2229c56..656f8ae 100644 (file)
@@ -42,6 +42,7 @@ const char main_rcsid[] =
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 #include <ctype.h>
 #include <sys/types.h>
 #include <sys/param.h>
@@ -79,14 +80,14 @@ static const char *cmdname;
 #define SUNOS_CPP "/lib/cpp"
 
 static const char *svcclosetime = "120";
-static int cppDefined = 0;     /* explicit path for C preprocessor */
+static int cppDefined; /* explicit path for C preprocessor */
 static const char *CPP = SUNOS_CPP;
-static char CPPFLAGS[] = "-C";
+static const char CPPFLAGS[] = "-C";
 static char *pathbuf;
 static int cpp_pid;
 static const char *allv[] =
 {
-  "rpcgen", "-s", "udp", "-s", "tcp",
+  "rpcgen", "-s", "udp", "-s", "tcp"
 };
 static int allc = sizeof (allv) / sizeof (allv[0]);
 static const char *allnv[] =
@@ -133,8 +134,8 @@ 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);
-static void options_usage (void);
+static void usage (void) __attribute__ ((noreturn));
+static void options_usage (void) __attribute__ ((noreturn));
 static void c_initialize (void);
 static char *generate_guard (const char *pathname);
 
@@ -166,17 +167,17 @@ int newstyle;                     /* newstyle of passing arguments (by value) */
 #ifdef __GNU_LIBRARY__
 int Cflag = 1;                 /* ANSI C syntax */
 #else
-int Cflag = 0;                 /* ANSI C/C++ syntax */
+int Cflag;                     /* ANSI C/C++ syntax */
 #endif
-int CCflag = 0;                        /* C++ files */
+int CCflag;                    /* C++ files */
 static int allfiles;           /* generate all files */
 #ifdef __GNU_LIBRARY__
-int tirpcflag = 0;             /* generating code for tirpc, by default */
+int tirpcflag;                 /* generating code for tirpc, by default */
 #else
 int tirpcflag = 1;             /* generating code for tirpc, by default */
 #endif
-xdrfunc *xdrfunc_head = NULL;  /* xdr function list */
-xdrfunc *xdrfunc_tail = NULL;  /* xdr function list */
+xdrfunc *xdrfunc_head;         /* xdr function list */
+xdrfunc *xdrfunc_tail;         /* xdr function list */
 
 int
 main (int argc, const char *argv[])
@@ -246,8 +247,8 @@ main (int argc, const char *argv[])
          mkfile_output (&cmd);
        }
     }
-  exit (nonfatalerrors);
-  /* NOTREACHED */
+
+  return nonfatalerrors;
 }
 
 /*
@@ -291,8 +292,7 @@ open_output (const char *infile, const char *outfile)
   fout = fopen (outfile, "w");
   if (fout == NULL)
     {
-      fprintf (stderr, _ ("%s: unable to open "), cmdname);
-      perror (outfile);
+      fprintf (stderr, _ ("%s: unable to open %s: %m\n"), cmdname, outfile);
       crash ();
     }
   record_open (outfile);
@@ -304,8 +304,8 @@ close_output (const char *outfile)
 {
   if (fclose (fout) == EOF)
     {
-      fprintf (stderr, _("%s: while writing output: "), cmdname);
-      perror (outfile ?: "<stdout>");
+      fprintf (stderr, _("%s: while writing output %s: %m"), cmdname,
+              outfile ?: "<stdout>");
       crash ();
     }
 }
@@ -1144,6 +1144,8 @@ checkfiles (const char *infile, const char *outfile)
       else
        {
          fprintf (stderr,
+                  /* TRANS: the file will not be removed; this is an
+                     TRANS: informative message.  */
                   _("file `%s' already exists and may be overwritten\n"),
                   outfile);
          crash ();
@@ -1354,6 +1356,15 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
   cmd->Scflag = flag['C'];
   cmd->makefileflag = flag['M'];
 
+#ifndef _RPC_THREAD_SAFE_
+  if (mtflag || newstyle)
+    {
+      /* glibc doesn't support these flags.  */
+      f_print (stderr,
+              _("This implementation doesn't support newstyle or MT-safe code!\n"));
+      return (0);
+    }
+#endif
   if (tirpcflag)
     {
       pmflag = inetdflag ? 0 : 1;    /* pmflag or inetdflag is always TRUE */