From 6c0efecd1303f22f86194d6eee7038651582f086 Mon Sep 17 00:00:00 2001 From: Igor Burago Date: Wed, 27 Jul 2022 17:27:06 +0800 Subject: [PATCH] plumber: allow multi-digit subexpression match variable substitutions --- src/cmd/plumb/rules.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/cmd/plumb/rules.c b/src/cmd/plumb/rules.c index e1687d43..4bd02e44 100644 --- a/src/cmd/plumb/rules.c +++ b/src/cmd/plumb/rules.c @@ -254,15 +254,36 @@ filename(Exec *e, char *name) return cleanname(buf); } +static char* +subexpmatch(Exec *e, char *s, int *numlen) +{ + int n, d, ok; + char *t; + + n = 0; + ok = 1; + for(t = s; '0'<=*t && *t<='9'; t++) + if(ok){ + d = *t-'0'; + if(dmatch[n]; +} + char* dollar(Exec *e, char *s, int *namelen) { int n; static char *abuf; - *namelen = 1; if(e!=nil && '0'<=s[0] && s[0]<='9') - return nonnil(e->match[s[0]-'0']); + return nonnil(subexpmatch(e, s, namelen)); n = scanvarname(s)-s; *namelen = n;