diff options
Diffstat (limited to 'sunrpc')
-rw-r--r-- | sunrpc/rpc_main.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c index 06d951aa6a..2103b10d5f 100644 --- a/sunrpc/rpc_main.c +++ b/sunrpc/rpc_main.c @@ -75,12 +75,9 @@ struct commandline static const char *cmdname; -#define SVR4_CPP "/usr/ccs/lib/cpp" -#define SUNOS_CPP "/lib/cpp" - static const char *svcclosetime = "120"; static int cppDefined; /* explicit path for C preprocessor */ -static const char *CPP = SUNOS_CPP; +static const char *CPP = "/lib/cpp"; static const char CPPFLAGS[] = "-C"; static char *pathbuf; static int cpp_pid; @@ -327,23 +324,17 @@ 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 (); - } - } + if (stat (CPP, &buf) == 0) + return; + + if (cppDefined) /* user specified cpp but it does not exist */ + { + fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP); + crash (); } + + /* fall back to system CPP */ + CPP = "cpp"; } /* @@ -374,8 +365,13 @@ open_input (const char *infile, const char *define) close (1); dup2 (pd[1], 1); close (pd[0]); - execv (arglist[0], (char **) arglist); - perror ("execv"); + execvp (arglist[0], (char **) arglist); + if (errno == ENOENT) + { + fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP); + exit (1); + } + perror ("execvp"); exit (1); case -1: perror ("fork"); |