aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-06-08 07:33:45 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-06-08 07:33:45 +0000
commit89bca271585937793bcd07fe28ac642985ed0b6f (patch)
tree3e6a3a139a00cd6d9d56d4d8e2b093ba831f154e
parent8936a198804850b5195249ea7732ef62fcb1d6e0 (diff)
downloadbusybox-w32-89bca271585937793bcd07fe28ac642985ed0b6f.tar.gz
busybox-w32-89bca271585937793bcd07fe28ac642985ed0b6f.tar.bz2
busybox-w32-89bca271585937793bcd07fe28ac642985ed0b6f.zip
test: recognize /path/to/[ case too
-rw-r--r--coreutils/test.c33
1 files changed, 19 insertions, 14 deletions
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);
182int bb_test(int argc, char **argv) 182int bb_test(int argc, char **argv)
183{ 183{
184 int res; 184 int res;
185 185 char *arg0;
186 if (LONE_CHAR(argv[0], '[')) { 186
187 --argc; 187 arg0 = strrchr(argv[0], '/');
188 if (NOT_LONE_CHAR(argv[argc], ']')) { 188 if (!arg0++) arg0 = argv[0];
189 bb_error_msg("missing ]"); 189 if (arg0[0] == '[') {
190 return 2; 190 if (!arg0[1]) { /* "[" ? */
191 } 191 --argc;
192 argv[argc] = NULL; 192 if (NOT_LONE_CHAR(argv[argc], ']')) {
193 } else if (strcmp(argv[0], "[[") == 0) { 193 bb_error_msg("missing ]");
194 --argc; 194 return 2;
195 if (strcmp(argv[argc], "]]")) { 195 }
196 bb_error_msg("missing ]]"); 196 argv[argc] = NULL;
197 return 2; 197 } else if (LONE_CHAR(arg0, '[') == 0) { /* "[[" ? */
198 --argc;
199 if (strcmp(argv[argc], "]]") != 0) {
200 bb_error_msg("missing ]]");
201 return 2;
202 }
203 argv[argc] = NULL;
198 } 204 }
199 argv[argc] = NULL;
200 } 205 }
201 206
202 res = setjmp(leaving); 207 res = setjmp(leaving);