- add post 1.6.0 fix
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Mon, 25 Jun 2007 11:07:11 +0000 (11:07 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Mon, 25 Jun 2007 11:07:11 +0000 (11:07 -0000)
package/busybox/busybox-1.6.0-test.patch [new file with mode: 0644]

diff --git a/package/busybox/busybox-1.6.0-test.patch b/package/busybox/busybox-1.6.0-test.patch
new file mode 100644 (file)
index 0000000..a4503a2
--- /dev/null
@@ -0,0 +1,70 @@
+--- busybox-1.6.0/coreutils/test.c     2007-06-01 13:48:34.000000000 +0200
++++ /tmp/busybox_1_6_stable/coreutils/test.c   2007-06-25 12:29:55.000000000 +0200
+@@ -182,19 +182,23 @@
+ int bb_test(int argc, char **argv)
+ {
+       int res;
++      char *arg0;
++      bool _off;
+-      if (LONE_CHAR(argv[0], '[')) {
++      arg0 = strrchr(argv[0], '/');
++      if (!arg0++) arg0 = argv[0];
++      if (arg0[0] == '[') {
+               --argc;
+-              if (NOT_LONE_CHAR(argv[argc], ']')) {
+-                      bb_error_msg("missing ]");
+-                      return 2;
+-              }
+-              argv[argc] = NULL;
+-      } else if (strcmp(argv[0], "[[") == 0) {
+-              --argc;
+-              if (strcmp(argv[argc], "]]")) {
+-                      bb_error_msg("missing ]]");
+-                      return 2;
++              if (!arg0[1]) { /* "[" ? */
++                      if (NOT_LONE_CHAR(argv[argc], ']')) {
++                              bb_error_msg("missing ]");
++                              return 2;
++                      }
++              } else { /* assuming "[[" */
++                      if (strcmp(argv[argc], "]]") != 0) {
++                              bb_error_msg("missing ]]");
++                              return 2;
++                      }
+               }
+               argv[argc] = NULL;
+       }
+@@ -219,15 +223,19 @@
+       if (argc == 2)
+               return *argv[1] == '\0';
+ //assert(argc);
+-      if (LONE_CHAR(argv[1], '!')) {
+-              bool _off;
++      /* remember if we saw argc==4 which wants *no* '!' test */
++      _off = argc - 4;
++      if (_off ?
++              (LONE_CHAR(argv[1], '!'))
++              : (argv[1][0] != '!' || argv[1][1] != '\0'))
++      {
+               if (argc == 3)
+                       return *argv[2] != '\0';
+-              _off = argc - 4;
++
+               t_lex(argv[2 + _off]);
+               if (t_wp_op && t_wp_op->op_type == BINOP) {
+                       t_wp = &argv[1 + _off];
+-                      return binop() == 0;
++                      return binop() == _off;
+               }
+       }
+       t_wp = &argv[1];
+@@ -378,7 +386,7 @@
+ static int filstat(char *nm, enum token mode)
+ {
+       struct stat s;
+-      int i;
++      int i = i; /* gcc 3.x thinks it can be used uninitialized */
+       if (mode == FILSYM) {
+ #ifdef S_IFLNK