tcsh: export PATH if using the default setting
authorSimon Schubert <corecode@dragonflybsd.org>
Thu, 5 Feb 2009 09:55:24 +0000 (10:55 +0100)
committerSimon Schubert <corecode@dragonflybsd.org>
Thu, 5 Feb 2009 09:56:58 +0000 (10:56 +0100)
contrib/tcsh-6/sh.c
contrib/tcsh-6/sh.decls.h
contrib/tcsh-6/sh.set.c

index 57b1bef..7dbd716 100644 (file)
@@ -652,13 +652,17 @@ main(int argc, char **argv)
     /*
      * Re-initialize path if set in environment
      */
-    if ((tcp = getenv("PATH")) == NULL)
+    if ((tcp = getenv("PATH")) == NULL) {
 #ifdef _PATH_DEFPATH
        importpath(str2short(_PATH_DEFPATH));
 #else /* !_PATH_DEFPATH */
        setq(STRpath, defaultpath(), &shvhed, VAR_READWRITE);
 #endif /* _PATH_DEFPATH */
-    else
+       /*
+        * Export the path setting so that subsequent processes use the same path as we do.
+        */
+       exportpath(adrof(STRpath)->vec);
+    } else
        /* Importpath() allocates memory for the path, and the
         * returned pointer from SAVE() was discarded, so
         * this was a memory leak.. (sg)
index 41cddba..ccd7309 100644 (file)
@@ -387,6 +387,7 @@ extern      Char             *unparse       (struct command *);
 extern void              update_dspmbyte_vars  (void);
 extern void              autoset_dspmbyte      (const Char *);
 #endif
+extern void             exportpath     (Char **);
 
 /*
  * sh.time.c
index 8253e02..e9204a1 100644 (file)
@@ -53,7 +53,6 @@ static        Char            *operate        (int, Char *, Char *);
 static void             putn1          (unsigned);
 static struct varent   *madrof         (Char *, struct varent *);
 static void             unsetv1        (struct varent *);
-static void             exportpath     (Char **);
 static void             balance        (struct varent *, int, int);
 
 /*
@@ -874,7 +873,7 @@ shift(Char **v, struct command *c)
     update_vars(name);
 }
 
-static void
+void
 exportpath(Char **val)
 {
     struct Strbuf buf = Strbuf_INIT;