Wolfgang Denk writes:
He, there is a bug in HUSH's handling of "if" / "elif" commands: $ if true > then > echo 1 > elif > true > then > echo 2 > elif > true > then > echo 3 > else > echo 4 > fi 1 2 3 $ The same bug exists in all versions of HUSH from BB v0.60.x up to and including v1.00-pre9. The attached patch fixes this: $ if true > then > echo 1 > elif > true > then > echo 2 > elif > true > then > echo 3 > else > echo 4 > fi 1 $ Best regards, Wolfgang Denk
This commit is contained in:
@ -1557,7 +1557,7 @@ static int run_list_real(struct pipe *pi)
|
|||||||
if (rmode == RES_THEN || rmode == RES_ELSE) if_code = next_if_code;
|
if (rmode == RES_THEN || rmode == RES_ELSE) if_code = next_if_code;
|
||||||
if (rmode == RES_THEN && if_code) continue;
|
if (rmode == RES_THEN && if_code) continue;
|
||||||
if (rmode == RES_ELSE && !if_code) continue;
|
if (rmode == RES_ELSE && !if_code) continue;
|
||||||
if (rmode == RES_ELIF && !if_code) continue;
|
if (rmode == RES_ELIF && !if_code) break;
|
||||||
if (rmode == RES_FOR && pi->num_progs) {
|
if (rmode == RES_FOR && pi->num_progs) {
|
||||||
if (!list) {
|
if (!list) {
|
||||||
/* if no variable values after "in" we skip "for" */
|
/* if no variable values after "in" we skip "for" */
|
||||||
|
Reference in New Issue
Block a user