diff options
author | Christian Persch <chpe@gnome.org> | 2012-06-07 15:23:37 +0200 |
---|---|---|
committer | Christian Persch <chpe@gnome.org> | 2012-07-02 14:17:34 +0200 |
commit | c8c049b177dc40c0242409389ddccfa59ba88953 (patch) | |
tree | 177bf8478774fc026b79dda11cb0ebb18e4d83a4 /glib | |
parent | 7e8b5ea442f235f5e272b0fe7a4768bf897b6aad (diff) | |
download | glib-c8c049b177dc40c0242409389ddccfa59ba88953.tar.gz |
regex: Add NEWLINE_ANYCRLF compile option
The PCRE_NEWLINE_ANYCRLF option is new in PCRE 7.1. With it set, the only
only newline sequences recognised are CR, LF and CRLF.
Diffstat (limited to 'glib')
-rw-r--r-- | glib/gregex.c | 4 | ||||
-rw-r--r-- | glib/gregex.h | 21 | ||||
-rw-r--r-- | glib/tests/regex.c | 2 |
3 files changed, 17 insertions, 10 deletions
diff --git a/glib/gregex.c b/glib/gregex.c index 7da65694b..b51d59b32 100644 --- a/glib/gregex.c +++ b/glib/gregex.c @@ -112,7 +112,8 @@ G_REGEX_DUPNAMES | \ G_REGEX_NEWLINE_CR | \ G_REGEX_NEWLINE_LF | \ - G_REGEX_NEWLINE_CRLF) + G_REGEX_NEWLINE_CRLF | \ + G_REGEX_NEWLINE_ANYCRLF) /* Mask of all the possible values for GRegexMatchFlags. */ #define G_REGEX_MATCH_MASK (G_REGEX_MATCH_ANCHORED | \ @@ -138,6 +139,7 @@ G_STATIC_ASSERT (G_REGEX_DUPNAMES == PCRE_DUPNAMES); G_STATIC_ASSERT (G_REGEX_NEWLINE_CR == PCRE_NEWLINE_CR); G_STATIC_ASSERT (G_REGEX_NEWLINE_LF == PCRE_NEWLINE_LF); G_STATIC_ASSERT (G_REGEX_NEWLINE_CRLF == PCRE_NEWLINE_CRLF); +G_STATIC_ASSERT (G_REGEX_NEWLINE_ANYCRLF == PCRE_NEWLINE_ANYCRLF); G_STATIC_ASSERT (G_REGEX_MATCH_ANCHORED == PCRE_ANCHORED); G_STATIC_ASSERT (G_REGEX_MATCH_NOTBOL == PCRE_NOTBOL); diff --git a/glib/gregex.h b/glib/gregex.h index 4964c662e..6e510c33f 100644 --- a/glib/gregex.h +++ b/glib/gregex.h @@ -259,12 +259,18 @@ GQuark g_regex_error_quark (void); * be unique. This can be helpful for certain types of pattern when it * is known that only one instance of the named subpattern can ever be * matched. - * @G_REGEX_NEWLINE_CR: Usually any newline character is recognized, if this - * option is set, the only recognized newline character is '\r'. - * @G_REGEX_NEWLINE_LF: Usually any newline character is recognized, if this - * option is set, the only recognized newline character is '\n'. - * @G_REGEX_NEWLINE_CRLF: Usually any newline character is recognized, if this - * option is set, the only recognized newline character sequence is '\r\n'. + * @G_REGEX_NEWLINE_CR: Usually any newline character or character sequence is + * recognized. If this option is set, the only recognized newline character + * is '\r'. + * @G_REGEX_NEWLINE_LF: Usually any newline character or character sequence is + * recognized. If this option is set, the only recognized newline character + * is '\n'. + * @G_REGEX_NEWLINE_CRLF: Usually any newline character or character sequence is + * recognized. If this option is set, the only recognized newline character + * sequence is '\r\n'. + * @G_REGEX_NEWLINE_ANYCRLF: Usually any newline character or character sequence + * is recognized. If this option is set, the only recognized newline character + * sequences are '\r', '\n', and '\r\n'. Since: 2.34 * * Flags specifying compile-time options. * @@ -287,7 +293,8 @@ typedef enum G_REGEX_DUPNAMES = 1 << 19, G_REGEX_NEWLINE_CR = 1 << 20, G_REGEX_NEWLINE_LF = 1 << 21, - G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF + G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF, + G_REGEX_NEWLINE_ANYCRLF = G_REGEX_NEWLINE_CR | 1 << 22 } GRegexCompileFlags; /** diff --git a/glib/tests/regex.c b/glib/tests/regex.c index 6deb50f40..7d1933334 100644 --- a/glib/tests/regex.c +++ b/glib/tests/regex.c @@ -2102,9 +2102,7 @@ main (int argc, char *argv[]) #endif TEST_NEW_FAIL ("\\666", G_REGEX_RAW, G_REGEX_ERROR_INVALID_OCTAL_VALUE); TEST_NEW_FAIL ("^(?(DEFINE) abc | xyz ) ", 0, G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE); -#if 0 TEST_NEW_FAIL ("a", G_REGEX_NEWLINE_CRLF | G_REGEX_NEWLINE_ANYCRLF, G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS); -#endif TEST_NEW_FAIL ("^(a)\\g{3", 0, G_REGEX_ERROR_MISSING_BACK_REFERENCE); TEST_NEW_FAIL ("^(a)\\g{0}", 0, G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE); TEST_NEW_FAIL ("abc(*FAIL:123)xyz", 0, G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN); |