summary refs log tree commit diff
path: root/posix/tst-regex.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-06-27 22:27:03 +0000
committerUlrich Drepper <drepper@redhat.com>2001-06-27 22:27:03 +0000
commit2f07975de1d44e196edf7f725f02111d23e42057 (patch)
tree1ef99873e208c088630a76e6575d65b2380e233b /posix/tst-regex.c
parent64333c6623d36b69906590454cbe097d1bb598a3 (diff)
downloadglibc-2f07975de1d44e196edf7f725f02111d23e42057.tar.gz
glibc-2f07975de1d44e196edf7f725f02111d23e42057.tar.xz
glibc-2f07975de1d44e196edf7f725f02111d23e42057.zip
Update.
	* posix/tst-regex.c: Pass REG_NEWLINE to regcomp.  Add extra tests.
	Restrict printing of string in debug mode to 100 characters to make
	the output useful for long input texts.
Diffstat (limited to 'posix/tst-regex.c')
-rw-r--r--posix/tst-regex.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/posix/tst-regex.c b/posix/tst-regex.c
index bcea88414b..94efb32a4c 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];