summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.6.0-test.patch
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-06-25 11:07:11 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-06-25 11:07:11 +0000
commit489a777527ceca7c42c10f129d0803b08b471f8d (patch)
treea1ac32d3bf2498a9acf5455cdd1466e6fe74b796 /package/busybox/busybox-1.6.0-test.patch
parentba2e7e02d16f12a9957ba10b06322102ac90427f (diff)
- add post 1.6.0 fix
Diffstat (limited to 'package/busybox/busybox-1.6.0-test.patch')
-rw-r--r--package/busybox/busybox-1.6.0-test.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.6.0-test.patch b/package/busybox/busybox-1.6.0-test.patch
new file mode 100644
index 000000000..a4503a2ea
--- /dev/null
+++ b/package/busybox/busybox-1.6.0-test.patch
@@ -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