diff options
author | Yann Ylavic <ylavic@apache.org> | 2017-10-02 23:57:26 +0200 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2017-10-02 23:57:26 +0200 |
commit | 08ddf7ad0a257c1b27b5fdb8e32fcd40b4dbdad1 (patch) | |
tree | e851b15724aa86321e5aaae317ec8fa6bacd127a /server/util_pcre.c | |
parent | xforms (diff) | |
download | apache2-08ddf7ad0a257c1b27b5fdb8e32fcd40b4dbdad1.tar.xz apache2-08ddf7ad0a257c1b27b5fdb8e32fcd40b4dbdad1.zip |
ap_expr: open string expressions to the <word>.
Introduces the syntax "%{:<word>:}", borrowed from the <var>'s one, and which
likewise can be embedded anywhere in a string expression (the same reserved
character ':' gets reused in an unambiguous manner).
This allows the two types of expressions (boolean and string) to now share
fully the same language set, namely: strings, lists, vars, regexes, backrefs,
functions with multiple or complex arguments, and especially combinations
thereof.
Most of them were reserved to boolean expressions only, while complex string
constructions can also benefit to, well, strings. The <word> construct allows
that (say the syntax "%{:<word>:}" looks like a temporary variable constructed
in a string).
Since string expressions may now have to deal with lists (arrays), they also
need a way to produce/extract strings from list and vice versa. This can be
done with the new "join" and "split" operators, while the new substitution
regexes (like "s/<pattern>/<substitute>/<flags>") may be used to manipulate
strings in place. All this of course available for both string and boolean
expressions.
Tests and doc updates upcoming..
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1810605 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server/util_pcre.c')
-rw-r--r-- | server/util_pcre.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/server/util_pcre.c b/server/util_pcre.c index 40dbf0787f..73e7fc6b1f 100644 --- a/server/util_pcre.c +++ b/server/util_pcre.c @@ -246,6 +246,10 @@ AP_DECLARE(int) ap_regexec_len(const ap_regex_t *preg, const char *buff, options |= PCREn(NOTBOL); if ((eflags & AP_REG_NOTEOL) != 0) options |= PCREn(NOTEOL); + if ((eflags & AP_REG_NOTEMPTY) != 0) + options |= PCREn(NOTEMPTY); + if ((eflags & AP_REG_ANCHORED) != 0) + options |= PCREn(ANCHORED); #ifdef HAVE_PCRE2 /* TODO: create a generic TLS matchdata buffer of some nmatch limit, |