summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/misc/tst-fnmatch.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/misc/tst-fnmatch.c b/test/misc/tst-fnmatch.c
index 25471f8e4..d072ef89a 100644
--- a/test/misc/tst-fnmatch.c
+++ b/test/misc/tst-fnmatch.c
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
#include <sys/types.h>
@@ -33,6 +34,16 @@ static char *flag_output (int flags);
static char *escape (const char *str, size_t *reslenp, char **resbuf);
+int str_isalpha(const char *str)
+{
+ size_t i = strlen(str);
+ while (i--)
+ if (isascii(str[i]) == 0)
+ return 0;
+ return 1;
+}
+
+
int
main (void)
{
@@ -118,6 +129,7 @@ main (void)
/* Now run the actual test. */
++ntests;
+#ifdef __UCLIBC_HAS_XLOCALE__
if (setlocale (LC_COLLATE, locale) == NULL
|| setlocale (LC_CTYPE, locale) == NULL)
{
@@ -125,6 +137,14 @@ main (void)
++nfailed;
continue;
}
+#else
+ /* skip non-ascii strings */
+ if (!str_isalpha(pattern) || !str_isalpha(input))
+ {
+ printf("%3d: Skipping test that requires locale support\n", ++nr);
+ continue;
+ }
+#endif
fnmres = fnmatch (pattern, input, flags_val);