Commit Message
For 2.22. Revised per discussion at
https://sourceware.org/ml/libc-alpha/2015-07/msg00862.html and
https://sourceware.org/ml/libc-alpha/2015-07/msg00871.html .
* regexp.h: Add unconditional #warning stating that this header
will be removed soon. Revise banner comment to match.
(compile): Consistently use ERROR instead of RETURN to report
errors (partial fix for bz#18681).
* regexp.c: Don't include regexp.h. Remove some unnecessary
declarations.
---
NEWS | 8 ++++++++
misc/regexp.c | 8 ++++----
misc/regexp.h | 31 +++++++++++++++++--------------
3 files changed, 29 insertions(+), 18 deletions(-)
#include <features.h>
#include <alloca.h>
@@ -182,19 +185,19 @@ compile (char *__restrict instring, char
*__restrict expbuf,
case REG_ERPAREN:
default:
/* There is no matching error code. */
- RETURN (36);
+ ERROR (36);
case REG_ESUBREG:
- RETURN (25);
+ ERROR (25);
case REG_EBRACK:
- RETURN (49);
+ ERROR (49);
case REG_EPAREN:
- RETURN (42);
+ ERROR (42);
case REG_EBRACE:
- RETURN (44);
+ ERROR (44);
case REG_BADBR:
- RETURN (46);
+ ERROR (46);
case REG_ERANGE:
- RETURN (11);
+ ERROR (11);
case REG_ESPACE:
case REG_ESIZE:
ERROR (50);
Comments
On 07/25/2015 11:02 AM, Zack Weinberg wrote:
> For 2.22. Revised per discussion at
> https://sourceware.org/ml/libc-alpha/2015-07/msg00862.html and
> https://sourceware.org/ml/libc-alpha/2015-07/msg00871.html .
>
> * regexp.h: Add unconditional #warning stating that this header
> will be removed soon. Revise banner comment to match.
> (compile): Consistently use ERROR instead of RETURN to report
> errors (partial fix for bz#18681).
> * regexp.c: Don't include regexp.h. Remove some unnecessary
> declarations.
> ---
> NEWS | 8 ++++++++
> misc/regexp.c | 8 ++++----
> misc/regexp.h | 31 +++++++++++++++++--------------
> 3 files changed, 29 insertions(+), 18 deletions(-)
Looks good. I'll check this in tomorrow.
c.
@@ -78,6 +78,14 @@ Version 2.22
* Port to Native Client running on ARMv7-A (--host=arm-nacl).
Contributed by Roland McGrath (Google).
+
+* The header <regexp.h> is deprecated, and will be removed in a future
+ release. Use of this header will trigger a deprecation warning.
+ Application developers should update their code to use <regex.h> instead.
+
+ This header was formerly part of SUSv2, but was deprecated in 1997 and
+ removed from the standard in 2001. Also, the glibc implementation
+ leaks memory. See BZ#18681 for more details.
Version 2.21
@@ -17,8 +17,10 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#define __DO_NOT_DEFINE_COMPILE
-#include <regexp.h>
+/* We don't include regexp.h here because of the macros it requires, and
+ because it now contains an unconditional #warning. */
+
+#include <regex.h>
/* Define the variables used for the interface. */
char *loc1;
@@ -32,7 +34,6 @@ char *locs;
found in the buffer starting at EXPBUF. `loc1' will return the
first character matched and `loc2' points to the next unmatched
character. */
-extern int __step (const char *string, const char *expbuf);
int
__step (const char *string, const char *expbuf)
{
@@ -55,7 +56,6 @@ weak_alias (__step, step)
/* Match the beginning of STRING with the compiled regular expression
in EXPBUF. If the match is successful `loc2' will contain the
position of the first unmatched character. */
-extern int __advance (const char *string, const char *expbuf);
int
__advance (const char *string, const char *expbuf)
{
@@ -19,14 +19,17 @@
#ifndef _REGEXP_H
#define _REGEXP_H 1
-/* The contents of this header file was first standardized in X/Open
- System Interface and Headers Issue 2, originally coming from SysV.
- In issue 4, version 2, it is marked as TO BE WITDRAWN, and it has
- been withdrawn in SUSv3.
+/* The contents of this header file were standardized in the
+ Single Unix Specification, Version 2 (1997) but marked as
+ LEGACY; new applications were already being encouraged to
+ use <regex.h> instead. POSIX.1-2001 removed this header.
- This code shouldn't be used in any newly written code. It is
- included only for compatibility reasons. Use the POSIX definition
- in <regex.h> for portable applications and a reasonable interface. */
+ This header is provided only for backward compatibility.
+ It will be removed in the next release of the GNU C Library.
+ New code should use <regex.h> instead. */
+
+#warning "<regexp.h> will be removed in the next release of the GNU C
Library."
+#warning "Please update your code to use <regex.h> instead (no trailing
'p')."