Revert part of last change and solve the problem a better way.
authorJim Meyering <jim@meyering.net>
Sat, 18 Aug 2001 15:43:28 +0000 (15:43 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 18 Aug 2001 15:43:28 +0000 (15:43 +0000)
(show_date) [--rfc-822]: Set LC_ALL=C just before
calling strftime and restore it just afterwards.
Suggestion from Ulrich Drepper.

src/date.c

index 3e75899..380c749 100644 (file)
@@ -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);