]> granicus.if.org Git - postgresql/commitdiff
Fix code to work when isalpha and friends are macros, not functions.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 May 2002 00:50:31 +0000 (00:50 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 May 2002 00:50:31 +0000 (00:50 +0000)
src/backend/regex/regcomp.c

index 5392953c6a9c4f1fbe160a534cdf3d0818aa5fa3..bea464bd2ae88aa2b8a8bd0d8f27e27d9e1ff68d 100644 (file)
@@ -124,8 +124,13 @@ static void findmust(struct parse * p, struct re_guts * g);
 static sopno pluscount(struct parse * p, struct re_guts * g);
 static int     pg_isdigit(int c);
 static int     pg_isalpha(int c);
+static int     pg_isalnum(int c);
 static int     pg_isupper(int c);
 static int     pg_islower(int c);
+static int     pg_iscntrl(int c);
+static int     pg_isgraph(int c);
+static int     pg_isprint(int c);
+static int     pg_ispunct(int c);
 
 static pg_wchar nuls[10];              /* place to point scanner in event of
                                                                 * error */
@@ -1709,6 +1714,16 @@ pg_isalpha(int c)
 #endif
 }
 
+static int
+pg_isalnum(int c)
+{
+#ifdef MULTIBYTE
+       return (c >= 0 && c <= UCHAR_MAX && isalnum((unsigned char) c));
+#else
+       return (isalnum((unsigned char) c));
+#endif
+}
+
 static int
 pg_isupper(int c)
 {
@@ -1729,6 +1744,46 @@ pg_islower(int c)
 #endif
 }
 
+static int
+pg_iscntrl(int c)
+{
+#ifdef MULTIBYTE
+       return (c >= 0 && c <= UCHAR_MAX && iscntrl((unsigned char) c));
+#else
+       return (iscntrl((unsigned char) c));
+#endif
+}
+
+static int
+pg_isgraph(int c)
+{
+#ifdef MULTIBYTE
+       return (c >= 0 && c <= UCHAR_MAX && isgraph((unsigned char) c));
+#else
+       return (isgraph((unsigned char) c));
+#endif
+}
+
+static int
+pg_isprint(int c)
+{
+#ifdef MULTIBYTE
+       return (c >= 0 && c <= UCHAR_MAX && isprint((unsigned char) c));
+#else
+       return (isprint((unsigned char) c));
+#endif
+}
+
+static int
+pg_ispunct(int c)
+{
+#ifdef MULTIBYTE
+       return (c >= 0 && c <= UCHAR_MAX && ispunct((unsigned char) c));
+#else
+       return (ispunct((unsigned char) c));
+#endif
+}
+
 static struct cclass *
 cclass_init(void)
 {
@@ -1756,17 +1811,17 @@ cclass_init(void)
         char *chars;
     } cclass_factories [] =
         {
-            { "alnum", isalnum, NULL },
-            { "alpha", isalpha, NULL },
+            { "alnum", pg_isalnum, NULL },
+            { "alpha", pg_isalpha, NULL },
             { "blank", NULL, " \t" },
-            { "cntrl", iscntrl, NULL },
+            { "cntrl", pg_iscntrl, NULL },
             { "digit", NULL, "0123456789" },
-            { "graph", isgraph, NULL },
-            { "lower", islower, NULL },
-            { "print", isprint, NULL },
-            { "punct", ispunct, NULL },
+            { "graph", pg_isgraph, NULL },
+            { "lower", pg_islower, NULL },
+            { "print", pg_isprint, NULL },
+            { "punct", pg_ispunct, NULL },
             { "space", NULL, "\t\n\v\f\r " },
-            { "upper", isupper, NULL },
+            { "upper", pg_isupper, NULL },
             { "xdigit", NULL, "0123456789ABCDEFabcdef" },
             { NULL, NULL, NULL }
         };