From d23f64eba79a702c36d8d8cec23b49c320897138 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 17 Jul 2009 00:59:26 +0200 Subject: test: fix "test !" and "test abc -a !". closes bug 465 function old new delta nexpr 826 840 +14 Signed-off-by: Denys Vlasenko --- coreutils/test.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'coreutils/test.c') diff --git a/coreutils/test.c b/coreutils/test.c index 73048d311..c430f2210 100644 --- a/coreutils/test.c +++ b/coreutils/test.c @@ -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("op_type == BINOP) { /* "test [!] arg1 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) { -- cgit v1.2.3