From: Denis Vlasenko Date: Fri, 8 Jun 2007 07:33:45 +0000 (-0000) Subject: test: recognize /path/to/[ case too X-Git-Tag: 1_7_0~270 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=89bca271585937793bcd07fe28ac642985ed0b6f;p=oweals%2Fbusybox.git test: recognize /path/to/[ case too --- diff --git a/coreutils/test.c b/coreutils/test.c index a09f7e6ec..f86176168 100644 --- a/coreutils/test.c +++ b/coreutils/test.c @@ -182,21 +182,26 @@ static void initialize_group_array(void); int bb_test(int argc, char **argv) { int res; - - if (LONE_CHAR(argv[0], '[')) { - --argc; - if (NOT_LONE_CHAR(argv[argc], ']')) { - bb_error_msg("missing ]"); - return 2; - } - argv[argc] = NULL; - } else if (strcmp(argv[0], "[[") == 0) { - --argc; - if (strcmp(argv[argc], "]]")) { - bb_error_msg("missing ]]"); - return 2; + char *arg0; + + arg0 = strrchr(argv[0], '/'); + if (!arg0++) arg0 = argv[0]; + if (arg0[0] == '[') { + if (!arg0[1]) { /* "[" ? */ + --argc; + if (NOT_LONE_CHAR(argv[argc], ']')) { + bb_error_msg("missing ]"); + return 2; + } + argv[argc] = NULL; + } else if (LONE_CHAR(arg0, '[') == 0) { /* "[[" ? */ + --argc; + if (strcmp(argv[argc], "]]") != 0) { + bb_error_msg("missing ]]"); + return 2; + } + argv[argc] = NULL; } - argv[argc] = NULL; } res = setjmp(leaving);