From: neilbrown Date: Sun, 30 Mar 2003 08:00:39 +0000 (+0000) Subject: use execvp for finding cpp in rpcgen X-Git-Tag: nfs-utils-1-1-0-pre1~2 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=cda9a6c6f9a4c0105956ba2595bb62b14f865739;p=nfs-utils.git use execvp for finding cpp in rpcgen --- diff --git a/ChangeLog b/ChangeLog index fabbc57..4142630 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-03-30 NeilBrown + + * tools/rpcgen/rpc_main.c(find_cpp): removed + * tools/rpcgen/rpc_main.c(open_input): use execvp to find "ccp", + then try hard-coded paths. + 2003-03-26 Chip Salzenberg * debian/changelog: Version 1.0.3-1. diff --git a/tools/rpcgen/rpc_main.c b/tools/rpcgen/rpc_main.c index 39b667e..2651060 100644 --- a/tools/rpcgen/rpc_main.c +++ b/tools/rpcgen/rpc_main.c @@ -45,6 +45,7 @@ static char sccsid[] = "@(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI"; #include #include #include +#include #include "rpc_parse.h" #include "rpc_util.h" #include "rpc_scan.h" @@ -67,7 +68,6 @@ static char * extendfile(char *file, char *ext); static void open_output(char *infile, char *outfile); static void add_warning(void); static void clear_args(void); -static void find_cpp(void); static void open_input(char *infile, char *define); static int check_nettype(char *name, char **list_to_check); static void c_output(char *infile, char *define, int extend, char *outfile); @@ -293,26 +293,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) { /* SVR4 or explicit cpp does not exist */ - if (cppDefined) { - fprintf(stderr, "cannot find C preprocessor: %s \n", CPP); - crash(); - } else { /* try the other one */ - CPP = SUNOS_CPP; - if (stat(CPP, &buf) < 0) { /* can't find any cpp */ - fprintf(stderr, "cannot find any C preprocessor (cpp)\n"); - crash(); - } - } - } -} - /* * Open input file with given define for C-preprocessor */ @@ -325,8 +305,7 @@ open_input(char *infile, char *define) (void) pipe(pd); switch (fork()) { case 0: - find_cpp(); - putarg(0, CPP); + putarg(0, "cpp"); putarg(1, CPPFLAGS); addarg(define); addarg(infile); @@ -334,7 +313,15 @@ open_input(char *infile, char *define) (void) close(1); (void) dup2(pd[1], 1); (void) close(pd[0]); - execv(arglist[0], arglist); + if (cppDefined) + execv(CPP, arglist); + else { + execvp("cpp", arglist); + if (errno == ENOENT) + execvp(SVR4_CPP, arglist); + if (errno == ENOENT) + execvp(SUNOS_CPP, arglist); + } perror("execv"); exit(1); case -1: