aboutsummaryrefslogtreecommitdiff
path: root/gcc/fixinc/server.c
diff options
context:
space:
mode:
authorFelix Lee <flee@cygnus.com>2000-04-03 07:43:51 +0000
committerJeff Law <law@gcc.gnu.org>2000-04-03 01:43:51 -0600
commitbebac7017578ded99c68902c9ce24a2acc342cdd (patch)
tree9d7f09db96ec6edd300216bf823504a8544e0fb6 /gcc/fixinc/server.c
parent7bfe3c970f80d54aa454adc26acc8df9de359da6 (diff)
downloadgcc-bebac7017578ded99c68902c9ce24a2acc342cdd.zip
gcc-bebac7017578ded99c68902c9ce24a2acc342cdd.tar.gz
gcc-bebac7017578ded99c68902c9ce24a2acc342cdd.tar.bz2
server.c (find_shell): New function.
* fixinc/server.c (find_shell): New function. Avoid $SHELL. (run_shell): Use it. From-SVN: r32878
Diffstat (limited to 'gcc/fixinc/server.c')
-rw-r--r--gcc/fixinc/server.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/fixinc/server.c b/gcc/fixinc/server.c
index 676df8c..5d737ac 100644
--- a/gcc/fixinc/server.c
+++ b/gcc/fixinc/server.c
@@ -235,6 +235,28 @@ server_setup ()
p_cur_dir = getcwd ((char *) NULL, MAXPATHLEN + 1);
}
+/*
+ * find_shell
+ *
+ * Locate a shell suitable for use. For various reasons
+ * (like the use of "trap" in server_setup(), it must be a
+ * Bourne-like shell.
+ *
+ * Most of the time, /bin/sh is preferred, but sometimes
+ * it's quite broken (like on Ultrix). autoconf lets you
+ * override with $CONFIG_SHELL, so we do the same.
+ */
+
+static char *
+find_shell ()
+{
+ char * shell = getenv ("CONFIG_SHELL");
+ if (shell)
+ return shell;
+
+ return "/bin/sh";
+}
+
/*
* run_shell
@@ -266,6 +288,8 @@ run_shell (pz_cmd)
THEN try to start it. */
if (server_id == NULLPROCESS)
{
+ def_args[0] = find_shell ();
+
server_id = proc2_fopen (&server_pair, def_args);
if (server_id > 0)
server_setup ();