OSDN Git Service

Do __nl_langinfo, partly sync header w/ glibc, add missing nl_langinfo_l, change...
authorPeter S. Mazinger <ps.m@gmx.net>
Fri, 9 Dec 2005 20:49:27 +0000 (20:49 -0000)
committerPeter S. Mazinger <ps.m@gmx.net>
Fri, 9 Dec 2005 20:49:27 +0000 (20:49 -0000)
include/langinfo.h
libc/misc/locale/locale.c
libc/misc/time/time.c

index ed38da8..837a87b 100644 (file)
@@ -606,7 +606,7 @@ extern char *nl_langinfo (nl_item __item) __THROW;
 
 
 #ifdef __UCLIBC_HAS_XLOCALE__
-#ifdef  __USE_GNU
+#ifdef __USE_GNU
 /* This interface is for the extended locale model.  See <locale.h> for
    more information.  */
 
@@ -614,12 +614,7 @@ extern char *nl_langinfo (nl_item __item) __THROW;
 # include <xlocale.h>
 
 /* Just like nl_langinfo but get the information from the locale object L.  */
-#ifdef __UCLIBC_MJN3_ONLY__
-#warning "mjn3 FIXME: nl_langinfo_l has a prototype but isn't defined."
-#endif
 extern char *nl_langinfo_l (nl_item __item, __locale_t l);
-extern char *__nl_langinfo_l (nl_item __item, __locale_t l);
-
 #endif
 #endif
 
index b73ffa3..bf0628e 100644 (file)
@@ -1002,7 +1002,7 @@ static const unsigned char nl_data[C_LC_ALL + 1 + 90 + 320] = {
           ']', '\x00',    '^',    '[',    'n',    'N',    ']', '\x00', 
 };
 
-char *nl_langinfo(nl_item item)
+char attribute_hidden *__nl_langinfo(nl_item item)
 {
        unsigned int c;
        unsigned int i;
@@ -1015,21 +1015,25 @@ char *nl_langinfo(nl_item item)
        }
        return (char *) cat_start;      /* Conveniently, this is the empty string. */
 }
+strong_alias(__nl_langinfo,nl_langinfo)
 
 #else  /* __LOCALE_C_ONLY */
 
 #if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
 
-char *nl_langinfo(nl_item item)
+extern char *__nl_langinfo_l (nl_item __item, __locale_t l) attribute_hidden;
+
+char attribute_hidden *__nl_langinfo(nl_item item)
 {
        return __nl_langinfo_l(item, __UCLIBC_CURLOCALE);
 }
+strong_alias(__nl_langinfo,nl_langinfo)
 
 #else  /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
 
 static const char empty[] = "";
 
-char *__XL(nl_langinfo)(nl_item item   __LOCALE_PARAM )
+char attribute_hidden *__UCXL(nl_langinfo)(nl_item item   __LOCALE_PARAM )
 {
        unsigned int c = _NL_ITEM_CATEGORY(item);
        unsigned int i = _NL_ITEM_INDEX(item);
@@ -1041,6 +1045,7 @@ char *__XL(nl_langinfo)(nl_item item   __LOCALE_PARAM )
 
        return (char *) empty;
 }
+__UCXL_ALIAS(nl_langinfo)
 
 #endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
 
index e9ca07e..fac8563 100644 (file)
@@ -152,6 +152,8 @@ extern long int __strtol (__const char *__restrict __nptr,
                        char **__restrict __endptr, int __base)
      __THROW __nonnull ((1)) __wur attribute_hidden;
 
+extern char *__nl_langinfo (nl_item __item) __THROW attribute_hidden;
+
 #ifdef __UCLIBC_HAS_XLOCALE__
 #include <xlocale.h>
 extern long int __strtol_l (__const char *__restrict __nptr,
@@ -168,6 +170,8 @@ extern size_t __strftime_l (char *__restrict __s, size_t __maxsize,
 extern char *__strptime_l (__const char *__restrict __s,
                         __const char *__restrict __fmt, struct tm *__tp,
                         __locale_t __loc) __THROW attribute_hidden;
+
+extern char *__nl_langinfo_l (nl_item __item, __locale_t l) attribute_hidden;
 #endif
 
 #ifndef __isleap
@@ -1052,7 +1056,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
                                + (code & 7);
 #ifdef ENABLE_ERA_CODE
                        if ((mod & NO_E_MOD) /* Actually, this means E modifier present. */
-                               && (*(o = __XL(nl_langinfo)(_NL_ITEM(LC_TIME,
+                               && (*(o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
                                                                                         (int)(((unsigned char *)p)[4]))
                                                                                        __LOCALE_ARG
                                                                          )))
@@ -1061,7 +1065,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
                                goto LOOP;
                        }
 #endif
-                       p = __XL(nl_langinfo)(_NL_ITEM(LC_TIME,
+                       p = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
                                                                         (int)(*((unsigned char *)p)))
                                                                  __LOCALE_ARG
                                                                  );
@@ -1238,7 +1242,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
                if ((code & MASK_SPEC) == STRING_SPEC) {
                        o_count = SIZE_MAX;
                        field_val += spec[STRINGS_NL_ITEM_START + (code & 0xf)];
-                       o = __XL(nl_langinfo)(_NL_ITEM(LC_TIME, field_val)  __LOCALE_ARG );
+                       o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME, field_val)  __LOCALE_ARG );
                } else {
                        o_count = ((i >> 1) & 3) + 1;
                        o = buf + o_count;
@@ -1499,7 +1503,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
                                + (code & 7);
 #ifdef ENABLE_ERA_CODE
                        if ((mod & NO_E_MOD) /* Actually, this means E modifier present. */
-                               && (*(o = __XL(nl_langinfo)(_NL_ITEM(LC_TIME,
+                               && (*(o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
                                                                                          (int)(((unsigned char *)p)[4]))
                                                                                        __LOCALE_ARG
                                                                                        )))
@@ -1508,7 +1512,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
                                goto LOOP;
                        }
 #endif
-                       p = __XL(nl_langinfo)(_NL_ITEM(LC_TIME,
+                       p = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
                                                                                   (int)(*((unsigned char *)p)))
                                                                  __LOCALE_ARG );
                        goto LOOP;
@@ -1523,7 +1527,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
                        /* Go backwards to check full names before abreviations. */
                        do {
                                --j;
-                               o = __XL(nl_langinfo)(i+j   __LOCALE_ARG);
+                               o = __UCXL(nl_langinfo)(i+j   __LOCALE_ARG);
                                if (!__UCXL(strncasecmp)(buf,o,__strlen(o)   __LOCALE_ARG) && *o) {
                                        do {            /* Found a match. */
                                                ++buf;