summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/exec.c7
-rw-r--r--Src/params.c3
3 files changed, 8 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 9cf10391d..7199b2950 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-21 Peter Stephenson <pws@csr.com>
+
+ * 19971: Src/exec.c, Src/params.c: use putenv to put "_"
+ into exec'd environment, avoiding horrific hack.
+
2004-05-20 Wayne Davison <wayned@users.sourceforge.net>
* 19962: Src/builtin.c, Src/hist.c, Doc/Zsh/builtins.yo,
diff --git a/Src/exec.c b/Src/exec.c
index 1bc461ffa..fe1415845 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -352,18 +352,13 @@ zexecve(char *pth, char **argv)
for (eep = argv; *eep; eep++)
if (*eep != pth)
unmetafy(*eep, NULL);
- for (eep = environ; *eep; eep++)
- if (**eep == '_' && (*eep)[1] == '=')
- break;
buf[0] = '_';
buf[1] = '=';
if (*pth == '/')
strcpy(buf + 2, pth);
else
sprintf(buf + 2, "%s/%s", pwd, pth);
- if (!*eep)
- eep[1] = NULL;
- *eep = buf;
+ zputenv(buf);
closedumps();
execve(pth, argv, environ);
diff --git a/Src/params.c b/Src/params.c
index 26ff2c566..4f1d08b92 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3297,7 +3297,8 @@ arrfixenv(char *s, char **t)
}
-static int
+/**/
+int
zputenv(char *str)
{
#ifdef HAVE_PUTENV