about summary refs log tree commit diff
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