svn commit: trunk/busybox/coreutils

vda at busybox.net vda at busybox.net
Fri Jun 8 07:33:45 UTC 2007


Author: vda
Date: 2007-06-08 00:33:45 -0700 (Fri, 08 Jun 2007)
New Revision: 18775

Log:
test: recognize /path/to/[ case too


Modified:
   trunk/busybox/coreutils/test.c


Changeset:
Modified: trunk/busybox/coreutils/test.c
===================================================================
--- trunk/busybox/coreutils/test.c	2007-06-08 07:19:06 UTC (rev 18774)
+++ trunk/busybox/coreutils/test.c	2007-06-08 07:33:45 UTC (rev 18775)
@@ -182,21 +182,26 @@
 int bb_test(int argc, char **argv)
 {
 	int res;
+	char *arg0;
 
-	if (LONE_CHAR(argv[0], '[')) {
-		--argc;
-		if (NOT_LONE_CHAR(argv[argc], ']')) {
-			bb_error_msg("missing ]");
-			return 2;
+	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;
-	} else if (strcmp(argv[0], "[[") == 0) {
-		--argc;
-		if (strcmp(argv[argc], "]]")) {
-			bb_error_msg("missing ]]");
-			return 2;
-		}
-		argv[argc] = NULL;
 	}
 
 	res = setjmp(leaving);




More information about the busybox-cvs mailing list