test: fix "test !" and "test abc -a !". closes bug 465

function                                             old     new   delta
nexpr                                                826     840     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2009-07-17 00:59:26 +02:00
parent fff73641e4
commit d23f64eba7
2 changed files with 20 additions and 3 deletions

View File

@@ -627,7 +627,14 @@ static number_t nexpr(enum token n)
nest_msg(">nexpr(%s)\n", TOKSTR[n]);
if (n == UNOT) {
res = !nexpr(check_operator(*++args));
n = check_operator(*++args);
if (n == EOI) {
/* special case: [ ! ], [ a -a ! ] are valid */
/* IOW, "! ARG" may miss ARG */
unnest_msg("<nexpr:1 (!EOI)\n");
return 1;
}
res = !nexpr(n);
unnest_msg("<nexpr:%lld\n", res);
return res;
}
@@ -798,7 +805,7 @@ int test_main(int argc, char **argv)
check_operator(argv[1]);
if (last_operator->op_type == BINOP) {
/* "test [!] arg1 <binary_op> arg2" */
args = &argv[0];
args = argv;
res = (binop() == 0);
goto ret;
}
@@ -811,7 +818,7 @@ int test_main(int argc, char **argv)
argv--;
}
#endif
args = &argv[0];
args = argv;
res = !oexpr(check_operator(*args));
if (*args != NULL && *++args != NULL) {