Просмотр исходного кода

This patch fixes locale-mbwc test failures when __UCLIBC_HAS_LOCALE__ is
disabled and __UCLIBC_HAS_WCHAR__ is enabled. The only locale available
when __UCLIBC_HAS_LOCALE__ is disabled is the C locale, the others locale
are skipped.

Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>

Carmelo Amoroso 16 лет назад
Родитель
Сommit
151b127c3a
1 измененных файлов с 24 добавлено и 0 удалено
  1. 24 0
      test/locale-mbwc/tst_funcs.h

+ 24 - 0
test/locale-mbwc/tst_funcs.h

@@ -95,6 +95,7 @@ extern int result (FILE * fp, char res, const char *func, const char *loc,
 	for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc)
 
 
+#ifdef __UCLIBC_HAS_LOCALE__
 #define TST_HEAD_LOCALE(ofunc, s_func) \
   func_id = TST_HEAD (ofunc).func_id;					      \
   locale  = TST_HEAD (ofunc).locale;					      \
@@ -106,6 +107,29 @@ extern int result (FILE * fp, char res, const char *func, const char *loc,
       ++err_count;							      \
       continue;								      \
     }
+#else
+#define TST_HEAD_LOCALE(ofunc, s_func)					\
+  func_id = TST_HEAD (ofunc).func_id;					\
+  locale  = TST_HEAD (ofunc).locale;					\
+  if (strcmp(locale, "C") == 0)					\
+	{								\
+	if (setlocale (LC_ALL, locale) == NULL)						\
+		{									\
+		fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n",	\
+			locale);							\
+		result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale");	\
+		++err_count;						\
+		continue;						\
+		}							\
+	}								\
+  else									\
+  	{								\
+		fprintf (stderr, "Warning : locale %s unsupported\n\n",		\
+			locale);						\
+		result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "unsupported");	\
+		continue;						      	\
+	}
+#endif
 
 #define TST_DO_REC(ofunc) \
 	for (rec=0; !TST_IS_LAST (ofunc); ++rec)