X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_regex.c;fp=form%2Ffty_regex.c;h=62dcab58c35223a40df9d8b090f32522a34e32ab;hp=616b383ad49ef2d5febd99e9f9cffde4424ae8d6;hb=5a107d6f2a641ef5a33c8976fbd6cd26a3196a0d;hpb=0af9283ca273c267ee6036c3b88115d9ba6d55a6 diff --git a/form/fty_regex.c b/form/fty_regex.c index 616b383a..62dcab58 100644 --- a/form/fty_regex.c +++ b/form/fty_regex.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2018-2020,2021 Thomas E. Dickey * * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,12 +35,43 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_regex.c,v 1.32 2020/12/12 01:15:37 tom Exp $") +MODULE_ID("$Id: fty_regex.c,v 1.33 2021/08/14 15:01:52 tom Exp $") #if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */ #if HAVE_PCRE2POSIX_H #include + +/* pcre2 used to provide its "POSIX" entrypoints using the same names as the + * standard ones in the C runtime, but that never worked because the linker + * would use the C runtime. Debian patched the library to fix this symbol + * conflict, but overlooked the header file, and Debian's patch was made + * obsolete when pcre2 was changed early in 2019 to provide different names. + * + * Here is a workaround to make the older version of Debian's package work. + */ +#if !defined(PCRE2regcomp) && defined(HAVE_PCRE2REGCOMP) + +#undef regcomp +#undef regexec +#undef regfree + +#ifdef __cplusplus +extern "C" +{ +#endif + PCRE2POSIX_EXP_DECL int PCRE2regcomp(regex_t *, const char *, int); + PCRE2POSIX_EXP_DECL int PCRE2regexec(const regex_t *, const char *, size_t, + regmatch_t *, int); + PCRE2POSIX_EXP_DECL void PCRE2regfree(regex_t *); +#ifdef __cplusplus +} /* extern "C" */ +#endif +#define regcomp(r,s,n) PCRE2regcomp(r,s,n) +#define regexec(r,s,n,m,x) PCRE2regexec(r,s,n,m,x) +#define regfree(r) PCRE2regfree(r) +#endif +/* end workaround... */ #elif HAVE_PCREPOSIX_H #include #else