Roman Rakus 1680d4
			     BASH PATCH REPORT
Roman Rakus 1680d4
			     =================
Roman Rakus 1680d4
Roman Rakus 1680d4
Bash-Release:	4.2
Roman Rakus 1680d4
Patch-ID:	bash42-005
Roman Rakus 1680d4
Roman Rakus 1680d4
Bug-Reported-by:	Dennis Williamson <dennistwilliamson@gmail.com>
Roman Rakus 1680d4
Bug-Reference-ID:	<AANLkTikDbEV5rnbPc0zOfmZfBcg0xGetzLLzK+KjRiNa@mail.gmail.com>
Roman Rakus 1680d4
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00147.html
Roman Rakus 1680d4
Roman Rakus 1680d4
Bug-Description:
Roman Rakus 1680d4
Roman Rakus 1680d4
Systems that use tzset() to set the local timezone require the TZ variable
Roman Rakus 1680d4
to be in the environment.  Bash must make sure the environment has been
Roman Rakus 1680d4
modified with any updated value for TZ before calling tzset().  This
Roman Rakus 1680d4
affects prompt string expansions and the `%T' printf conversion specification
Roman Rakus 1680d4
on systems that do not allow bash to supply a replacement for getenv(3).
Roman Rakus 1680d4
Roman Rakus 1680d4
Patch (apply with `patch -p0'):
Roman Rakus 1680d4
Roman Rakus 1680d4
*** ../bash-4.2-patched/variables.h	2010-12-02 20:22:01.000000000 -0500
Roman Rakus 1680d4
--- variables.h	2011-02-19 19:57:12.000000000 -0500
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 314,317 ****
Roman Rakus 1680d4
--- 314,318 ----
Roman Rakus 1680d4
  extern void sort_variables __P((SHELL_VAR **));
Roman Rakus 1680d4
  
Roman Rakus 1680d4
+ extern int chkexport __P((char *));
Roman Rakus 1680d4
  extern void maybe_make_export_env __P((void));
Roman Rakus 1680d4
  extern void update_export_env_inplace __P((char *, int, char *));
Roman Rakus 1680d4
*** ../bash-4.2-patched/variables.c	2011-01-24 20:07:48.000000000 -0500
Roman Rakus 1680d4
--- variables.c	2011-02-19 20:04:50.000000000 -0500
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 3654,3657 ****
Roman Rakus 1680d4
--- 3654,3673 ----
Roman Rakus 1680d4
  }
Roman Rakus 1680d4
  
Roman Rakus 1680d4
+ int
Roman Rakus 1680d4
+ chkexport (name)
Roman Rakus 1680d4
+      char *name;
Roman Rakus 1680d4
+ {
Roman Rakus 1680d4
+   SHELL_VAR *v;
Roman Rakus 1680d4
+ 
Roman Rakus 1680d4
+   v = find_variable (name);
Roman Rakus 1680d4
+   if (exported_p (v))
Roman Rakus 1680d4
+     {
Roman Rakus 1680d4
+       array_needs_making = 1;
Roman Rakus 1680d4
+       maybe_make_export_env ();
Roman Rakus 1680d4
+       return 1;
Roman Rakus 1680d4
+     }
Roman Rakus 1680d4
+   return 0;
Roman Rakus 1680d4
+ }
Roman Rakus 1680d4
+ 
Roman Rakus 1680d4
  void
Roman Rakus 1680d4
  maybe_make_export_env ()
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 4215,4219 ****
Roman Rakus 1680d4
    { "TEXTDOMAINDIR", sv_locale },
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
Roman Rakus 1680d4
    { "TZ", sv_tz },
Roman Rakus 1680d4
  #endif
Roman Rakus 1680d4
--- 4231,4235 ----
Roman Rakus 1680d4
    { "TEXTDOMAINDIR", sv_locale },
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #if defined (HAVE_TZSET)
Roman Rakus 1680d4
    { "TZ", sv_tz },
Roman Rakus 1680d4
  #endif
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 4559,4568 ****
Roman Rakus 1680d4
  #endif /* HISTORY */
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #if defined (HAVE_TZSET) && defined (PROMPT_STRING_DECODE)
Roman Rakus 1680d4
  void
Roman Rakus 1680d4
  sv_tz (name)
Roman Rakus 1680d4
       char *name;
Roman Rakus 1680d4
  {
Roman Rakus 1680d4
!   tzset ();
Roman Rakus 1680d4
  }
Roman Rakus 1680d4
  #endif
Roman Rakus 1680d4
--- 4575,4585 ----
Roman Rakus 1680d4
  #endif /* HISTORY */
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #if defined (HAVE_TZSET)
Roman Rakus 1680d4
  void
Roman Rakus 1680d4
  sv_tz (name)
Roman Rakus 1680d4
       char *name;
Roman Rakus 1680d4
  {
Roman Rakus 1680d4
!   if (chkexport (name))
Roman Rakus 1680d4
!     tzset ();
Roman Rakus 1680d4
  }
Roman Rakus 1680d4
  #endif
Roman Rakus 1680d4
*** ../bash-4.2-patched/parse.y	2011-01-02 15:48:11.000000000 -0500
Roman Rakus 1680d4
--- parse.y	2011-02-19 20:05:00.000000000 -0500
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 5136,5139 ****
Roman Rakus 1680d4
--- 5136,5142 ----
Roman Rakus 1680d4
  	      /* Make the current time/date into a string. */
Roman Rakus 1680d4
  	      (void) time (&the_time);
Roman Rakus 1680d4
+ #if defined (HAVE_TZSET)
Roman Rakus 1680d4
+ 	      sv_tz ("TZ");		/* XXX -- just make sure */
Roman Rakus 1680d4
+ #endif
Roman Rakus 1680d4
  	      tm = localtime (&the_time);
Roman Rakus 1680d4
  
Roman Rakus 1680d4
*** ../bash-4.2-patched/builtins/printf.def	2010-11-23 10:02:55.000000000 -0500
Roman Rakus 1680d4
--- builtins/printf.def	2011-02-19 20:05:04.000000000 -0500
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 466,469 ****
Roman Rakus 1680d4
--- 466,472 ----
Roman Rakus 1680d4
  		else
Roman Rakus 1680d4
  		  secs = arg;
Roman Rakus 1680d4
+ #if defined (HAVE_TZSET)
Roman Rakus 1680d4
+ 		sv_tz ("TZ");		/* XXX -- just make sure */
Roman Rakus 1680d4
+ #endif
Roman Rakus 1680d4
  		tm = localtime (&secs;;
Roman Rakus 1680d4
  		n = strftime (timebuf, sizeof (timebuf), timefmt, tm);
Roman Rakus 1680d4
*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
Roman Rakus 1680d4
--- patchlevel.h	Thu Feb 24 21:41:34 2011
Roman Rakus 1680d4
***************
Roman Rakus 1680d4
*** 26,30 ****
Roman Rakus 1680d4
     looks for to find the patch level (for the sccs version string). */
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #define PATCHLEVEL 4
Roman Rakus 1680d4
  
Roman Rakus 1680d4
  #endif /* _PATCHLEVEL_H_ */
Roman Rakus 1680d4
--- 26,30 ----
Roman Rakus 1680d4
     looks for to find the patch level (for the sccs version string). */
Roman Rakus 1680d4
  
Roman Rakus 1680d4
! #define PATCHLEVEL 5
Roman Rakus 1680d4
  
Roman Rakus 1680d4
  #endif /* _PATCHLEVEL_H_ */