12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- --- 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
|