STRXFRM): Fix trailing \1 optimization if N is one bigger than return
[kopensolaris-gnu/glibc.git] / string / tst-strxfrm2.c
1 #include <locale.h>
2 #include <stdio.h>
3 #include <string.h>
4
5 static int
6 do_test (void)
7 {
8   int res = 0;
9
10   char buf[10];
11   size_t l1 = strxfrm (NULL, "ab", 0);
12   size_t l2 = strxfrm (buf, "ab", 1);
13   size_t l3 = strxfrm (buf, "ab", sizeof (buf));
14
15   if (l1 != l2 || l1 != l3)
16     {
17       puts ("C locale test failed");
18       res = 1;
19     }
20
21   if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
22     {
23       puts ("setlocale failed");
24       res = 1;
25     }
26   else
27     {
28       l1 = strxfrm (NULL, "ab", 0);
29       l2 = strxfrm (buf, "ab", 1);
30       l3 = strxfrm (buf, "ab", sizeof (buf));
31
32       if (l1 != l2 || l1 != l3)
33         {
34           puts ("UTF-8 locale test failed");
35           res = 1;
36         }
37     }
38
39   return res;
40 }
41
42 #define TEST_FUNCTION do_test ()
43 #include "../test-skeleton.c"