You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.3 KiB
131 lines
3.3 KiB
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_ */
|
|
|