From 2bbe80583bb601cdca730a4aafebb5622b6dddc1 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Tue, 22 Nov 2011 20:00:19 -0500 Subject: [PATCH] Bash-4.2 patch 5 --- builtins/printf.def | 3 +++ parse.y | 3 +++ patchlevel.h | 2 +- variables.c | 23 ++++++++++++++++++++--- variables.h | 1 + 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/builtins/printf.def b/builtins/printf.def index 7892cb5..9eca215 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 b5c94e7..65ec86a 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 2b93e97..5cca30b 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 3c20c3c..daacdbf 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 7041ca9..84e92bb 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 *)); -- 2.7.4