aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-01-20 20:53:57 +0200
committerArnold D. Robbins <arnold@skeeve.com>2013-01-20 20:53:57 +0200
commit8f54dd0de27cbb617ef7c3a1f5a3d57502c117aa (patch)
tree99d0b5d85b33d27afef3b790ceec5d27bd6565e7 /re.c
parentee914dac4c736ae28bdacef7e5cc498c9cea38f2 (diff)
parentcb565f17eb9f4ce96c6a78fec2951120fee75a35 (diff)
downloadegawk-8f54dd0de27cbb617ef7c3a1f5a3d57502c117aa.tar.gz
egawk-8f54dd0de27cbb617ef7c3a1f5a3d57502c117aa.tar.bz2
egawk-8f54dd0de27cbb617ef7c3a1f5a3d57502c117aa.zip
Merge branch 'gawk-4.0-stable'
Diffstat (limited to 're.c')
-rw-r--r--re.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/re.c b/re.c
index 8ad255e2..b81cf62d 100644
--- a/re.c
+++ b/re.c
@@ -27,6 +27,7 @@
static reg_syntax_t syn;
static void check_bracket_exp(char *s, size_t len);
+const char *regexflags2str(int flags);
/* make_regexp --- generate compiled regular expressions */
@@ -408,7 +409,7 @@ resetup()
* variable remains for use with --traditional.
*/
if (do_intervals)
- syn |= RE_INTERVALS | RE_INVALID_INTERVAL_ORD;
+ syn |= RE_INTERVALS | RE_INVALID_INTERVAL_ORD | RE_NO_BK_BRACES;
(void) re_set_syntax(syn);
dfasyntax(syn, false, '\n');
@@ -604,3 +605,40 @@ again:
done:
s[length] = save;
}
+
+/* regexflags2str --- make regex flags printable */
+
+const char *
+regexflags2str(int flags)
+{
+ static const struct flagtab regextab[] = {
+ { RE_BACKSLASH_ESCAPE_IN_LISTS, "RE_BACKSLASH_ESCAPE_IN_LISTS" },
+ { RE_BK_PLUS_QM, "RE_BK_PLUS_QM" },
+ { RE_CHAR_CLASSES, "RE_CHAR_CLASSES" },
+ { RE_CONTEXT_INDEP_ANCHORS, "RE_CONTEXT_INDEP_ANCHORS" },
+ { RE_CONTEXT_INDEP_OPS, "RE_CONTEXT_INDEP_OPS" },
+ { RE_CONTEXT_INVALID_OPS, "RE_CONTEXT_INVALID_OPS" },
+ { RE_DOT_NEWLINE, "RE_DOT_NEWLINE" },
+ { RE_DOT_NOT_NULL, "RE_DOT_NOT_NULL" },
+ { RE_HAT_LISTS_NOT_NEWLINE, "RE_HAT_LISTS_NOT_NEWLINE" },
+ { RE_INTERVALS, "RE_INTERVALS" },
+ { RE_LIMITED_OPS, "RE_LIMITED_OPS" },
+ { RE_NEWLINE_ALT, "RE_NEWLINE_ALT" },
+ { RE_NO_BK_BRACES, "RE_NO_BK_BRACES" },
+ { RE_NO_BK_PARENS, "RE_NO_BK_PARENS" },
+ { RE_NO_BK_REFS, "RE_NO_BK_REFS" },
+ { RE_NO_BK_VBAR, "RE_NO_BK_VBAR" },
+ { RE_NO_EMPTY_RANGES, "RE_NO_EMPTY_RANGES" },
+ { RE_UNMATCHED_RIGHT_PAREN_ORD, "RE_UNMATCHED_RIGHT_PAREN_ORD" },
+ { RE_NO_POSIX_BACKTRACKING, "RE_NO_POSIX_BACKTRACKING" },
+ { RE_NO_GNU_OPS, "RE_NO_GNU_OPS" },
+ { RE_DEBUG, "RE_DEBUG" },
+ { RE_INVALID_INTERVAL_ORD, "RE_INVALID_INTERVAL_ORD" },
+ { RE_ICASE, "RE_ICASE" },
+ { RE_CARET_ANCHORS_HERE, "RE_CARET_ANCHORS_HERE" },
+ { RE_CONTEXT_INVALID_DUP, "RE_CONTEXT_INVALID_DUP" },
+ { 0, NULL }
+ };
+
+ return genflags2str(flags, regextab);
+}