diff options
Diffstat (limited to 'posix')
-rw-r--r-- | posix/tst-regex.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/posix/tst-regex.c b/posix/tst-regex.c index bcea884..94efb32 100644 --- a/posix/tst-regex.c +++ b/posix/tst-regex.c @@ -84,19 +84,23 @@ main (void) close (fd); - /* For the second test we have to convert the file content to UTF-8. */ - umem = (char *) calloc (2, memlen); - if (umem == NULL) - error (EXIT_FAILURE, errno, "while allocating buffer"); - + /* We have to convert a few things from Latin-1 to UTF-8. */ cd = iconv_open ("UTF-8", "ISO-8859-1"); if (cd == (iconv_t) -1) error (EXIT_FAILURE, errno, "cannot get conversion descriptor"); + /* For the second test we have to convert the file content to UTF-8. + Since the text is mostly ASCII it should be enough to allocate + twice as much memory for the UTF-8 text than for the Latin-1 + text. */ + umem = (char *) calloc (2, memlen); + if (umem == NULL) + error (EXIT_FAILURE, errno, "while allocating buffer"); + inmem = mem; inlen = memlen; outmem = umem; - outlen = 2 * memlen; + outlen = 2 * memlen - 1; iconv (cd, &inmem, &inlen, &outmem, &outlen); if (inlen != 0) error (EXIT_FAILURE, errno, "cannot convert buffer"); @@ -106,16 +110,20 @@ main (void) use_clock = clock_getcpuclockid (0, &cl) == 0; #endif +#ifdef DEBUG + re_set_syntax (RE_DEBUG); +#endif + /* Run the actual tests. All tests are run in a single-byte and a multi-byte locale. */ result = test_expr ("[äáàâéèêíìîñöóòôüúùû]", 2); result |= test_expr ("G.ran", 2); result |= test_expr ("G.\\{1\\}ran", 2); -#ifdef DOES_NOT_WORK - result |= test_expr ("G.*ran", 2); -#endif + result |= test_expr ("G.*ran", 3); + result |= test_expr ("[äáàâ]", 0); /* Free the resources. */ + free (umem); iconv_close (cd); free (mem); @@ -178,7 +186,7 @@ run_test (const char *expr, const char *mem, size_t memlen, int expected) use_clock = clock_gettime (cl, &start) == 0; #endif - err = regcomp (&re, expr, 0); + err = regcomp (&re, expr, REG_NEWLINE); if (err != REG_NOERROR) { char buf[200]; |