From: Jim Meyering Date: Sat, 18 Aug 2001 15:43:28 +0000 (+0000) Subject: Revert part of last change and solve the problem a better way. X-Git-Tag: TEXTUTILS-2_0_15~390 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6eb493e1db3cf188bbea0f42f6b75129c7d06e22;p=thirdparty%2Fcoreutils.git Revert part of last change and solve the problem a better way. (show_date) [--rfc-822]: Set LC_ALL=C just before calling strftime and restore it just afterwards. Suggestion from Ulrich Drepper. --- diff --git a/src/date.c b/src/date.c index 3e75899d19..380c749fae 100644 --- a/src/date.c +++ b/src/date.c @@ -488,11 +488,9 @@ show_date (const char *format, time_t when) return; } - if (rfc_format) - setlocale (LC_TIME, "C"); - - do + while (1) { + int done; out_length += 200; out = (char *) xrealloc (out, out_length); @@ -501,8 +499,18 @@ show_date (const char *format, time_t when) would not terminate when date was invoked like this `LANG=de date +%p' on a system with good language support. */ out[0] = '\1'; + + if (rfc_format) + setlocale (LC_ALL, "C"); + + done = (strftime (out, out_length, format, tm) || out[0] == '\0'); + + if (rfc_format) + setlocale (LC_ALL, ""); + + if (done) + break; } - while (strftime (out, out_length, format, tm) == 0 && out[0] != '\0'); printf ("%s\n", out); free (out);