From patchwork Sat Jul 25 15:10:47 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zack Weinberg X-Patchwork-Id: 7851 Received: (qmail 115427 invoked by alias); 25 Jul 2015 15:10:59 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 115319 invoked by uid 89); 25 Jul 2015 15:10:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qg0-f48.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type; bh=zPOQ+bG3yFdFr5FO335hyNAbAarekj0OmdkOq8SB/5E=; b=PCug/eZ/lZRKL/KpCB+QKyerxwObj6e07Al6avCr2Ijusr/8QBj9MskQpvvIVUh2Xi Xt7de1RIfFjK9Ayt125TLie0vFXoT/NkKNSeJQj1W3url+nnqwlBfO0nvcnos1vYQPbe e2QsbrVhWcu6P7uNqR4M2pwZKsFMjEReyJaBWgFZIzrkagTbzShAwK1SPpU0ezooAuqL MGOlWQlGExPQt9d8+fiJgNWxDQF93yCKL03N7fxbD3RluXpeolLyrC2sVzTG+zbwFMRP 3JoI1hgI12k1rWTNKuZa8x7i5BdwKTtmZErZPsqIY0NmIvbNq5u2A2ohlV64LTWDm8cd rP6Q== X-Received: by 10.140.31.74 with SMTP id e68mr28044059qge.95.1437837050186; Sat, 25 Jul 2015 08:10:50 -0700 (PDT) Message-ID: <55B3A6F7.2080705@panix.com> Date: Sat, 25 Jul 2015 11:10:47 -0400 From: Zack Weinberg User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0 MIME-Version: 1.0 To: libc-alpha@sourceware.org Subject: Re: [PATCH v3] Deprecate regexp.h References: <55B3A509.8090803@panix.com> In-Reply-To: <55B3A509.8090803@panix.com> Thunderbird appears to have mangled the patch, so I am sending it again as an attachment. Sorry about this. From 3ac1a7f71f2f296df0b99a5305415c9e6844aa56 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Wed, 15 Jul 2015 09:36:20 -0400 Subject: [PATCH 1/2] Deprecate regexp.h (bug 18681) * 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(-) diff --git a/NEWS b/NEWS index 65b2172..a0bd93b 100644 --- a/NEWS +++ b/NEWS @@ -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 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 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 diff --git a/misc/regexp.c b/misc/regexp.c index 3b83203..ee7d572 100644 --- a/misc/regexp.c +++ b/misc/regexp.c @@ -17,8 +17,10 @@ License along with the GNU C Library; if not, see . */ -#define __DO_NOT_DEFINE_COMPILE -#include +/* We don't include regexp.h here because of the macros it requires, and + because it now contains an unconditional #warning. */ + +#include /* 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) { diff --git a/misc/regexp.h b/misc/regexp.h index 3fc0bc5..3460989 100644 --- a/misc/regexp.h +++ b/misc/regexp.h @@ -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 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 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 instead. */ + +#warning " will be removed in the next release of the GNU C Library." +#warning "Please update your code to use instead (no trailing 'p')." #include #include @@ -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); -- 2.4.6