Hash :
ce6d624a
Author :
Date :
2019-05-19T10:30:04
regex: optionally use PCRE2 Use PCRE2 and its POSIX compatibility layer if requested by the user. Although PCRE2 is adequate for our needs, the PCRE2 POSIX layer as installed on Debian and Ubuntu systems is broken, so we do not opt-in to it by default to avoid breaking users on those platforms.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
/*
* Copyright (C) the libgit2 contributors. All rights reserved.
*
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
#ifndef INCLUDE_posix_regex_h__
#define INCLUDE_posix_regex_h__
#include "common.h"
/*
* Regular expressions: if we were asked to use PCRE (either our
* bundled version or a system version) then use their regcomp
* compatible implementation.
*/
#ifdef GIT_REGEX_BUILTIN
# include "pcreposix.h"
# define P_REG_EXTENDED PCRE_REG_EXTENDED
# define P_REG_ICASE PCRE_REG_ICASE
# define P_REG_NOMATCH PCRE_REG_NOMATCH
# define p_regex_t pcre_regex_t
# define p_regmatch_t pcre_regmatch_t
# define p_regcomp pcre_regcomp
# define p_regerror pcre_regerror
# define p_regexec pcre_regexec
# define p_regfree pcre_regfree
/*
* Use the system-provided `regex` routines, whether that's via the
* PCRE emulation layer, or libc, preferring `regcomp_l` it's available.
*/
#else
# if defined(GIT_REGEX_PCRE2)
# include <pcre2posix.h>
# elif defined(GIT_REGEX_PCRE)
# include <pcreposix.h>
# else
# include <regex.h>
# endif
# define P_REG_EXTENDED REG_EXTENDED
# define P_REG_ICASE REG_ICASE
# define P_REG_NOMATCH REG_NOMATCH
# define p_regex_t regex_t
# define p_regmatch_t regmatch_t
# define p_regerror regerror
# define p_regexec regexec
# define p_regfree regfree
# ifdef GIT_REGEX_REGCOMP_L
# include <xlocale.h>
GIT_INLINE(int) p_regcomp(p_regex_t *preg, const char *pattern, int cflags)
{
return regcomp_l(preg, pattern, cflags, (locale_t) 0);
}
# else
# define p_regcomp regcomp
# endif /* GIT_REGEX_REGCOMP_L */
#endif
#endif