This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [patch] rpcgen - fall back to looking for cpp in system path
- From: Allan McRae <allan at archlinux dot org>
- To: libc-alpha <libc-alpha at sourceware dot org>
- Cc: Andreas Jaeger <aj at suse dot com>
- Date: Thu, 26 Jul 2012 23:12:27 +1000
- Subject: Re: [patch] rpcgen - fall back to looking for cpp in system path
- References: <5010A8D9.10901@archlinux.org> <2150572.z1pk9z4u3e@byrd>
On 26/07/12 22:34, Andreas Jaeger wrote:
> On Thursday, July 26, 2012 12:18:01 Allan McRae wrote:
>> rpcgen currently looks for the C preprocessor in /lib/cpp and
>> /usr/ccs/lib/cpp. This patch allows it to fall back to looking for the
>> system cpp when neither of these are found.
>>
>>
>> 2012-07-20 Allan McRae <allan@archlinux.org>
>>
>> [BZ #14303]
>> * sunrpc/auth_des.c (find_cpp): Fall back to selecting system
>> cpp when no found in defined paths
>> * sunrpc/auth_des.c (open_input): Call cpp using execvp
>
> You named the wrong filename in the changes entry.
Not sure how I managed that...
> Please end sentences
> with a "." and don't repeat the filename, so something like:
>
> * sunrpc/rpc_main.c (find_cpp): Fall back to selecting system
> cpp when no found in defined paths.
> (open_input): Call cpp using execvp.
>
> I think we can remove the search for /usr/ccs/lib/cpp - this is not
> supported on an system glibc uses AFAIK. Could you make that additional
> change, please?
>
Done.
2012-07-26 Allan McRae <allan@archlinux.org>
[BZ #14303]
* sunrpc/rpc_main.c (SVR4_CPP): Remove.
(SUNOS_CPP): Likewise.
(find_cpp): Fall back to selecting system cpp when /lib/cpp is
not found.
(open_input): Call CPP using execvp.
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
index 3096455..093371c 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");