hush: fix shift + $0 bug; add testcase
No binary (build failed)
—
(log yok)
| @@ -952,7 +952,7 @@ static int builtin_shift(char **argv) | |
| n = atoi(argv[1]); | |
| } | |
| if (n >= 0 && n < global_argc) { | |
| - | /* XXX This probably breaks $0 */ |
| + | global_argv[n] = global_argv[0]; |
| global_argc -= n; | |
| global_argv += n; | |
| return EXIT_SUCCESS; | |
| @@ -0,0 +1,2 @@ | |
| + | ./shift.tests abc d e |
| + | ./shift.tests d e |
| @@ -0,0 +1,6 @@ | |
| + | if test $# = 0; then |
| + | exec "$THIS_SH" $0 abc "d e" |
| + | fi |
| + | echo $0 $1 $2 |
| + | shift |
| + | echo $0 $1 $2 |