Commit Graph

1192 Commits

Author SHA1 Message Date
Denys Vlasenko
18c6b54f82 bc: use more compact parsing data structures
function                                             old     new   delta
dc_lex_token                                         697     701      +4
bc_parse_next_rel                                     20       -     -20
bc_parse_next_read                                    20       -     -20
bc_parse_next_print                                   20       -     -20
bc_parse_next_param                                   20       -     -20
bc_parse_next_for                                     20       -     -20
bc_parse_next_expr                                    20       -     -20
bc_parse_next_elem                                    20       -     -20
common_parse_expr                                     62      40     -22
bc_parse_expr                                         49      24     -25
dc_lex_regs                                           52      13     -39
bc_parse_name                                        581     539     -42
bc_parse_expr_empty_ok                              2157    2108     -49
dc_parse_insts                                       332      83    -249
dc_lex_tokens                                        364      91    -273
bc_parse_stmt                                       2261    1868    -393
------------------------------------------------------------------------------
(add/remove: 0/7 grow/shrink: 1/8 up/down: 4/-1232)         Total: -1228 bytes
   text	   data	    bss	    dec	    hex	filename
 987037	    485	   7296	 994818	  f2e02	busybox_old
 985814	    485	   7296	 993595	  f293b	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-07 12:57:32 +01:00
Denys Vlasenko
b9c321d6d9 bc: use only G_interrupt as interrupt flag
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-07 12:41:42 +01:00
Denys Vlasenko
c7a7ce06b8 bc: fix exit codes for FEATURE_CLEAN_UP=y
$ echo 0/0 | ./busybox bc; echo $?
bc: divide by zero
1
$ echo halt | ./busybox bc; echo $?
0   <------- was 1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 23:06:57 +01:00
Denys Vlasenko
a133137174 dc: fix testsuite
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 18:46:42 +01:00
Denys Vlasenko
6d0be10aae bc: correctly parse dc options
function                                             old     new   delta
bc_vm_init                                             -     821    +821
bc_vm_file                                             -     226    +226
dc_main                                               41     187    +146
bc_main                                               41      73     +32
packed_usage                                       33076   33059     -17
bc_vm_run                                           1903     701   -1202
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/2 up/down: 1225/-1219)          Total: 6 bytes
   text	   data	    bss	    dec	    hex	filename
 987046	    485	   7296	 994827	  f2e0b	busybox_old
 987037	    485	   7296	 994818	  f2e02	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 18:41:59 +01:00
Denys Vlasenko
4c9455f967 dc: fix "dc does_not_exist" SEGVing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 15:21:39 +01:00
Denys Vlasenko
b23ac51d0c bc: code shrink - convert two macros to functions
function                                             old     new   delta
bc_program_printStream                                 -     185    +185
bc_program_pushArray                                   -     147    +147
bc_program_exec                                     4132    4219     +87
bc_vec_pop                                             -      27     +27
bc_vec_top                                             -      13     +13
bc_num_ulong                                          92     103     +11
bc_vm_run                                           1905    1903      -2
bc_vm_process                                         94      92      -2
bc_program_reset                                      72      70      -2
bc_program_prep                                       93      91      -2
bc_program_call                                      366     364      -2
bc_parse_startBody                                    47      45      -2
bc_parse_parse                                       464     462      -2
bc_parse_else                                        137     135      -2
bc_parse_body                                        118     116      -2
bc_program_num                                      1129    1125      -4
bc_parse_text                                        147     143      -4
bc_program_retire                                     40      35      -5
bc_program_print                                     778     773      -5
bc_program_modexp                                    746     741      -5
bc_program_pushVar                                   215     208      -7
bc_program_copyToVar                                 323     316      -7
bc_parse_operator                                    184     177      -7
bc_parse_noElse                                       65      56      -9
bc_program_binOpRetire                                56      46     -10
bc_parse_stmt                                       2271    2261     -10
bc_program_execStr                                   543     528     -15
bc_program_assignStr                                 161     146     -15
bc_parse_expr_empty_ok                              2178    2157     -21
bc_parse_endBody                                     420     375     -45
bc_program_asciify                                   464       -    -464
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 2/24 up/down: 470/-651)        Total: -181 bytes
   text	   data	    bss	    dec	    hex	filename
 987227	    485	   7296	 995008	  f2ec0	busybox_old
 987046	    485	   7296	 994827	  f2e0b	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 13:10:56 +01:00
Denys Vlasenko
d00d2f9603 bc: make keyword POSIXness check more readable
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:59:40 +01:00
Denys Vlasenko
b6f60863cb bc: move a function to reduce forward declarations
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:54:26 +01:00
Denys Vlasenko
e55a572600 bc: small simplification in dc_lex_token()
Pulling array element into a temporary, taking address of this temporary
and copying it? That's much unnecessary work.

function                                             old     new   delta
dc_lex_token                                         701     697      -4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:47:17 +01:00
Denys Vlasenko
2fa11b6d35 bc: add comment about BC_NUM_DEF_SIZE
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:34:39 +01:00
Denys Vlasenko
1ff8862149 bc: fix for prev commit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:06:16 +01:00
Denys Vlasenko
4c30406df6 bc: do not needlessly use strcat
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 12:01:17 +01:00
Denys Vlasenko
23c2e9fcf9 bc: unbreak "BC only" and "DC only" configs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 11:43:17 +01:00
Denys Vlasenko
9ca9ef2d5b dc: re-enable "tiny dc" implementation
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 11:31:14 +01:00
Denys Vlasenko
a6f84e1a35 bc: reuse common string
text	   data	    bss	    dec	    hex	filename
 987232	    485	   7296	 995013	  f2ec5	busybox_old
 987205	    485	   7296	 994986	  f2eaa	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 11:10:11 +01:00
Denys Vlasenko
95f93bdc28 bc: hook up line editing with history buffer
function                                             old     new   delta
push_input_byte                                        -      65     +65
bc_vm_run                                           1875    1905     +30
bc_read_line                                         303     305      +2
bc_num_binary                                        148     150      +2
bc_num_ulong                                         103      92     -11
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/1 up/down: 99/-11)             Total: 88 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 10:29:12 +01:00
Denys Vlasenko
ed849351d1 bc: add preparatory indent block, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 10:26:13 +01:00
Denys Vlasenko
1a6a482d19 bc: if ^C handling is not selected, there is no interactive mode
function                                             old     new   delta
packed_usage                                       33023   33076     +53
bc_num_s                                             252     246      -6
bc_vm_run                                           1859    1850      -9
bc_error_fmt                                          36      20     -16
bc_posix_error_fmt                                    58      41     -17
bc_read_line                                         202     168     -34
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/5 up/down: 53/-82)            Total: -29 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 09:20:32 +01:00
Denys Vlasenko
54214c38db bc: fix "bc -v" printing version info twice, and not exiting
function                                             old     new   delta
bc_args                                              123     130      +7
bc_num_binary                                        150     148      -2
static.nullptr                                         4       -      -4
bc_vm_run                                           1883    1874      -9
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/2 up/down: 7/-15)              Total: -8 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 09:07:06 +01:00
Denys Vlasenko
1ff1c70944 bc: make bc_vm_envArgs() NULL-terminate its argv, simplify bc_vm_envLen()
function                                             old     new   delta
bc_num_ulong                                          92     103     +11
static.nullptr                                         -       4      +4
bc_args                                              120     123      +3
static.bc_args_env_name                                4       -      -4
dc_main                                               49      41      -8
bc_main                                               49      41      -8
bc_vm_run                                           1917    1883     -34
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 2/3 up/down: 18/-54)            Total: -36 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 00:54:12 +01:00
Denys Vlasenko
e873ff9660 bc: if FEATURE_CLEAN_UP, clean up allocations on exits
Will have exitcode 1 even on "quit" and "halt", is it a problem?

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-06 00:29:22 +01:00
Denys Vlasenko
050b0fe9a7 bc: do not allow "()" as a valid expression
function                                             old     new   delta
bc_parse_expr_empty_ok                                 -    2178   +2178
bc_parse_expr                                       2178      49   -2129
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 2178/-2129)         Total: 49 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 22:40:44 +01:00
Denys Vlasenko
cca79a0064 bc: reorder functions, delete forward declarations, no code changes - part 2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 21:15:46 +01:00
Denys Vlasenko
b0e3761410 bc: reorder functions, delete forward declarations, no code changes
Pure block moves of text

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 21:03:16 +01:00
Denys Vlasenko
aad652a69a bc: remove unused strings
text	   data	    bss	    dec	    hex	filename
 987088	    485	   7296	 994869	  f2e35	busybox_old
 987079	    485	   7296	 994860	  f2e2c	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 20:33:23 +01:00
Denys Vlasenko
452df923f7 bc: trivial simplification in bc_parse_return()
function                                             old     new   delta
bc_parse_stmt                                       2276    2271      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 20:28:26 +01:00
Denys Vlasenko
657d6bb262 bc: fix "warning: 's' may be used uninitialized in this function"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 20:25:03 +01:00
Denys Vlasenko
bcb62a7f11 bc: code shrink
function                                             old     new   delta
bc_parse_expr                                       2151    2178     +27
bc_parse_exprs                                        60       -     -60
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/0 up/down: 27/-60)            Total: -33 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 20:17:48 +01:00
Denys Vlasenko
6543758b13 bc: code shrink
function                                             old     new   delta
bc_parse_operator                                    181     184      +3
bc_parse_ops                                          50      25     -25
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 3/-25)             Total: -22 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 19:37:19 +01:00
Denys Vlasenko
f381a88234 bc: make division operation interruptible
function                                             old     new   delta
bc_num_d                                             564     584     +20
bc_num_r                                             230     245     +15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 35/0)               Total: 35 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 19:21:34 +01:00
Denys Vlasenko
b3cb90124b bc: use unsigned division by 10 instead of signed
function                                             old     new   delta
bc_num_k                                             990     988      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 19:05:32 +01:00
Denys Vlasenko
06fa65bd95 bc: move ^C check fro power calculation to multiplication
function                                             old     new   delta
bc_num_k                                             971     990     +19
bc_num_p                                             507     478     -29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 19/-29)            Total: -10 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 19:00:58 +01:00
Denys Vlasenko
b692c2faf1 bc: bc_num_k(): move carry,i,j,len to inner scope
This might help compiler

function                                             old     new   delta
bc_num_k                                             957     971     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 18:56:14 +01:00
Denys Vlasenko
0d7e46b1de bc: tweak error messages
function                                             old     new   delta
bc_lex_token                                        1285    1299     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 18:31:19 +01:00
Denys Vlasenko
0064679915 bc: fix inverted POSIXness test, improve messages, commonalize message strings
function                                             old     new   delta
bc_lex_token                                        1251    1285     +34
bc_POSIX_does_not_allow_bool_ops_this_is_bad           -      25     +25
bc_POSIX_does_not_allow_empty_X_expression_in_for      -      20     +20
bc_POSIX_does_not_allow                                -      20     +20
bc_parse_expr                                       2146    2151      +5
bc_num_ulong                                         103      92     -11
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 2/1 up/down: 104/-11)            Total: 93 bytes
   text	   data	    bss	    dec	    hex	filename
 987210	    485	   7296	 994991	  f2eaf	busybox_old
 987084	    485	   7296	 994865	  f2e31	busybox_unstripped
^^^^^^^

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 18:12:27 +01:00
Denys Vlasenko
5318f81fbe bc: print error line numbers
FILE:
	print 1
	print "

$ busybox bc -q FILE
bc: FILE:2: string end could not be found
ready for more input
>>> _

function                                             old     new   delta
bc_verror_msg                                          -      99     +99
bc_lex_file                                           12      28     +16
bc_lex_next                                           77      92     +15
dc_lex_token                                         687     701     +14
bc_lex_token                                        1237    1251     +14
bc_posix_error_fmt                                    90      58     -32
bc_error_fmt                                          70      36     -34
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/2 up/down: 158/-66)            Total: 92 bytes
   text	   data	    bss	    dec	    hex	filename
 987108	    485	   7296	 994889	  f2e49	busybox_old
 987210	    485	   7296	 994991	  f2eaf	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 17:48:01 +01:00
Denys Vlasenko
08c033c406 bc: optimize pushing zero bytes to vectors
function                                             old     new   delta
bc_vec_pushZeroByte                                    -      10     +10
bc_vm_run                                           1919    1917      -2
bc_vec_string                                         61      59      -2
bc_vec_concat                                         68      66      -2
bc_parse_create                                      170     168      -2
bc_lex_number                                        298     296      -2
dc_lex_token                                         691     687      -4
bc_read_line                                         314     303     -11
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/7 up/down: 10/-25)            Total: -15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 16:55:08 +01:00
Denys Vlasenko
0409ad36a1 bc: restore printing of script name on errors
Examples:

On stdin, no file name is available:
	$ echo 'print "' | busybox bc
	bc: string end could not be found

When the same error is in file:
	$ busybox bc FILE
	bc 1.30.0.git
	Copyright (c) 2018 Gavin D. Howard and contributors
	Report bugs at: https://github.com/gavinhoward/bc
	This is free software with ABSOLUTELY NO WARRANTY
	FILE: string end could not be found
	ready for more input
	>>>

Line number printing to be added later...

function                                             old     new   delta
bc_error_fmt                                          38      70     +32
bc_posix_error_fmt                                    60      90     +30
bc_vm_run                                           1900    1919     +19
bc_program_read                                      338     355     +17
bc_lex_file                                           15      12      -3
bc_program_stdin_name                                  8       -      -8
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/1 up/down: 98/-11)             Total: 87 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 16:39:22 +01:00
Denys Vlasenko
0ad36c46c7 bc: do not check for errors when parsing/running internal library
function                                             old     new   delta
bc_lib_name                                            4       -      -4
bc_vm_run                                           1921    1900     -21
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-25)             Total: -25 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 16:21:43 +01:00
Denys Vlasenko
24fb2cd62f bc: shrink error handling code by enabling tail-call optimization
function                                             old     new   delta
bc_posix_error_fmt                                     -      60     +60
bc_error_fmt                                           -      38     +38
bc_error_bad_character                                 -      17     +17
bc_parse_auto                                        302     313     +11
bc_num_ulong                                          93     103     +10
bc_error_variable_is_wrong_type                        -      10     +10
bc_error_stack_has_too_few_elements                    -      10     +10
bc_error_nested_read_call                              -      10     +10
bc_error_bad_token                                     -      10     +10
bc_error_bad_expression                                -      10     +10
bc_num_d                                             561     564      +3
bc_program_assign                                    484     486      +2
dc_parse_parse                                        60      59      -1
bc_program_num                                      1130    1129      -1
bc_program_call                                      367     366      -1
bc_parse_stmt                                       2277    2276      -1
bc_lex_number                                        299     298      -1
bc_lex_name                                           91      90      -1
bc_func_insert                                        98      97      -1
bc_num_shift                                          74      72      -2
bc_vm_run                                           1924    1921      -3
bc_parse_endBody                                     424     420      -4
bc_lex_next                                           81      77      -4
bc_program_read                                      343     338      -5
bc_program_asciify                                   469     464      -5
bc_program_pushVar                                   221     215      -6
bc_program_print                                     784     778      -6
bc_program_prep                                       99      93      -6
bc_program_assignStr                                 167     161      -6
bc_parse_else                                        143     137      -6
bc_parse_body                                        124     118      -6
dc_parse_register                                     61      53      -8
dc_lex_token                                         699     691      -8
bc_program_modexp                                    756     746     -10
bc_parse_name                                        593     581     -12
dc_parse_expr                                        775     762     -13
bc_program_copyToVar                                 336     323     -13
bc_program_binOpPrep                                 324     311     -13
bc_program_execStr                                   561     543     -18
bc_program_exec                                     4150    4132     -18
bc_parse_parse                                       483     464     -19
bc_error                                              38      14     -24
bc_lex_token                                        1266    1237     -29
bc_posix_error                                        60      14     -46
bc_parse_expr                                       2194    2146     -48
------------------------------------------------------------------------------
(add/remove: 8/0 grow/shrink: 4/33 up/down: 191/-345)        Total: -154 bytes
   text	   data	    bss	    dec	    hex	filename
 987226	    485	   7296	 995007	  f2ebf	busybox_old
 987072	    485	   7296	 994853	  f2e25	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 16:03:46 +01:00
Denys Vlasenko
f359e004b0 bc: make 2^1000000 interruptible faster
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
68cc0a676e bc: remove tabs from internal library
function                                             old     new   delta
bc_lib                                              1877    1674    -203

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
51fb8aa5c1 bc: store library in ASCII, shrink keyword parsing code
Also, use ARRAY_SIZE() where appropriate

function                                             old     new   delta
bc_lib                                              1878    1877      -1
bc_program_index                                      66      64      -2
bc_lex_token                                        1282    1266     -16
bc_lex_kws                                           220     160     -60
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-79)             Total: -79 bytes
   text	   data	    bss	    dec	    hex	filename
 987518	    485	   7296	 995299	  f2fe3	busybox_old
 987440	    485	   7296	 995221	  f2f95	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
cb9a99f3bb bc: drop bc_map_init() macro
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
7d62801db9 bc: create a few common functions
function                                             old     new   delta
bc_char_vec_init                                       -      12     +12
bc_vec_pop_all                                         -       8      +8
bc_program_index                                      64      66      +2
bc_vec_string                                         64      61      -3
bc_vec_free                                           27      24      -3
bc_read_line                                         317     314      -3
bc_program_execStr                                   564     561      -3
bc_program_exec                                     4153    4150      -3
bc_program_copyToVar                                 340     336      -4
bc_parse_create                                      175     170      -5
dc_lex_token                                         705     699      -6
bc_program_reset                                      78      72      -6
bc_lex_number                                        305     299      -6
bc_program_read                                      353     343     -10
bc_program_addFunc                                   225     209     -16
bc_vm_run                                           1942    1924     -18
bc_parse_reset                                       181     163     -18
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/14 up/down: 22/-104)          Total: -82 bytes
   text	   data	    bss	    dec	    hex	filename
 987600	    485	   7296	 995381	  f3035	busybox_old
 987518	    485	   7296	 995299	  f2fe3	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
d5f7703abb bc: rewrite "BOOL * EXPR" idiom as if() statement
function                                             old     new   delta
bc_program_index                                      66      64      -2
bc_program_num                                      1147    1130     -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-19)             Total: -19 bytes
   text	   data	    bss	    dec	    hex	filename
 987619	    485	   7296	 995400	  f3048	busybox_old
 987600	    485	   7296	 995381	  f3035	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
17c5472c5a bc: switch to SA_RESTART signal handling
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
d70d4a0235 bc: get rid of G.tty and G.flags
G.flags == option_mask32

function                                             old     new   delta
bc_args                                               97     120     +23
dc_main                                               48      49      +1
bc_main                                               48      49      +1
bc_error                                              42      38      -4
bc_posix_error                                        65      60      -5
bc_read_line                                         325     317      -8
dc_lex_token                                         714     705      -9
bc_vm_run                                           2039    1942     -97
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/5 up/down: 25/-123)           Total: -98 bytes
   text	   data	    bss	    dec	    hex	filename
 987717	    485	   7296	 995498	  f30aa	busybox_old
 987619	    485	   7296	 995400	  f3048	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00
Denys Vlasenko
9b70f197b4 bc: convert all status codes, remove bc_err_msgs[], bc_vm_error(), bc_vm_posixError()
function                                             old     new   delta
bc_posix_error                                         -      65     +65
bc_vm_run                                           1995    2039     +44
bc_err_line                                            7       -      -7
bc_num_ulong                                         103      93     -10
bc_parse_parse                                       495     483     -12
bc_err_fmt                                            12       -     -12
bc_warn_fmt                                           14       -     -14
bc_parse_expr                                       2210    2194     -16
bc_program_reset                                     105      78     -27
bc_vm_process                                        130      94     -36
bc_parse_stmt                                       2313    2277     -36
bc_err_msgs                                           60       -     -60
bc_lex_token                                        1367    1282     -85
bc_vm_error                                          143       -    -143
bc_vm_posixError                                     189       -    -189
------------------------------------------------------------------------------
(add/remove: 1/6 grow/shrink: 1/7 up/down: 109/-647)         Total: -538 bytes
   text	   data	    bss	    dec	    hex	filename
 988258	    485	   7296	 996039	  f32c7	busybox_old
 987717	    485	   7296	 995498	  f30aa	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-05 15:43:35 +01:00