From: Jeffrey A Law Date: Sat, 5 Sep 1998 02:26:35 +0000 (+0000) Subject: pexecute.c: Updates from gcc. X-Git-Tag: prereleases/libgcj-0.1~3203 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3f3726a3fe90bd192322424ff057a481dc4a3b76;p=thirdparty%2Fgcc.git pexecute.c: Updates from gcc. * pexecute.c: Updates from gcc. Copy in gcc has been removed. This is the canonical copy. Define ISSPACE if !IN_GCC. From-SVN: r22243 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index f5fc1405c6b4..06e474adbb75 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +Sat Sep 5 03:24:49 1998 Jeffrey A Law (law@cygnus.com) + + * pexecute.c: Updates from gcc. Copy in gcc has been removed. This + is the canonical copy. Define ISSPACE if !IN_GCC. + Wed Aug 19 14:05:01 1998 Mumit Khan * cplus-dem.c (work_stuff): Add dllimported. diff --git a/libiberty/pexecute.c b/libiberty/pexecute.c index fbbea409147c..1b0a374aa012 100644 --- a/libiberty/pexecute.c +++ b/libiberty/pexecute.c @@ -1,6 +1,6 @@ /* Utilities to execute a program in a subprocess (possibly linked by pipes with other subprocesses), and wait for it. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the libiberty library. Libiberty is free software; you can redistribute it and/or @@ -25,10 +25,12 @@ Boston, MA 02111-1307, USA. */ #ifdef IN_GCC #include "config.h" -#endif - +#include "system.h" +#else #include #include +#define ISSPACE (x) isspace(x) +#endif #ifdef IN_GCC #include "gansidecl.h" @@ -166,7 +168,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) char *cp; for (cp = argv[i]; *cp; cp++) { - if (*cp == '"' || *cp == '\'' || *cp == '\\' || isspace (*cp)) + if (*cp == '"' || *cp == '\'' || *cp == '\\' || ISSPACE (*cp)) fputc ('\\', argfile); fputc (*cp, argfile); } @@ -509,7 +511,7 @@ static int first_time = 1; int pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) const char *program; - char **argv; + char * const *argv; const char *this_pname; const char *temp_base; char **errmsg_fmt, **errmsg_arg; @@ -538,14 +540,18 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) fputc (' ', stdout); for (i=1; argv[i]; i++) { - /* We have to quote every arg, so that when the echo is - executed, the quotes are stripped and the original arg - is left. */ fputc ('\'', stdout); + /* See if we have an argument that needs fixing. */ + if (strchr(argv[i], '/')) + { + tmpname = (char *) xmalloc (256); + mpwify_filename (argv[i], tmpname); + argv[i] = tmpname; + } for (cp = argv[i]; *cp; cp++) { - /* Write an Option-d esc char in front of special chars. */ - if (strchr ("\"'+", *cp)) + /* Write an Option-d escape char in front of special chars. */ + if (strchr("'+", *cp)) fputc ('\266', stdout); fputc (*cp, stdout); } @@ -560,15 +566,20 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) for (i=1; argv[i]; i++) { + /* See if we have an argument that needs fixing. */ + if (strchr(argv[i], '/')) + { + tmpname = (char *) xmalloc (256); + mpwify_filename (argv[i], tmpname); + argv[i] = tmpname; + } if (strchr (argv[i], ' ')) fputc ('\'', stdout); for (cp = argv[i]; *cp; cp++) { - /* Write an Option-d esc char in front of special chars. */ - if (strchr ("\"'+", *cp)) - { - fputc ('\266', stdout); - } + /* Write an Option-d escape char in front of special chars. */ + if (strchr("'+", *cp)) + fputc ('\266', stdout); fputc (*cp, stdout); } if (strchr (argv[i], ' ')) @@ -628,6 +639,9 @@ pfinish () extern int execv (); extern int execvp (); +#ifdef IN_GCC +extern char * my_strerror PROTO ((int)); +#endif int pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)