Commit 3e48c661 authored by Tom Lane's avatar Tom Lane

Fix code to work when isalpha and friends are macros, not functions.

parent 72a3902a
...@@ -124,8 +124,13 @@ static void findmust(struct parse * p, struct re_guts * g); ...@@ -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 sopno pluscount(struct parse * p, struct re_guts * g);
static int pg_isdigit(int c); static int pg_isdigit(int c);
static int pg_isalpha(int c); static int pg_isalpha(int c);
static int pg_isalnum(int c);
static int pg_isupper(int c); static int pg_isupper(int c);
static int pg_islower(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 static pg_wchar nuls[10]; /* place to point scanner in event of
* error */ * error */
...@@ -1709,6 +1714,16 @@ pg_isalpha(int c) ...@@ -1709,6 +1714,16 @@ pg_isalpha(int c)
#endif #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 static int
pg_isupper(int c) pg_isupper(int c)
{ {
...@@ -1729,6 +1744,46 @@ pg_islower(int c) ...@@ -1729,6 +1744,46 @@ pg_islower(int c)
#endif #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 * static struct cclass *
cclass_init(void) cclass_init(void)
{ {
...@@ -1756,17 +1811,17 @@ cclass_init(void) ...@@ -1756,17 +1811,17 @@ cclass_init(void)
char *chars; char *chars;
} cclass_factories [] = } cclass_factories [] =
{ {
{ "alnum", isalnum, NULL }, { "alnum", pg_isalnum, NULL },
{ "alpha", isalpha, NULL }, { "alpha", pg_isalpha, NULL },
{ "blank", NULL, " \t" }, { "blank", NULL, " \t" },
{ "cntrl", iscntrl, NULL }, { "cntrl", pg_iscntrl, NULL },
{ "digit", NULL, "0123456789" }, { "digit", NULL, "0123456789" },
{ "graph", isgraph, NULL }, { "graph", pg_isgraph, NULL },
{ "lower", islower, NULL }, { "lower", pg_islower, NULL },
{ "print", isprint, NULL }, { "print", pg_isprint, NULL },
{ "punct", ispunct, NULL }, { "punct", pg_ispunct, NULL },
{ "space", NULL, "\t\n\v\f\r " }, { "space", NULL, "\t\n\v\f\r " },
{ "upper", isupper, NULL }, { "upper", pg_isupper, NULL },
{ "xdigit", NULL, "0123456789ABCDEFabcdef" }, { "xdigit", NULL, "0123456789ABCDEFabcdef" },
{ NULL, NULL, NULL } { NULL, NULL, NULL }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment