132 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 			     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_ */
 |