From be9924394547da16396952dfd8bbfa7da96e644d Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Fri, 15 Jun 2007 10:36:49 +0000 Subject: [PATCH] - fix test -f ./exists Note that test -f ./exists -a "-u" = "-u" doesn't work and did not work even before r18282, so this is a breakage not caused by me.. --- coreutils/test.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/coreutils/test.c b/coreutils/test.c index bbbfce58e..3796e2cd2 100644 --- a/coreutils/test.c +++ b/coreutils/test.c @@ -183,6 +183,7 @@ int bb_test(int argc, char **argv) { int res; char *arg0; + bool _off; arg0 = strrchr(argv[0], '/'); if (!arg0++) arg0 = argv[0]; @@ -224,15 +225,19 @@ int bb_test(int argc, char **argv) if (argc == 2) return *argv[1] == '\0'; //assert(argc); + /* remember if we saw argc==4 which wants *no* '!' test */ + _off = argc - 4; + if (_off ? + (LONE_CHAR(argv[1], '!')) + : (argv[1][0] != '!' || argv[1][1] != '\0')) { - bool _off; if (argc == 3) return *argv[2] != '\0'; - _off = argc - 4; + t_lex(argv[2 + _off]); if (t_wp_op && t_wp_op->op_type == BINOP) { t_wp = &argv[1 + _off]; - return binop() == (LONE_CHAR(argv[1], '!')); + return binop() == _off; } } t_wp = &argv[1]; -- 2.25.1