svashisht / rpms / bash

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