From dbe86e463874f0bac3f3de4c4e294dbf3e9f43d0 Mon Sep 17 00:00:00 2001 From: PulkoMandy Date: Sun, 24 Dec 2023 14:13:44 +0100 Subject: [PATCH] regex.h: use _DEFAULT_SOURCE This file was imported from glibx and uses __USE_GNU as defined by glibc(s features.h. Our implementation of features.h is simpler, just defining _DEFAULT_SOURCE directly and that's what we use in other headers. As a result, using GNU extensions to regex.h required defining __USE_GNU directly in applications (for example in TraX). Fixes #11818 Change-Id: I11e4cf2e88c330cf58083852c4b33aedb8a3a9ea Reviewed-on: https://review.haiku-os.org/c/haiku/+/7238 Reviewed-by: waddlesplash Tested-by: Commit checker robot --- headers/posix/limits.h | 2 +- headers/posix/regex.h | 25 ++++++++----------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/headers/posix/limits.h b/headers/posix/limits.h index 9c77906059..871c466d7d 100644 --- a/headers/posix/limits.h +++ b/headers/posix/limits.h @@ -92,7 +92,7 @@ #define MQ_OPEN_MAX (0) /* MSG */ #define MQ_PRIO_MAX (0) /* MSG */ -#define RE_DUP_MAX (255) /* for conformance, redefined in regex.h */ +#define RE_DUP_MAX (0x7fff) #ifdef _XOPEN_SOURCE /* The XSI name for PAGESIZE, with extra underscore included. Only define if diff --git a/headers/posix/regex.h b/headers/posix/regex.h index 78a6c412a5..cd6a5d82bb 100644 --- a/headers/posix/regex.h +++ b/headers/posix/regex.h @@ -22,6 +22,7 @@ #ifndef _REGEX_H #define _REGEX_H 1 +#include #include /* Allow the use in C++ code. */ @@ -43,7 +44,7 @@ typedef __haiku_addr_t active_reg_t; add or remove a bit, only one other definition need change. */ typedef __haiku_uint32 reg_syntax_t; -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE /* If this bit is not set, then \ inside a bracket expression is literal. If set, then such a \ quotes the following character. */ # define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1) @@ -182,7 +183,7 @@ typedef __haiku_uint32 reg_syntax_t; already-compiled regexps. */ extern reg_syntax_t re_syntax_options; -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE /* Define combinations of the above bits for the standard possibilities. (The [[[ comments delimit what gets put into the Texinfo file, so don't delete them!) */ @@ -253,18 +254,8 @@ extern reg_syntax_t re_syntax_options; | RE_NO_BK_PARENS | RE_NO_BK_REFS \ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD) /* [[[end syntaxes]]] */ - -/* Maximum number of duplicates an interval can allow. Some systems - (erroneously) define this in other header files, but we want our - value, so remove any previous define. */ -# ifdef RE_DUP_MAX -# undef RE_DUP_MAX -# endif -/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */ -# define RE_DUP_MAX (0x7fff) #endif - /* POSIX `cflags' bits (i.e., information for `regcomp'). */ /* If this bit is set, then use extended regular expression syntax. @@ -342,12 +333,12 @@ typedef enum #ifndef RE_TRANSLATE_TYPE # define __RE_TRANSLATE_TYPE unsigned char * -# ifdef __USE_GNU +# ifdef _DEFAULT_SOURCE # define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE # endif #endif -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE # define __REPB_PREFIX(name) name #else # define __REPB_PREFIX(name) __##name @@ -393,7 +384,7 @@ struct re_pattern_buffer for `max (RE_NREGS, re_nsub + 1)' groups. If REGS_REALLOCATE, reallocate space if necessary. If REGS_FIXED, use what's there. */ -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE # define REGS_UNALLOCATED 0 # define REGS_REALLOCATE 1 # define REGS_FIXED 2 @@ -425,7 +416,7 @@ typedef struct re_pattern_buffer regex_t; typedef int regoff_t; -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE /* This is the structure we store register match data in. See regex.texinfo for a full description of what registers match. */ struct re_registers @@ -456,7 +447,7 @@ typedef struct /* Declarations for routines. */ -#ifdef __USE_GNU +#ifdef _DEFAULT_SOURCE /* Sets the current default syntax to SYNTAX, and return the old syntax. You can also simply assign to the `re_syntax_options' variable. */ extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);