132 lines
3.4 KiB
Diff
132 lines
3.4 KiB
Diff
|
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_ */
|