X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fstrftime.c;h=b68b4cf5addfabcd45ce41b06f95f9ae08eedfc5;hb=5131be5b019b1110cd597012b63e48886aaaafc7;hp=71052daeb66beb95a0506e4d37901a13ee2df64c;hpb=077c39d9c71c304f77aee30c1982cb7c401e3065;p=gnulib.git diff --git a/lib/strftime.c b/lib/strftime.c index 71052daeb..b68b4cf5a 100644 --- a/lib/strftime.c +++ b/lib/strftime.c @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include @@ -120,7 +120,7 @@ extern char *tzname[]; ? (a) >> (b) \ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0)) -/* Bound on length of the string representing an integer value or type T. +/* Bound on length of the string representing an integer type or expression T. Subtract 1 for the sign bit if t is signed; log10 (2.0) < 146/485; add 1 for integer division truncation; add 1 more for a minus sign if needed. */ @@ -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_('-');