From e32303b41512e3386b83893b8331fb2d4f83be95 Mon Sep 17 00:00:00 2001 From: Dmitry Mikhirev Date: Fri, 6 Mar 2015 21:55:42 +0300 Subject: added php-like `S' option --- pcre.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'pcre.c') diff --git a/pcre.c b/pcre.c index ccb5528..c6deef1 100644 --- a/pcre.c +++ b/pcre.c @@ -314,6 +314,7 @@ static char *match(const char *name, int argc, char **argv) char *pat = NULL; /* expanded pattern */ char *p; /* iteration pointer */ int global = 0; /* global search? */ + int study = 0; /* study pattern? */ int co = 0; /* pattern compilation options */ pcre *re = NULL; /* compiled regexp */ const char *err; /* compilation error */ @@ -335,6 +336,9 @@ static char *match(const char *name, int argc, char **argv) case 'g': /* global search */ global = 1; break; + case 'S': /* study pattern */ + study = 1; + break; default: /* not match-specific option */ co |= parse_comp_opt(*p, name); break; @@ -353,7 +357,7 @@ static char *match(const char *name, int argc, char **argv) goto end_match; } - if (global) { /* study compiled pattern */ + if (study) { /* study compiled pattern */ sd = pcre_study(re, 0, &err); if (err) { mk_warning("%s: %s", name, err); @@ -436,6 +440,7 @@ static char *subst(const char *name, int argc, char **argv) char *pat = NULL; /* expanded pattern */ char *p; /* iteration pointer */ int global = 0; /* global search? */ + int study = 0; /* study pattern? */ int co = 0; /* pattern compilation options */ pcre *re = NULL; /* compiled regexp */ const char *err; /* compilation error */ @@ -462,6 +467,9 @@ static char *subst(const char *name, int argc, char **argv) case 'g': /* global search */ global = 1; break; + case 'S': /* study pattern */ + study = 1; + break; default: /* not subst-specific option */ co |= parse_comp_opt(*p, name); break; @@ -480,7 +488,7 @@ static char *subst(const char *name, int argc, char **argv) goto end_subst; } - if (global) { /* study compiled pattern */ + if (study) { /* study compiled pattern */ sd = pcre_study(re, 0, &err); if (err) { mk_warning("%s: %s", name, err); -- cgit v1.2.1