mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 01:01:06 +00:00
Fix the negation (!) operator so that it binds only to the word that
immediately follows it, which means 'not' has to be reset every time an option word or device name is processed.
This commit is contained in:
parent
968b834074
commit
0fe8749f47
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=274936
|
@ -386,13 +386,9 @@ read_file(char *fname)
|
|||
if (nreqs == 0)
|
||||
errout("%s: syntax error describing %s\n",
|
||||
fname, this);
|
||||
if (not)
|
||||
compile += !match;
|
||||
else
|
||||
compile += match;
|
||||
compile += match;
|
||||
match = 1;
|
||||
nreqs = 0;
|
||||
not = 0;
|
||||
continue;
|
||||
}
|
||||
if (eq(wd, "no-obj")) {
|
||||
|
@ -474,19 +470,23 @@ read_file(char *fname)
|
|||
this, wd);
|
||||
STAILQ_FOREACH(dp, &dtab, d_next)
|
||||
if (eq(dp->d_name, wd)) {
|
||||
dp->d_done |= DEVDONE;
|
||||
if (not)
|
||||
match = 0;
|
||||
else
|
||||
dp->d_done |= DEVDONE;
|
||||
goto nextparam;
|
||||
}
|
||||
SLIST_FOREACH(op, &opt, op_next)
|
||||
if (op->op_value == 0 && opteq(op->op_name, wd))
|
||||
if (op->op_value == 0 && opteq(op->op_name, wd)) {
|
||||
if (not)
|
||||
match = 0;
|
||||
goto nextparam;
|
||||
match = 0;
|
||||
}
|
||||
match &= not;
|
||||
nextparam:;
|
||||
not = 0;
|
||||
}
|
||||
if (not)
|
||||
compile += !match;
|
||||
else
|
||||
compile += match;
|
||||
compile += match;
|
||||
if (compile && tp == NULL) {
|
||||
if (std == 0 && nreqs == 0)
|
||||
errout("%s: what is %s optional on?\n",
|
||||
|
|
Loading…
Reference in a new issue