X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fstrftime.c;h=b68b4cf5addfabcd45ce41b06f95f9ae08eedfc5;hb=5131be5b019b1110cd597012b63e48886aaaafc7;hp=37c51232b0b1cabaaf43641c30739e6cfb9403ee;hpb=267a39bafd249d7eb9c37df06dc6defcf41cb343;p=gnulib.git diff --git a/lib/strftime.c b/lib/strftime.c index 37c51232b..b68b4cf5a 100644 --- a/lib/strftime.c +++ b/lib/strftime.c @@ -373,13 +373,6 @@ static CHAR_T const month_name[][10] = # define ns 0 #endif -#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST -/* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned - by localtime. On such systems, we must use the tzset and localtime - wrappers to work around the bug. */ -"you must run the autoconf test for a working tzset function" -#endif - /* Write information from TP into S according to the format string FORMAT, writing no more that MAXSIZE characters @@ -439,6 +432,15 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format, const char *format_end = NULL; #endif +#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST + /* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned + by localtime. On such systems, we must either use the tzset and + localtime wrappers to work around the bug (which sets + HAVE_RUN_TZSET_TEST) or make a copy of the structure. */ + struct tm copy = *tp; + tp = © +#endif + zone = NULL; #if HAVE_TM_ZONE /* The POSIX test suite assumes that setting @@ -907,10 +909,10 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format, } while (u_number_value != 0); + do_number_sign_and_padding: if (digits < width) digits = width; - do_number_sign_and_padding: if (negative_number) *--bufp = L_('-');