rpm2cpio: handle bz2 too; code shrink
[oweals/busybox.git] / coreutils / test.c
index 73048d311de8d23297b1b9aa569c14c29629af8f..c430f221015004417cce4878077431b845ae28a2 100644 (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) {