]> mj.ucw.cz Git - libucw.git/blobdiff - lib/regex.c
Added very simple functions for emulating a fastbuf stream over a static
[libucw.git] / lib / regex.c
index 4cc75d6c3db6490e6ea642424d3aeff1c7bcb140..ce230848facdd0ba7b1709dc311daa23dd66312b 100644 (file)
@@ -3,12 +3,14 @@
  *
  *     (c) 1997 Martin Mares <mj@ucw.cz>
  *     (c) 2001 Robert Spalek <robert@ucw.cz>
+ *
+ *     This software may be freely distributed and used according to the terms
+ *     of the GNU Lesser General Public License.
  */
 
 #include "lib/lib.h"
 #include "lib/chartype.h"
 
-#include <ctype.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -37,10 +39,11 @@ rx_compile(byte *p, int icase)
       r->buf.translate = xmalloc (CHAR_SET_SIZE);
       /* Map uppercase characters to corresponding lowercase ones.  */
       for (i = 0; i < CHAR_SET_SIZE; i++)
-        r->buf.translate[i] = Cupper(i) ? tolower (i) : i;
+        r->buf.translate[i] = Cupcase(i);
     }
   else
     r->buf.translate = NULL;
+  re_set_syntax(RE_SYNTAX_POSIX_EXTENDED);
   msg = re_compile_pattern(p, strlen(p), &r->buf);
   if (!msg)
     return r;
@@ -51,6 +54,8 @@ void
 rx_free(regex *r)
 {
   xfree(r->buf.buffer);
+  if (r->buf.translate)
+    xfree(r->buf.translate);
   xfree(r);
 }