From: Tom Lane Date: Mon, 29 Sep 2003 00:21:58 +0000 (+0000) Subject: Fix broken definition of :print: character class, per Bruno Wolff. X-Git-Tag: REL9_0_0~14273 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5594aa6a6e82d70fdcdfb59d208d8bf539446598;p=pg-rex%2Fsyncrep.git Fix broken definition of :print: character class, per Bruno Wolff. Also, make :alnum: character class directly dependent on isalnum() rather than guessing. --- diff --git a/src/backend/regex/regc_locale.c b/src/backend/regex/regc_locale.c index 99ab48cd8a..647e6b134e 100644 --- a/src/backend/regex/regc_locale.c +++ b/src/backend/regex/regc_locale.c @@ -47,7 +47,7 @@ * permission to use and distribute the software in accordance with the * terms specified in this license. * - * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.3 2003/08/08 21:41:56 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.4 2003/09/29 00:21:58 tgl Exp $ */ /* ASCII character-name table */ @@ -389,6 +389,12 @@ pg_isgraph(pg_wchar c) } static int +pg_isprint(pg_wchar c) +{ + return (c >= 0 && c <= UCHAR_MAX && isprint((unsigned char) c)); +} + +static int pg_ispunct(pg_wchar c) { return (c >= 0 && c <= UCHAR_MAX && ispunct((unsigned char) c)); @@ -657,16 +663,25 @@ cclass(struct vars * v, /* context */ switch ((enum classes) index) { case CC_PRINT: + cv = getcvec(v, UCHAR_MAX, 0, 0); + if (cv) + { + for (i = 0; i <= UCHAR_MAX; i++) + { + if (pg_isprint((chr) i)) + addchr(cv, (chr) i); + } + } + break; case CC_ALNUM: - cv = getcvec(v, UCHAR_MAX, 1, 0); + cv = getcvec(v, UCHAR_MAX, 0, 0); if (cv) { for (i = 0; i <= UCHAR_MAX; i++) { - if (pg_isalpha((chr) i)) + if (pg_isalnum((chr) i)) addchr(cv, (chr) i); } - addrange(cv, (chr) '0', (chr) '9'); } break; case CC_ALPHA: diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c index cfc2481fca..1d266b41ef 100644 --- a/src/backend/regex/regcomp.c +++ b/src/backend/regex/regcomp.c @@ -28,7 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.38 2003/08/08 21:41:56 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.39 2003/09/29 00:21:58 tgl Exp $ * */ @@ -184,6 +184,7 @@ static int pg_isalnum(pg_wchar c); static int pg_isupper(pg_wchar c); static int pg_islower(pg_wchar c); static int pg_isgraph(pg_wchar c); +static int pg_isprint(pg_wchar c); static int pg_ispunct(pg_wchar c); static int pg_isspace(pg_wchar c); static pg_wchar pg_toupper(pg_wchar c);