summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-11-22 20:00:19 -0500
committerChet Ramey <chet.ramey@case.edu>2011-11-22 20:00:19 -0500
commit2bbe80583bb601cdca730a4aafebb5622b6dddc1 (patch)
tree9c66fa5dbafa184fb1e7cecf5731e8145f52f861
parentaeb26a67db0df058436b835363fc433e258719f3 (diff)
downloadbash-2bbe80583bb601cdca730a4aafebb5622b6dddc1.tar.gz
Bash-4.2 patch 5
-rw-r--r--builtins/printf.def3
-rw-r--r--parse.y3
-rw-r--r--patchlevel.h2
-rw-r--r--variables.c23
-rw-r--r--variables.h1
5 files changed, 28 insertions, 4 deletions
diff --git a/builtins/printf.def b/builtins/printf.def
index 7892cb5a..9eca2152 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -465,6 +465,9 @@ printf_builtin (list)
secs = shell_start_time; /* roughly $SECONDS */
else
secs = arg;
+#if defined (HAVE_TZSET)
+ sv_tz ("TZ"); /* XXX -- just make sure */
+#endif
tm = localtime (&secs);
n = strftime (timebuf, sizeof (timebuf), timefmt, tm);
free (timefmt);
diff --git a/parse.y b/parse.y
index b5c94e7a..65ec86aa 100644
--- a/parse.y
+++ b/parse.y
@@ -5135,6 +5135,9 @@ decode_prompt_string (string)
case 'A':
/* Make the current time/date into a string. */
(void) time (&the_time);
+#if defined (HAVE_TZSET)
+ sv_tz ("TZ"); /* XXX -- just make sure */
+#endif
tm = localtime (&the_time);
if (c == 'd')
diff --git a/patchlevel.h b/patchlevel.h
index 2b93e977..5cca30b8 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 4
+#define PATCHLEVEL 5
#endif /* _PATCHLEVEL_H_ */
diff --git a/variables.c b/variables.c
index 3c20c3c0..daacdbf0 100644
--- a/variables.c
+++ b/variables.c
@@ -3653,6 +3653,22 @@ n_shell_variables ()
return n;
}
+int
+chkexport (name)
+ char *name;
+{
+ SHELL_VAR *v;
+
+ v = find_variable (name);
+ if (exported_p (v))
+ {
+ array_needs_making = 1;
+ maybe_make_export_env ();
+ return 1;
+ }
+ return 0;
+}
+
void
maybe_make_export_env ()
{
@@ -4214,7 +4230,7 @@ static struct name_and_function special_vars[] = {
{ "TEXTDOMAIN", sv_locale },
{ "TEXTDOMAINDIR", sv_locale },
-#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
+#if defined (HAVE_TZSET)
{ "TZ", sv_tz },
#endif
@@ -4558,12 +4574,13 @@ sv_histtimefmt (name)
}
#endif /* HISTORY */
-#if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
+#if defined (HAVE_TZSET)
void
sv_tz (name)
char *name;
{
- tzset ();
+ if (chkexport (name))
+ tzset ();
}
#endif
diff --git a/variables.h b/variables.h
index 7041ca94..84e92bbf 100644
--- a/variables.h
+++ b/variables.h
@@ -313,6 +313,7 @@ extern void set_func_auto_export __P((const char *));
extern void sort_variables __P((SHELL_VAR **));
+extern int chkexport __P((char *));
extern void maybe_make_export_env __P((void));
extern void update_export_env_inplace __P((char *, int, char *));
extern void put_command_name_into_env __P((char *));