commit fb99b4872ee3252bea88cf1f187c6cbedeba085b Author: dexen deVries Date: Fri Oct 5 16:45:19 2012 +0200 usability: provide multiline matching in plumber diff --git a/src/cmd/plumb/match.c b/src/cmd/plumb/match.c index 5a4cd88..0dcc664 100644 --- a/src/cmd/plumb/match.c +++ b/src/cmd/plumb/match.c @@ -283,6 +283,7 @@ matchpat(Plumbmsg *m, Exec *e, Rule *r) case VIsfile: return verbisfile(r->obj, m, r, e, ~DMDIR, DMDIR, &e->file); case VMatches: + case VMatchesMultiline: return verbmatches(r->obj, m, r, e); case VSet: verbset(r->obj, m, r, e); diff --git a/src/cmd/plumb/plumber.h b/src/cmd/plumb/plumber.h index c8f3081..cd00680 100644 --- a/src/cmd/plumb/plumber.h +++ b/src/cmd/plumb/plumber.h @@ -29,6 +29,7 @@ enum VIsdir, VIsfile, VMatches, + VMatchesMultiline, VSet, VStart, VTo diff --git a/src/cmd/plumb/rules.c b/src/cmd/plumb/rules.c index 4da4bb2..d815db9 100644 --- a/src/cmd/plumb/rules.c +++ b/src/cmd/plumb/rules.c @@ -64,6 +64,7 @@ char *verbs[] = "isdir", "isfile", "matches", + "matchesmultiline", "set", "start", "to", @@ -363,6 +364,10 @@ parserule(Rule *r) r->regex = regcomp(r->qarg); return; } + if(r->verb == VMatchesMultiline){ + r->regex = regcompnl(r->qarg); + return; + } break; case OPlumb: if(r->verb!=VClient && r->verb!=VStart && r->verb!=VTo)