Commit 65b91091 by DJ Delorie Committed by DJ Delorie

regex.c (re_error_msgid): Just use a simple array of strings.

* regex.c (re_error_msgid): Just use a simple array of strings.
(re_compile_pattern): Compensate.
(re_comp): Likewise.
(re_comp): Likewise.
(regerror): Likewise.

From-SVN: r56106
parent 0b6f2917
2002-08-07 DJ Delorie <dj@redhat.com>
* regex.c (re_error_msgid): Just use a simple array of strings.
(re_compile_pattern): Compensate.
(re_comp): Likewise.
(re_comp): Likewise.
(regerror): Likewise.
2002-07-29 Neil Booth <neil@daikokuya.co.uk> 2002-07-29 Neil Booth <neil@daikokuya.co.uk>
* cplus-dem.c (PREPEND_BLANK): Remove. * cplus-dem.c (PREPEND_BLANK): Remove.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
version 0.12. version 0.12.
(Implements POSIX draft P1003.2/D11.2, except for some of the (Implements POSIX draft P1003.2/D11.2, except for some of the
internationalization features.) internationalization features.)
Copyright (C) 1993-1999, 2000, 2001 Free Software Foundation, Inc. Copyright (C) 1993-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
...@@ -1373,81 +1373,27 @@ weak_alias (__re_set_syntax, re_set_syntax) ...@@ -1373,81 +1373,27 @@ weak_alias (__re_set_syntax, re_set_syntax)
POSIX doesn't require that we do anything for REG_NOERROR, POSIX doesn't require that we do anything for REG_NOERROR,
but why not be nice? */ but why not be nice? */
static const char re_error_msgid[] = static const char *re_error_msgid[] =
{ {
# define REG_NOERROR_IDX 0 gettext_noop ("Success"), /* REG_NOERROR */
gettext_noop ("Success") /* REG_NOERROR */ gettext_noop ("No match"), /* REG_NOMATCH */
"\0" gettext_noop ("Invalid regular expression"), /* REG_BADPAT */
# define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success") gettext_noop ("Invalid collation character"), /* REG_ECOLLATE */
gettext_noop ("No match") /* REG_NOMATCH */ gettext_noop ("Invalid character class name"), /* REG_ECTYPE */
"\0" gettext_noop ("Trailing backslash"), /* REG_EESCAPE */
# define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match") gettext_noop ("Invalid back reference"), /* REG_ESUBREG */
gettext_noop ("Invalid regular expression") /* REG_BADPAT */ gettext_noop ("Unmatched [ or [^"), /* REG_EBRACK */
"\0" gettext_noop ("Unmatched ( or \\("), /* REG_EPAREN */
# define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression") gettext_noop ("Unmatched \\{"), /* REG_EBRACE */
gettext_noop ("Invalid collation character") /* REG_ECOLLATE */ gettext_noop ("Invalid content of \\{\\}"), /* REG_BADBR */
"\0" gettext_noop ("Invalid range end"), /* REG_ERANGE */
# define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character") gettext_noop ("Memory exhausted"), /* REG_ESPACE */
gettext_noop ("Invalid character class name") /* REG_ECTYPE */ gettext_noop ("Invalid preceding regular expression"), /* REG_BADRPT */
"\0" gettext_noop ("Premature end of regular expression"), /* REG_EEND */
# define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name") gettext_noop ("Regular expression too big"), /* REG_ESIZE */
gettext_noop ("Trailing backslash") /* REG_EESCAPE */
"\0"
# define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash")
gettext_noop ("Invalid back reference") /* REG_ESUBREG */
"\0"
# define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference")
gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
"\0"
# define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
"\0"
# define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
gettext_noop ("Unmatched \\{") /* REG_EBRACE */
"\0"
# define REG_BADBR_IDX (REG_EBRACE_IDX + sizeof "Unmatched \\{")
gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
"\0"
# define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
gettext_noop ("Invalid range end") /* REG_ERANGE */
"\0"
# define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end")
gettext_noop ("Memory exhausted") /* REG_ESPACE */
"\0"
# define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted")
gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
"\0"
# define REG_EEND_IDX (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression")
gettext_noop ("Premature end of regular expression") /* REG_EEND */
"\0"
# define REG_ESIZE_IDX (REG_EEND_IDX + sizeof "Premature end of regular expression")
gettext_noop ("Regular expression too big") /* REG_ESIZE */
"\0"
# define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big")
gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */ gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
}; };
static const size_t re_error_msgid_idx[] =
{
REG_NOERROR_IDX,
REG_NOMATCH_IDX,
REG_BADPAT_IDX,
REG_ECOLLATE_IDX,
REG_ECTYPE_IDX,
REG_EESCAPE_IDX,
REG_ESUBREG_IDX,
REG_EBRACK_IDX,
REG_EPAREN_IDX,
REG_EBRACE_IDX,
REG_BADBR_IDX,
REG_ERANGE_IDX,
REG_ESPACE_IDX,
REG_BADRPT_IDX,
REG_EEND_IDX,
REG_ESIZE_IDX,
REG_ERPAREN_IDX
};
#endif /* INSIDE_RECURSION */ #endif /* INSIDE_RECURSION */
#ifndef DEFINED_ONCE #ifndef DEFINED_ONCE
...@@ -7944,7 +7890,7 @@ re_compile_pattern (pattern, length, bufp) ...@@ -7944,7 +7890,7 @@ re_compile_pattern (pattern, length, bufp)
if (!ret) if (!ret)
return NULL; return NULL;
return gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); return gettext (re_error_msgid[(int) ret]);
} }
#ifdef _LIBC #ifdef _LIBC
weak_alias (__re_compile_pattern, re_compile_pattern) weak_alias (__re_compile_pattern, re_compile_pattern)
...@@ -7981,14 +7927,12 @@ re_comp (s) ...@@ -7981,14 +7927,12 @@ re_comp (s)
{ {
re_comp_buf.buffer = (unsigned char *) malloc (200); re_comp_buf.buffer = (unsigned char *) malloc (200);
if (re_comp_buf.buffer == NULL) if (re_comp_buf.buffer == NULL)
return (char *) gettext (re_error_msgid return (char *) gettext (re_error_msgid[(int) REG_ESPACE]);
+ re_error_msgid_idx[(int) REG_ESPACE]);
re_comp_buf.allocated = 200; re_comp_buf.allocated = 200;
re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH); re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH);
if (re_comp_buf.fastmap == NULL) if (re_comp_buf.fastmap == NULL)
return (char *) gettext (re_error_msgid return (char *) gettext (re_error_msgid[(int) REG_ESPACE]);
+ re_error_msgid_idx[(int) REG_ESPACE]);
} }
/* Since `re_exec' always passes NULL for the `regs' argument, we /* Since `re_exec' always passes NULL for the `regs' argument, we
...@@ -8008,7 +7952,7 @@ re_comp (s) ...@@ -8008,7 +7952,7 @@ re_comp (s)
return NULL; return NULL;
/* Yes, we're discarding `const' here if !HAVE_LIBINTL. */ /* Yes, we're discarding `const' here if !HAVE_LIBINTL. */
return (char *) gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); return (char *) gettext (re_error_msgid[(int) ret]);
} }
...@@ -8239,15 +8183,15 @@ regerror (errcode, preg, errbuf, errbuf_size) ...@@ -8239,15 +8183,15 @@ regerror (errcode, preg, errbuf, errbuf_size)
size_t msg_size; size_t msg_size;
if (errcode < 0 if (errcode < 0
|| errcode >= (int) (sizeof (re_error_msgid_idx) || errcode >= (int) (sizeof (re_error_msgid)
/ sizeof (re_error_msgid_idx[0]))) / sizeof (re_error_msgid[0])))
/* Only error codes returned by the rest of the code should be passed /* Only error codes returned by the rest of the code should be passed
to this routine. If we are given anything else, or if other regex to this routine. If we are given anything else, or if other regex
code generates an invalid error code, then the program has a bug. code generates an invalid error code, then the program has a bug.
Dump core so we can fix it. */ Dump core so we can fix it. */
abort (); abort ();
msg = gettext (re_error_msgid + re_error_msgid_idx[errcode]); msg = gettext (re_error_msgid[errcode]);
msg_size = strlen (msg) + 1; /* Includes the null. */ msg_size = strlen (msg) + 1; /* Includes the 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