diff options
Diffstat (limited to 'package/bash/bash-4.2-005.patch')
-rw-r--r-- | package/bash/bash-4.2-005.patch | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/package/bash/bash-4.2-005.patch b/package/bash/bash-4.2-005.patch new file mode 100644 index 000000000..c53a4e9c9 --- /dev/null +++ b/package/bash/bash-4.2-005.patch @@ -0,0 +1,131 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.2 +Patch-ID: bash42-005 + +Bug-Reported-by: Dennis Williamson <dennistwilliamson@gmail.com> +Bug-Reference-ID: <AANLkTikDbEV5rnbPc0zOfmZfBcg0xGetzLLzK+KjRiNa@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00147.html + +Bug-Description: + +Systems that use tzset() to set the local timezone require the TZ variable +to be in the environment. Bash must make sure the environment has been +modified with any updated value for TZ before calling tzset(). This +affects prompt string expansions and the `%T' printf conversion specification +on systems that do not allow bash to supply a replacement for getenv(3). + +Patch (apply with `patch -p0'): + +*** ../bash-4.2-patched/variables.h 2010-12-02 20:22:01.000000000 -0500 +--- ./variables.h 2011-02-19 19:57:12.000000000 -0500 +*************** +*** 314,317 **** +--- 314,318 ---- + 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 *)); +*** ../bash-4.2-patched/variables.c 2011-01-24 20:07:48.000000000 -0500 +--- ./variables.c 2011-02-19 20:04:50.000000000 -0500 +*************** +*** 3654,3657 **** +--- 3654,3673 ---- + } + ++ 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 () +*************** +*** 4215,4219 **** + { "TEXTDOMAINDIR", sv_locale }, + +! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) + { "TZ", sv_tz }, + #endif +--- 4231,4235 ---- + { "TEXTDOMAINDIR", sv_locale }, + +! #if defined (HAVE_TZSET) + { "TZ", sv_tz }, + #endif +*************** +*** 4559,4568 **** + #endif /* HISTORY */ + +! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE) + void + sv_tz (name) + char *name; + { +! tzset (); + } + #endif +--- 4575,4585 ---- + #endif /* HISTORY */ + +! #if defined (HAVE_TZSET) + void + sv_tz (name) + char *name; + { +! if (chkexport (name)) +! tzset (); + } + #endif +*** ../bash-4.2-patched/parse.y 2011-01-02 15:48:11.000000000 -0500 +--- ./parse.y 2011-02-19 20:05:00.000000000 -0500 +*************** +*** 5136,5139 **** +--- 5136,5142 ---- + /* 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); + +*** ../bash-4.2-patched/builtins/printf.def 2010-11-23 10:02:55.000000000 -0500 +--- ./builtins/printf.def 2011-02-19 20:05:04.000000000 -0500 +*************** +*** 466,469 **** +--- 466,472 ---- + 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); +*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 +--- ./patchlevel.h Thu Feb 24 21:41:34 2011 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ |