diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-14 23:32:51 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-14 23:32:51 +0100 |
| commit | 0154d78738da5f56c09665e804d94fdcd31cb081 (patch) | |
| tree | 0005c7a14979e8904564be69338eb3b6abcbe4dd /miscutils | |
| parent | 7b1df3db975c97799a23cf0699d8f0fd1d046f22 (diff) | |
| download | busybox-w32-0154d78738da5f56c09665e804d94fdcd31cb081.tar.gz busybox-w32-0154d78738da5f56c09665e804d94fdcd31cb081.tar.bz2 busybox-w32-0154d78738da5f56c09665e804d94fdcd31cb081.zip | |
bc: shorten one message, make defines more readable
text data bss dec hex filename
979916 485 7296 987697 f1231 busybox_old
979893 485 7296 987674 f121a busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/bc.c | 89 |
1 files changed, 38 insertions, 51 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index e1a4b8f52..9a501a25e 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
| @@ -566,48 +566,37 @@ typedef struct BcLex { | |||
| 566 | 566 | ||
| 567 | } BcLex; | 567 | } BcLex; |
| 568 | 568 | ||
| 569 | #define BC_PARSE_STREND ((char) UCHAR_MAX) | 569 | #define BC_PARSE_STREND ((char) UCHAR_MAX) |
| 570 | 570 | ||
| 571 | #define BC_PARSE_REL (1 << 0) | 571 | #define BC_PARSE_REL (1 << 0) |
| 572 | #define BC_PARSE_PRINT (1 << 1) | 572 | #define BC_PARSE_PRINT (1 << 1) |
| 573 | #define BC_PARSE_NOCALL (1 << 2) | 573 | #define BC_PARSE_NOCALL (1 << 2) |
| 574 | #define BC_PARSE_NOREAD (1 << 3) | 574 | #define BC_PARSE_NOREAD (1 << 3) |
| 575 | #define BC_PARSE_ARRAY (1 << 4) | 575 | #define BC_PARSE_ARRAY (1 << 4) |
| 576 | 576 | ||
| 577 | #define BC_PARSE_TOP_FLAG_PTR(parse) ((uint8_t *) bc_vec_top(&(parse)->flags)) | 577 | #define BC_PARSE_TOP_FLAG_PTR(parse) ((uint8_t *) bc_vec_top(&(parse)->flags)) |
| 578 | #define BC_PARSE_TOP_FLAG(parse) (*(BC_PARSE_TOP_FLAG_PTR(parse))) | 578 | #define BC_PARSE_TOP_FLAG(parse) (*(BC_PARSE_TOP_FLAG_PTR(parse))) |
| 579 | 579 | ||
| 580 | #define BC_PARSE_FLAG_FUNC_INNER (1 << 0) | 580 | #define BC_PARSE_FLAG_FUNC_INNER (1 << 0) |
| 581 | #define BC_PARSE_FUNC_INNER(parse) \ | 581 | #define BC_PARSE_FLAG_FUNC (1 << 1) |
| 582 | (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_FUNC_INNER) | 582 | #define BC_PARSE_FLAG_BODY (1 << 2) |
| 583 | 583 | #define BC_PARSE_FLAG_LOOP (1 << 3) | |
| 584 | #define BC_PARSE_FLAG_FUNC (1 << 1) | 584 | #define BC_PARSE_FLAG_LOOP_INNER (1 << 4) |
| 585 | #define BC_PARSE_FUNC(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_FUNC) | 585 | #define BC_PARSE_FLAG_IF (1 << 5) |
| 586 | 586 | #define BC_PARSE_FLAG_ELSE (1 << 6) | |
| 587 | #define BC_PARSE_FLAG_BODY (1 << 2) | 587 | #define BC_PARSE_FLAG_IF_END (1 << 7) |
| 588 | #define BC_PARSE_BODY(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_BODY) | 588 | |
| 589 | 589 | // If we have none of the above bits, we can stop parsing and execute already parsed chunk | |
| 590 | #define BC_PARSE_FLAG_LOOP (1 << 3) | 590 | #define BC_PARSE_CAN_EXEC(parse) (BC_PARSE_TOP_FLAG(parse) == 0) |
| 591 | #define BC_PARSE_LOOP(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_LOOP) | 591 | |
| 592 | 592 | #define BC_PARSE_FUNC_INNER(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_FUNC_INNER) | |
| 593 | #define BC_PARSE_FLAG_LOOP_INNER (1 << 4) | 593 | #define BC_PARSE_FUNC(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_FUNC) |
| 594 | #define BC_PARSE_LOOP_INNER(parse) \ | 594 | #define BC_PARSE_BODY(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_BODY) |
| 595 | (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_LOOP_INNER) | 595 | #define BC_PARSE_LOOP(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_LOOP) |
| 596 | 596 | #define BC_PARSE_LOOP_INNER(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_LOOP_INNER) | |
| 597 | #define BC_PARSE_FLAG_IF (1 << 5) | 597 | #define BC_PARSE_IF(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_IF) |
| 598 | #define BC_PARSE_IF(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_IF) | 598 | #define BC_PARSE_ELSE(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_ELSE) |
| 599 | 599 | #define BC_PARSE_IF_END(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_IF_END) | |
| 600 | #define BC_PARSE_FLAG_ELSE (1 << 6) | ||
| 601 | #define BC_PARSE_ELSE(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_ELSE) | ||
| 602 | |||
| 603 | #define BC_PARSE_FLAG_IF_END (1 << 7) | ||
| 604 | #define BC_PARSE_IF_END(parse) (BC_PARSE_TOP_FLAG(parse) & BC_PARSE_FLAG_IF_END) | ||
| 605 | |||
| 606 | #define BC_PARSE_CAN_EXEC(parse) \ | ||
| 607 | (!(BC_PARSE_TOP_FLAG(parse) & \ | ||
| 608 | (BC_PARSE_FLAG_FUNC_INNER | BC_PARSE_FLAG_FUNC | BC_PARSE_FLAG_BODY | \ | ||
| 609 | BC_PARSE_FLAG_LOOP | BC_PARSE_FLAG_LOOP_INNER | BC_PARSE_FLAG_IF | \ | ||
| 610 | BC_PARSE_FLAG_ELSE | BC_PARSE_FLAG_IF_END))) | ||
| 611 | 600 | ||
| 612 | struct BcParse; | 601 | struct BcParse; |
| 613 | 602 | ||
| @@ -3611,7 +3600,7 @@ static void bc_parse_create(BcParse *p, size_t func) | |||
| 3611 | // We can calculate the conversion between tokens and exprs by subtracting the | 3600 | // We can calculate the conversion between tokens and exprs by subtracting the |
| 3612 | // position of the first operator in the lex enum and adding the position of the | 3601 | // position of the first operator in the lex enum and adding the position of the |
| 3613 | // first in the expr enum. Note: This only works for binary operators. | 3602 | // first in the expr enum. Note: This only works for binary operators. |
| 3614 | #define BC_PARSE_TOKEN_INST(t) ((char) ((t) - BC_LEX_NEG + BC_INST_NEG)) | 3603 | #define BC_TOKEN_2_INST(t) ((char) ((t) - BC_LEX_NEG + BC_INST_NEG)) |
| 3615 | 3604 | ||
| 3616 | static BC_STATUS zbc_parse_else(BcParse *p); | 3605 | static BC_STATUS zbc_parse_else(BcParse *p); |
| 3617 | static BC_STATUS zbc_parse_stmt(BcParse *p); | 3606 | static BC_STATUS zbc_parse_stmt(BcParse *p); |
| @@ -3636,7 +3625,7 @@ static void bc_parse_operator(BcParse *p, BcLexType type, size_t start, | |||
| 3636 | l = bc_parse_op_PREC(t - BC_LEX_OP_INC); | 3625 | l = bc_parse_op_PREC(t - BC_LEX_OP_INC); |
| 3637 | if (l >= r && (l != r || !left)) break; | 3626 | if (l >= r && (l != r || !left)) break; |
| 3638 | 3627 | ||
| 3639 | bc_parse_push(p, BC_PARSE_TOKEN_INST(t)); | 3628 | bc_parse_push(p, BC_TOKEN_2_INST(t)); |
| 3640 | bc_vec_pop(&p->ops); | 3629 | bc_vec_pop(&p->ops); |
| 3641 | *nexprs -= (t != BC_LEX_OP_BOOL_NOT && t != BC_LEX_NEG); | 3630 | *nexprs -= (t != BC_LEX_OP_BOOL_NOT && t != BC_LEX_NEG); |
| 3642 | } | 3631 | } |
| @@ -3653,7 +3642,7 @@ static BC_STATUS zbc_parse_rightParen(BcParse *p, size_t ops_bgn, size_t *nexs) | |||
| 3653 | top = BC_PARSE_TOP_OP(p); | 3642 | top = BC_PARSE_TOP_OP(p); |
| 3654 | 3643 | ||
| 3655 | while (top != BC_LEX_LPAREN) { | 3644 | while (top != BC_LEX_LPAREN) { |
| 3656 | bc_parse_push(p, BC_PARSE_TOKEN_INST(top)); | 3645 | bc_parse_push(p, BC_TOKEN_2_INST(top)); |
| 3657 | 3646 | ||
| 3658 | bc_vec_pop(&p->ops); | 3647 | bc_vec_pop(&p->ops); |
| 3659 | *nexs -= top != BC_LEX_OP_BOOL_NOT && top != BC_LEX_NEG; | 3648 | *nexs -= top != BC_LEX_OP_BOOL_NOT && top != BC_LEX_NEG; |
| @@ -3948,7 +3937,7 @@ static BC_STATUS zbc_parse_minus(BcParse *p, BcInst *prev, size_t ops_bgn, | |||
| 3948 | (etype >= BC_INST_NUM && etype <= BC_INST_SQRT) ? | 3937 | (etype >= BC_INST_NUM && etype <= BC_INST_SQRT) ? |
| 3949 | BC_LEX_OP_MINUS : | 3938 | BC_LEX_OP_MINUS : |
| 3950 | BC_LEX_NEG; | 3939 | BC_LEX_NEG; |
| 3951 | *prev = BC_PARSE_TOKEN_INST(type); | 3940 | *prev = BC_TOKEN_2_INST(type); |
| 3952 | 3941 | ||
| 3953 | // We can just push onto the op stack because this is the largest | 3942 | // We can just push onto the op stack because this is the largest |
| 3954 | // precedence operator that gets pushed. Inc/dec does not. | 3943 | // precedence operator that gets pushed. Inc/dec does not. |
| @@ -4747,10 +4736,9 @@ static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags, BcParseNext ne | |||
| 4747 | prev != BC_INST_OBASE && prev != BC_INST_LAST) | 4736 | prev != BC_INST_OBASE && prev != BC_INST_LAST) |
| 4748 | { | 4737 | { |
| 4749 | s = bc_error("bad assignment:" | 4738 | s = bc_error("bad assignment:" |
| 4750 | " left side must be scale," | 4739 | " left side must be variable" |
| 4751 | " ibase, obase, last, var," | ||
| 4752 | " or array element" | 4740 | " or array element" |
| 4753 | ); | 4741 | ); // note: shared string |
| 4754 | break; | 4742 | break; |
| 4755 | } | 4743 | } |
| 4756 | } | 4744 | } |
| @@ -4777,7 +4765,7 @@ static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags, BcParseNext ne | |||
| 4777 | } | 4765 | } |
| 4778 | 4766 | ||
| 4779 | nrelops += t >= BC_LEX_OP_REL_EQ && t <= BC_LEX_OP_REL_GT; | 4767 | nrelops += t >= BC_LEX_OP_REL_EQ && t <= BC_LEX_OP_REL_GT; |
| 4780 | prev = BC_PARSE_TOKEN_INST(t); | 4768 | prev = BC_TOKEN_2_INST(t); |
| 4781 | bc_parse_operator(p, t, ops_bgn, &nexprs); | 4769 | bc_parse_operator(p, t, ops_bgn, &nexprs); |
| 4782 | s = zbc_lex_next(&p->l); | 4770 | s = zbc_lex_next(&p->l); |
| 4783 | rprn = get_token = false; | 4771 | rprn = get_token = false; |
| @@ -4926,7 +4914,7 @@ static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags, BcParseNext ne | |||
| 4926 | if (top == BC_LEX_LPAREN || top == BC_LEX_RPAREN) | 4914 | if (top == BC_LEX_LPAREN || top == BC_LEX_RPAREN) |
| 4927 | return bc_error_bad_expression(); | 4915 | return bc_error_bad_expression(); |
| 4928 | 4916 | ||
| 4929 | bc_parse_push(p, BC_PARSE_TOKEN_INST(top)); | 4917 | bc_parse_push(p, BC_TOKEN_2_INST(top)); |
| 4930 | 4918 | ||
| 4931 | nexprs -= top != BC_LEX_OP_BOOL_NOT && top != BC_LEX_NEG; | 4919 | nexprs -= top != BC_LEX_OP_BOOL_NOT && top != BC_LEX_NEG; |
| 4932 | bc_vec_pop(&p->ops); | 4920 | bc_vec_pop(&p->ops); |
| @@ -5977,10 +5965,9 @@ static BC_STATUS zbc_program_assign(char inst) | |||
| 5977 | 5965 | ||
| 5978 | if (left->t == BC_RESULT_CONSTANT || left->t == BC_RESULT_TEMP) | 5966 | if (left->t == BC_RESULT_CONSTANT || left->t == BC_RESULT_TEMP) |
| 5979 | RETURN_STATUS(bc_error("bad assignment:" | 5967 | RETURN_STATUS(bc_error("bad assignment:" |
| 5980 | " left side must be scale," | 5968 | " left side must be variable" |
| 5981 | " ibase, obase, last, var," | ||
| 5982 | " or array element" | 5969 | " or array element" |
| 5983 | )); | 5970 | )); // note: shared string |
| 5984 | 5971 | ||
| 5985 | #if ENABLE_BC | 5972 | #if ENABLE_BC |
| 5986 | if (inst == BC_INST_ASSIGN_DIVIDE && !bc_num_cmp(r, &G.prog.zero)) | 5973 | if (inst == BC_INST_ASSIGN_DIVIDE && !bc_num_cmp(r, &G.prog.zero)) |
