This patch from Evin Robertson <nitfol@my-deja.com> fixes export so it works.
authorEric Andersen <andersen@codepoet.org>
Mon, 7 May 2001 23:53:09 +0000 (23:53 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 7 May 2001 23:53:09 +0000 (23:53 -0000)
This way leaks memory, but oh well.  We will probably fix that when we get
around to doing local variables.

hush.c
shell/hush.c

diff --git a/hush.c b/hush.c
index e58ac44b3f7fda19a55a515db5b1e62a2f6f3be3..a5f634b9a81f97d5bff6e8602238ab48afb60b6f 100644 (file)
--- a/hush.c
+++ b/hush.c
@@ -469,7 +469,10 @@ static int builtin_export(struct child_prog *child)
        if (child->argv[1] == NULL) {
                return (builtin_env(child));
        }
-       res = putenv(child->argv[1]);
+       /* FIXME -- I leak memory.  This will be
+        * fixed up properly when we add local
+        * variable support -- I hope */
+       res = putenv(strdup(child->argv[1]));
        if (res)
                fprintf(stderr, "export: %s\n", strerror(errno));
        return (res);
index e58ac44b3f7fda19a55a515db5b1e62a2f6f3be3..a5f634b9a81f97d5bff6e8602238ab48afb60b6f 100644 (file)
@@ -469,7 +469,10 @@ static int builtin_export(struct child_prog *child)
        if (child->argv[1] == NULL) {
                return (builtin_env(child));
        }
-       res = putenv(child->argv[1]);
+       /* FIXME -- I leak memory.  This will be
+        * fixed up properly when we add local
+        * variable support -- I hope */
+       res = putenv(strdup(child->argv[1]));
        if (res)
                fprintf(stderr, "export: %s\n", strerror(errno));
        return (res);