From 6eb493e1db3cf188bbea0f42f6b75129c7d06e22 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 18 Aug 2001 15:43:28 +0000 Subject: 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. --- src/date.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/date.c') diff --git a/src/date.c b/src/date.c index 3e75899d1..380c749fa 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); -- cgit v1.2.3-54-g00ecf