bug-glibc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

time/strftime.c: remove some duplication


From: Jim Meyering
Subject: time/strftime.c: remove some duplication
Date: Sun, 19 Jan 2003 14:08:25 +0100

Hi,

Here's a little clean-up patch for time/strftime.c:

2003-01-19  Jim Meyering  <address@hidden>

        * time/strftime.c: (widen): Merge nearly-identical definitions.
        (nl_get_alt_digit) [! defined my_strftime]: Define.
        (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
        _nl_get_alt_digit and _nl_get_walt_digit.

--- strftime.c.~4~      2003-01-19 13:59:07.000000000 +0100
+++ strftime.c  2003-01-19 13:59:10.000000000 +0100
@@ -290,8 +290,11 @@ static const CHAR_T zeroes[16] = /* "000
           MEMCPY ((PTR) p, (const PTR) (s), _n))
 
 #ifdef COMPILE_WIDE
-# ifdef USE_IN_EXTENDED_LOCALE_MODEL
-#  define widen(os, ws, l) \
+# ifndef USE_IN_EXTENDED_LOCALE_MODEL
+#  undef __mbsrtowcs_l
+#  define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st)
+# endif
+# define widen(os, ws, l) \
   {                                                                          \
     mbstate_t __st;                                                          \
     const char *__s = os;                                                    \
@@ -300,17 +303,6 @@ static const CHAR_T zeroes[16] = /* "000
     ws = alloca ((l + 1) * sizeof (wchar_t));                                \
     (void) __mbsrtowcs_l (ws, &__s, l, &__st, loc);                          \
   }
-# else
-#  define widen(os, ws, l) \
-  {                                                                          \
-    mbstate_t __st;                                                          \
-    const char *__s = os;                                                    \
-    memset (&__st, '\0', sizeof (__st));                                     \
-    l = __mbsrtowcs (NULL, &__s, 0, &__st);                                  \
-    ws = alloca ((l + 1) * sizeof (wchar_t));                                \
-    (void) __mbsrtowcs (ws, &__s, l, &__st);                                 \
-  }
-# endif
 #endif
 
 
@@ -478,8 +470,10 @@ static CHAR_T const month_name[][10] =
 #else
 # ifdef COMPILE_WIDE
 #  define my_strftime wcsftime
+#  define nl_get_alt_digit _nl_get_walt_digit
 # else
 #  define my_strftime strftime
+#  define nl_get_alt_digit _nl_get_alt_digit
 # endif
 # define ut_argument
 # define ut_argument_spec
@@ -987,13 +981,8 @@ my_strftime (s, maxsize, format, tp ut_a
 #ifdef _NL_CURRENT
              /* Get the locale specific alternate representation of
                 the number NUMBER_VALUE.  If none exist NULL is returned.  */
-# ifdef COMPILE_WIDE
-             const wchar_t *cp = _nl_get_walt_digit (number_value
-                                                     HELPER_LOCALE_ARG);
-# else
-             const char *cp = _nl_get_alt_digit (number_value
-                                                 HELPER_LOCALE_ARG);
-# endif
+             const CHAR_T *cp = nl_get_alt_digit (number_value
+                                                  HELPER_LOCALE_ARG);
 
              if (cp != NULL)
                {

Attachment: pgpErMKrOhJgA.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]