busybox-1.6.0-test.patch 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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
  3. @@ -182,19 +182,23 @@
  4. int bb_test(int argc, char **argv)
  5. {
  6. int res;
  7. + char *arg0;
  8. + bool _off;
  9. - if (LONE_CHAR(argv[0], '[')) {
  10. + arg0 = strrchr(argv[0], '/');
  11. + if (!arg0++) arg0 = argv[0];
  12. + if (arg0[0] == '[') {
  13. --argc;
  14. - if (NOT_LONE_CHAR(argv[argc], ']')) {
  15. - bb_error_msg("missing ]");
  16. - return 2;
  17. - }
  18. - argv[argc] = NULL;
  19. - } else if (strcmp(argv[0], "[[") == 0) {
  20. - --argc;
  21. - if (strcmp(argv[argc], "]]")) {
  22. - bb_error_msg("missing ]]");
  23. - return 2;
  24. + if (!arg0[1]) { /* "[" ? */
  25. + if (NOT_LONE_CHAR(argv[argc], ']')) {
  26. + bb_error_msg("missing ]");
  27. + return 2;
  28. + }
  29. + } else { /* assuming "[[" */
  30. + if (strcmp(argv[argc], "]]") != 0) {
  31. + bb_error_msg("missing ]]");
  32. + return 2;
  33. + }
  34. }
  35. argv[argc] = NULL;
  36. }
  37. @@ -219,15 +223,19 @@
  38. if (argc == 2)
  39. return *argv[1] == '\0';
  40. //assert(argc);
  41. - if (LONE_CHAR(argv[1], '!')) {
  42. - bool _off;
  43. + /* remember if we saw argc==4 which wants *no* '!' test */
  44. + _off = argc - 4;
  45. + if (_off ?
  46. + (LONE_CHAR(argv[1], '!'))
  47. + : (argv[1][0] != '!' || argv[1][1] != '\0'))
  48. + {
  49. if (argc == 3)
  50. return *argv[2] != '\0';
  51. - _off = argc - 4;
  52. +
  53. t_lex(argv[2 + _off]);
  54. if (t_wp_op && t_wp_op->op_type == BINOP) {
  55. t_wp = &argv[1 + _off];
  56. - return binop() == 0;
  57. + return binop() == _off;
  58. }
  59. }
  60. t_wp = &argv[1];
  61. @@ -378,7 +386,7 @@
  62. static int filstat(char *nm, enum token mode)
  63. {
  64. struct stat s;
  65. - int i;
  66. + int i = i; /* gcc 3.x thinks it can be used uninitialized */
  67. if (mode == FILSYM) {
  68. #ifdef S_IFLNK