diff --git a/coreutils/test.c b/coreutils/test.c index 8fa6d166f..cec3c471d 100644 --- a/coreutils/test.c +++ b/coreutils/test.c @@ -51,7 +51,7 @@ unary-operator ::= "-r"|"-w"|"-x"|"-f"|"-d"|"-c"|"-b"|"-p"| "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S"; - binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| + binary-operator ::= "="|"=="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"| "-nt"|"-ot"|"-ef"; operand ::= */ @@ -135,6 +135,7 @@ static const struct t_op { "-L", FILSYM, UNOP}, { "-S", FILSOCK, UNOP}, { "=", STREQ, BINOP}, { + "==", STREQ, BINOP}, { "!=", STRNE, BINOP}, { "<", STRLT, BINOP}, { ">", STRGT, BINOP}, { @@ -191,6 +192,11 @@ extern int test_main(int argc, char **argv) bb_error_msg_and_die("missing ]"); argv[argc] = NULL; } + if (strcmp(bb_applet_name, "[[") == 0) { + if (strcmp(argv[--argc], "]]")) + bb_error_msg_and_die("missing ]]"); + argv[argc] = NULL; + } /* Implement special cases from POSIX.2, section 4.62.4 */ switch (argc) { case 1: diff --git a/include/applets.h b/include/applets.h index 125703216..90a081550 100644 --- a/include/applets.h +++ b/include/applets.h @@ -50,6 +50,7 @@ #ifdef CONFIG_TEST APPLET_NOUSAGE("[", test_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER) + APPLET_NOUSAGE("[[", test_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER) #endif #ifdef CONFIG_ADDGROUP APPLET(addgroup, addgroup_main, _BB_DIR_BIN, _BB_SUID_NEVER)