From d47d5b850bed398357e7f05d8fef508be1bb7f51 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 28 Apr 2010 09:59:37 +0000 Subject: Extend locale support to maintain wide char values of native strings if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/include/langinfo.h (enum __nl_item): New type. Define all native values accessible through nl_langinfo. Define previously existing POSIX-compatible values as macros as well. * libc/include/stdlib.h (__mb_cur_max): Drop declaration. (__locale_mb_cur_max): Declare. (MB_CUR_MAX): Re-define calling __locale_mb_cur_max. * libc/locale/Makefile.am (ELIX_SOURCES): Add lctype.c. * libc/locale/Makefile.in: Regenerate. * libc/locale/lctype.c: New file to define and load LC_CTYPE category. * libc/locale/lctype.h: New file, matching header. * libc/locale/lmessages.c (_C_messages_locale): Add default values for wide char members. (__messages_load_locale): Add _C_messages_locale in call to __set_lc_messages_from_win. * libc/locale/lmessages.h (struct lc_messages_T): Add wide char members. * libc/locale/lmonetary.c (_C_monetary_locale): Add default values for wide char members. (__monetary_load_locale): Add _C_monetary_locale in call to __set_lc_monetary_from_win. * libc/locale/lmonetary.h (struct lc_monetary_T): Add wide char members. Add numerical values for international currency formatting per POSIX-1.2008, if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/locale/lnumeric.c (_C_numeric_locale): Add default values for wide char members. (__numeric_load_locale): Add _C_numeric_locale in call to __set_lc_numeric_from_win. * libc/locale/lnumeric.h (struct lc_numeric_T): Add wide char members. * libc/locale/locale.c (loadlocale): Return doing nothing if category locale didn't change. Convert category if chain to switch statement. Call __ctype_load_locale in LC_CTYPE case. (__locale_charset): Add (but disable for now) returning codeset from __get_current_ctype_locale. (__locale_mb_cur_max): Add (but disable for now) returning mb_cur_max from __get_current_ctype_locale. (__locale_msgcharset): Add returning codeset from __get_current_messages_locale. (_localeconv_r): Accommodate int_XXX values. * libc/locale/nl_langinfo.c (nl_ext): New array to define what is to be returned for non-POSIX values. (nl_Langinfo): Return correct codeset for each locale category. Return extended values if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/locale/timelocal.c (_C_time_locale): Add default values for wide char members. (__time_load_locale): Add _C_time_locale in call to __set_lc_time_from_win. * libc/locale/timelocal.h (struct lc_time_T): Add wide char members. * libc/stdio/vfwprintf.c (_VFWPRINTF_R): Use wide char decimal point and thousands_sep if __HAVE_LOCALE_INFO_EXTENDED__ is defined. * libc/time/strftime.c: Rework to accommodate availability of wide char strings in LC_TIME category if __HAVE_LOCALE_INFO_EXTENDED__ is defined. --- newlib/libc/locale/Makefile.in | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'newlib/libc/locale/Makefile.in') diff --git a/newlib/libc/locale/Makefile.in b/newlib/libc/locale/Makefile.in index fe128f4ae..57a52fe5c 100644 --- a/newlib/libc/locale/Makefile.in +++ b/newlib/libc/locale/Makefile.in @@ -62,7 +62,8 @@ am__objects_1 = lib_a-locale.$(OBJEXT) @ELIX_LEVEL_1_FALSE@ lib_a-lnumeric.$(OBJEXT) \ @ELIX_LEVEL_1_FALSE@ lib_a-lmonetary.$(OBJEXT) \ @ELIX_LEVEL_1_FALSE@ lib_a-nl_langinfo.$(OBJEXT) \ -@ELIX_LEVEL_1_FALSE@ lib_a-timelocal.$(OBJEXT) +@ELIX_LEVEL_1_FALSE@ lib_a-timelocal.$(OBJEXT) \ +@ELIX_LEVEL_1_FALSE@ lib_a-lctype.$(OBJEXT) @USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1) \ @USE_LIBTOOL_FALSE@ $(am__objects_2) lib_a_OBJECTS = $(am_lib_a_OBJECTS) @@ -71,7 +72,7 @@ liblocale_la_LIBADD = am__objects_3 = locale.lo @ELIX_LEVEL_1_FALSE@am__objects_4 = fix_grouping.lo ldpart.lo \ @ELIX_LEVEL_1_FALSE@ lmessages.lo lnumeric.lo lmonetary.lo \ -@ELIX_LEVEL_1_FALSE@ nl_langinfo.lo timelocal.lo +@ELIX_LEVEL_1_FALSE@ nl_langinfo.lo timelocal.lo lctype.lo @USE_LIBTOOL_TRUE@am_liblocale_la_OBJECTS = $(am__objects_3) \ @USE_LIBTOOL_TRUE@ $(am__objects_4) liblocale_la_OBJECTS = $(am_liblocale_la_OBJECTS) @@ -168,6 +169,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ @@ -247,7 +249,8 @@ GENERAL_SOURCES = timelocal.h ldpart.h locale.c lnumeric.h lmonetary.h lmessages @ELIX_LEVEL_1_FALSE@ lnumeric.c \ @ELIX_LEVEL_1_FALSE@ lmonetary.c \ @ELIX_LEVEL_1_FALSE@ nl_langinfo.c \ -@ELIX_LEVEL_1_FALSE@ timelocal.c +@ELIX_LEVEL_1_FALSE@ timelocal.c \ +@ELIX_LEVEL_1_FALSE@ lctype.c @ELIX_LEVEL_1_TRUE@ELIX_SOURCES = liblocale_la_LDFLAGS = -Xcompiler -nostdlib @@ -379,6 +382,12 @@ lib_a-timelocal.o: timelocal.c lib_a-timelocal.obj: timelocal.c $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-timelocal.obj `if test -f 'timelocal.c'; then $(CYGPATH_W) 'timelocal.c'; else $(CYGPATH_W) '$(srcdir)/timelocal.c'; fi` +lib_a-lctype.o: lctype.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-lctype.o `test -f 'lctype.c' || echo '$(srcdir)/'`lctype.c + +lib_a-lctype.obj: lctype.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-lctype.obj `if test -f 'lctype.c'; then $(CYGPATH_W) 'lctype.c'; else $(CYGPATH_W) '$(srcdir)/lctype.c'; fi` + mostlyclean-libtool: -rm -f *.lo -- cgit v1.2.3