From 6e077acc66308260b3b5e33e0a8b0250eb846972 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Sun, 16 Mar 2025 00:15:51 +0000 Subject: [PATCH] fix(userspace/coreutils): fix test command to correctly detect the bracket Signed-off-by: EnderIce2 --- Userspace/coreutils/src/test.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Userspace/coreutils/src/test.c b/Userspace/coreutils/src/test.c index 65e8a3f1..aa0fadfa 100644 --- a/Userspace/coreutils/src/test.c +++ b/Userspace/coreutils/src/test.c @@ -95,7 +95,10 @@ static int TestInteger(const char *n1, const char *op, const char *n2) int main(int argc, char *argv[]) { - int isBracketForm = strcmp(argv[0], "[") == 0; + char *base = strrchr(argv[0], '/'); + base = base ? base + 1 : argv[0]; + int isBracketForm = (strcmp(base, "[") == 0); + if (isBracketForm) { if (argc < 2 || strcmp(argv[argc - 1], "]") != 0) @@ -108,21 +111,28 @@ int main(int argc, char *argv[]) if (argc == 1) return 1; + if (argc == 2) return argv[1][0] ? 0 : 1; + if (argc == 3) { if (!strcmp(argv[1], "!")) return argv[2][0] ? 1 : 0; + return TestFile(argv[2], argv[1][1]); } + if (argc == 4) { if (!strcmp(argv[1], "!")) return !main(3, &argv[1]); - if (strchr("=!\"><", argv[2][0])) + + if (strchr("=!<>", argv[2][0])) return TestString(argv[1], argv[2], argv[3]); + return TestInteger(argv[1], argv[2], argv[3]); } + return 2; }