By default, rpcgen(1) looks for cpp(1) from a list of fixed absolute paths
(`/lib/cpp', etc.), which may only be overrided with the `-Y' option.  This
patch makes it run any `cpp' command found in $PATH.

--- glibc-2.7/sunrpc/rpc_main.c	2006-11-10 21:54:46.000000000 +0100
+++ glibc-2.7/sunrpc/rpc_main.c	2009-04-22 14:32:10.000000000 +0200
@@ -79,7 +79,7 @@ static const char *cmdname;
 
 static const char *svcclosetime = "120";
 static int cppDefined;	/* explicit path for C preprocessor */
-static const char *CPP = SUNOS_CPP;
+static const char *CPP = "cpp";
 static const char CPPFLAGS[] = "-C";
 static char *pathbuf;
 static int cpp_pid;
@@ -108,7 +108,6 @@ static char *extendfile (const char *fil
 static void open_output (const char *infile, const char *outfile);
 static void add_warning (void);
 static void clear_args (void);
-static void find_cpp (void);
 static void open_input (const char *infile, const char *define);
 static int check_nettype (const char *name, const char *list_to_check[]);
 static void c_output (const char *infile, const char *define,
@@ -327,31 +326,6 @@ clear_args (void)
   argcount = FIXEDARGS;
 }
 
-/* make sure that a CPP exists */
-static void
-find_cpp (void)
-{
-  struct stat buf;
-
-  if (stat (CPP, &buf) < 0)
-    {				/* /lib/cpp or explicit cpp does not exist */
-      if (cppDefined)
-	{
-	  fprintf (stderr, _ ("cannot find C preprocessor: %s \n"), CPP);
-	  crash ();
-	}
-      else
-	{			/* try the other one */
-	  CPP = SVR4_CPP;
-	  if (stat (CPP, &buf) < 0)
-	    {			/* can't find any cpp */
-	      fputs (_ ("cannot find any C preprocessor (cpp)\n"), stdout);
-	      crash ();
-	    }
-	}
-    }
-}
-
 /*
  * Open input file with given define for C-preprocessor
  */
@@ -370,7 +344,6 @@ open_input (const char *infile, const ch
   switch (cpp_pid)
     {
     case 0:
-      find_cpp ();
       putarg (0, CPP);
       putarg (1, CPPFLAGS);
       addarg (define);
@@ -380,7 +353,7 @@ open_input (const char *infile, const ch
       close (1);
       dup2 (pd[1], 1);
       close (pd[0]);
-      execv (arglist[0], (char **) arglist);
+      execvp (arglist[0], (char **) arglist);
       perror ("execv");
       exit (1);
     case -1:
