1 --- busybox-1.6.0/coreutils/test.c 2007-06-01 13:48:34.000000000 +0200
2 +++ /tmp/busybox_1_6_stable/coreutils/test.c 2007-06-25 12:29:55.000000000 +0200
4 int bb_test(int argc, char **argv)
10 - if (LONE_CHAR(argv[0], '[')) {
11 + arg0 = strrchr(argv[0], '/');
12 + if (!arg0++) arg0 = argv[0];
13 + if (arg0[0] == '[') {
15 - if (NOT_LONE_CHAR(argv[argc], ']')) {
16 - bb_error_msg("missing ]");
20 - } else if (strcmp(argv[0], "[[") == 0) {
22 - if (strcmp(argv[argc], "]]")) {
23 - bb_error_msg("missing ]]");
25 + if (!arg0[1]) { /* "[" ? */
26 + if (NOT_LONE_CHAR(argv[argc], ']')) {
27 + bb_error_msg("missing ]");
30 + } else { /* assuming "[[" */
31 + if (strcmp(argv[argc], "]]") != 0) {
32 + bb_error_msg("missing ]]");
40 return *argv[1] == '\0';
42 - if (LONE_CHAR(argv[1], '!')) {
44 + /* remember if we saw argc==4 which wants *no* '!' test */
47 + (LONE_CHAR(argv[1], '!'))
48 + : (argv[1][0] != '!' || argv[1][1] != '\0'))
51 return *argv[2] != '\0';
54 t_lex(argv[2 + _off]);
55 if (t_wp_op && t_wp_op->op_type == BINOP) {
56 t_wp = &argv[1 + _off];
57 - return binop() == 0;
58 + return binop() == _off;
63 static int filstat(char *nm, enum token mode)
67 + int i = i; /* gcc 3.x thinks it can be used uninitialized */