commit - 4f801be05521d52e3e5a43b3ed4b4a1206ed871e
commit + 29fae81fb76c854f41b493ab6c8a67e2ae834a58
blob - 2cb4afe9a569d13281b34918bb9e9a4a08078079
blob + e1687d43217b74e66a7cc8a3dc0c868ffb8956a7
--- src/cmd/plumb/rules.c
+++ src/cmd/plumb/rules.c
}
static char*
+scanvarname(char *s)
+{
+ if(isalpha((uchar)*s) || *s=='_')
+ do
+ s++;
+ while(isalnum((uchar)*s) || *s=='_');
+ return s;
+}
+
+static char*
nonnil(char *s)
{
if(s == nil)
{
int n;
static char *abuf;
- char *t;
*namelen = 1;
if(e!=nil && '0'<=s[0] && s[0]<='9')
return nonnil(e->match[s[0]-'0']);
- for(t=s; isalnum((uchar)*t); t++)
- ;
- n = t-s;
+ n = scanvarname(s)-s;
*namelen = n;
+ if(n == 0)
+ return nil;
if(e != nil){
if(n == 3){
char *var, *qval;
int n;
- if(!isalpha((uchar)p[0]))
- return 0;
- for(var=p; isalnum((uchar)*p); p++)
- ;
+ var = p;
+ p = scanvarname(p);
n = p-var;
+ if(n == 0)
+ return 0;
while(*p==' ' || *p=='\t')
- p++;
+ p++;
if(*p++ != '=')
return 0;
while(*p==' ' || *p=='\t')
- p++;
+ p++;
qval = expand(nil, p, nil);
setvariable(var, n, p, qval);
return 1;