Denys Vlasenko
822590f5e2
shell/math: eliminate some redundant stores on return code path
...
function old new delta
evaluate_string 1432 1412 -20
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-17 19:21:28 +02:00
Denys Vlasenko
19a74a54de
shell/math: change ?: nesting code to not have 63 level nesting limitation
...
function old new delta
evaluate_string 1406 1432 +26
arith 36 29 -7
arith_apply 998 990 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 26/-15) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-17 11:03:02 +02:00
Denys Vlasenko
6221832bc1
shell/math.h: update comments, rearrange struct members for smaller code
...
function old new delta
arith_apply 1000 998 -2
evaluate_string 1414 1406 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-10) Total: -10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-17 10:40:29 +02:00
Denys Vlasenko
d6f98f214b
shell/math: code shrink
...
function old new delta
evaluate_string 1432 1414 -18
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-17 00:28:49 +02:00
Denys Vlasenko
550696d492
shell/math: tweka comments
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-16 20:47:43 +02:00
Denys Vlasenko
e127985839
shell/math: fix ?: to not evaluate not-taken branches
...
This fixes ash-arith-arith-ternary1/2.tests
function old new delta
evaluate_string 1271 1432 +161
arith_apply 968 1000 +32
arith 22 36 +14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 207/0) Total: 207 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-16 19:51:01 +02:00
Denys Vlasenko
f8263528cd
shell/math: simplify handling of unary plus
...
function old new delta
evaluate_string 1257 1271 +14
arith_apply 977 968 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-9) Total: 5 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 17:16:46 +02:00
Denys Vlasenko
38f423cc9c
shell/math: explain the logic, small tweak to make code smaller
...
function old new delta
evaluate_string 1258 1257 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 16:46:31 +02:00
Denys Vlasenko
ea6dcbe283
shell/math: fix order of expansion of variables to numbers
...
This fixes arith-assign-in-varexp1.tests
function old new delta
evaluate_string 1132 1258 +126
arith_lookup_val 143 - -143
arith_apply 1132 977 -155
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 126/-298) Total: -172 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 13:56:12 +02:00
Denys Vlasenko
61a4959251
shell/math: remove special code to handle a?b?c:d:e, it works without it now
...
The "hack" to virtually parenthesize ? EXPR : made this unnecessary.
The expression is effectively a?(b?(c):d):e and thus b?c:d is evaluated
before continuing with the second :
function old new delta
evaluate_string 1148 1132 -16
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 11:22:13 +02:00
Denys Vlasenko
5f56a03882
shell/math: fix parsing of ?: and explain why it's parsed that way
...
This fixes arith-precedence1.tests.
This breaks arith-ternary2.tests again (we now evaluate variables
on not-taken branches). We need a better logic here anyway:
not only bare variables should not evaluate when not-taken:
1 ? eval_me : do_not_eval
but any (arbitrarily complex) expressions shouldn't
evaluate as well!
1 ? var_is_set=1 : ((var_is_not_set=2,var2*=4))
function old new delta
evaluate_string 1097 1148 +51
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 10:14:43 +02:00
Denys Vlasenko
3829d8b675
shell/math: simpler insertion of "fake" last RPAREN
...
Skip one pass through token table, since we know the result.
function old new delta
evaluate_string 1095 1097 +2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-15 09:19:48 +02:00
Denys Vlasenko
66139330fc
shell/math: trivial code shrink
...
function old new delta
arith_apply 1143 1132 -11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 13:59:11 +02:00
Denys Vlasenko
3df885abe3
shell/math: fix the order of variable resolution in binops
...
function old new delta
arith_apply 1134 1143 +9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 11:33:59 +02:00
Denys Vlasenko
5febdb1223
shell/math: remove now-unused second_val
...
function old new delta
arith_apply 1137 1134 -3
evaluate_string 1101 1095 -6
arith_lookup_val 150 143 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-16) Total: -16 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 11:10:45 +02:00
Denys Vlasenko
46dccd2ec0
shell/math: fix nested ?: and do not parse variables in not-taken branch
...
Fixes arith-ternary1.tests and arith-ternary_nested.tests
function old new delta
evaluate_string 1043 1101 +58
arith_apply 1087 1137 +50
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 108/0) Total: 108 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 11:07:30 +02:00
Denys Vlasenko
a02450ff0b
shell/math: remove a redundant check
...
function old new delta
arith_apply 1134 1087 -47
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 01:05:40 +02:00
Denys Vlasenko
8acbf31708
shell/math: document ternary ?: op's weirdness, add code comments
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-14 00:41:18 +02:00
Denys Vlasenko
c1d7507a4d
shell/math: fix one name check, other minor cleanups
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-13 16:15:18 +02:00
Denys Vlasenko
a4f30f3c70
shell/math: reduce stack usage
...
function old new delta
arith_apply 1123 1134 +11
arith_lookup_val 140 145 +5
evaluate_string 1053 1047 -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 16/-6) Total: 10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-13 13:55:13 +02:00
Denys Vlasenko
d417193cf3
shell: avoid segfault on ${0::0/0~09J}. Closes 15216
...
function old new delta
evaluate_string 1011 1053 +42
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2023-06-12 17:48:47 +02:00
Denys Vlasenko
1be73dd9ad
shell: fix parsing of $(( (v)++ + NUM ))
...
function old new delta
evaluate_string 988 1011 +23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-26 13:29:25 +02:00
Denys Vlasenko
d84a604830
shell: fix arithmentic evaluation of "++7" and such (it is + + 7, i.e. 7)
...
function old new delta
evaluate_string 945 988 +43
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-25 22:04:45 +02:00
Denys Vlasenko
841878e7ee
shell: remove FAST_FUNC from a static function
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-10-01 00:57:05 +02:00
Denys Vlasenko
7427406580
shell: better comments in BASE#nn code
...
function old new delta
evaluate_string 932 930 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-10-22 14:25:43 +02:00
Denys Vlasenko
c58d785b9d
ash: fix BASE###nn bashism for bases 36..64
...
function old new delta
evaluate_string 876 932 +56
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-09-22 23:40:10 +02:00
Denys Vlasenko
ca1ce4b9fa
ash: fix BASE###nn bashism to accept letter 'digits' for bases > 9
...
function old new delta
evaluate_string 873 876 +3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-09-22 18:26:05 +02:00
Denys Vlasenko
8b35f207bb
shell: move all definitions of strto_arith_t() together
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-05-26 14:02:10 +02:00
Denys Vlasenko
9edd268bad
shell: implement optional "BASE#nnnn" numeric literals
...
function old new delta
evaluate_string 729 851 +122
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-05-19 17:23:31 +02:00
Denys Vlasenko
f19e3c1c6c
shell: handle $((NUM++...) like bash does. Closes 10706
...
function old new delta
evaluate_string 680 729 +49
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-01-28 20:13:33 +01:00
Denys Vlasenko
95f7953f2c
do not use `a' quoting style in comments
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-08-02 14:26:33 +02:00
Denys Vlasenko
f5add44981
typo fix in comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2014-11-20 01:43:30 +01:00
Denys Vlasenko
8a475def9e
ash,hush: do not segfault on $((2**63 / -1))
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2014-11-18 14:32:58 +01:00
Denys Vlasenko
1961aea305
move endofname() to libbb
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2013-02-26 00:36:53 +01:00
Denys Vlasenko
60cb48ca50
whitespace cleanup. no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2013-01-14 15:57:44 +01:00
Denys Vlasenko
395b97aeac
shell/math: better comment. no code changes
...
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-17 18:02:17 +02:00
Denys Vlasenko
bed7c81ea2
shell/math: deconvolute and explain ?: handling. Give better error message
...
function old new delta
arith_apply 1271 1283 +12
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-16 11:50:46 +02:00
Denys Vlasenko
063847d6bd
shell/math: return string error indicator, not integer
...
function old new delta
expand_and_evaluate_arith 87 106 +19
expand_one_var 1563 1570 +7
arith 12 18 +6
evaluate_string 678 680 +2
arith_apply 1269 1271 +2
builtin_umask 133 132 -1
ash_arith 118 75 -43
expand_vars_to_list 1094 1038 -56
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/3 up/down: 36/-100) Total: -64 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-15 13:33:02 +02:00
Denys Vlasenko
0eac8ff164
shell/math.c: stop using bss variable
...
function old new delta
evaluate_string - 678 +678
expand_one_var 1543 1563 +20
builtin_type 114 116 +2
expand_and_evaluate_arith 89 87 -2
prev_chk_var_recursive 4 - -4
ash_arith 122 118 -4
arith_lookup_val 142 132 -10
arith 674 12 -662
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 2/4 up/down: 700/-682) Total: 18 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-13 12:49:52 +02:00
Denys Vlasenko
06d44d7dfb
shell/math.c: rename arith_eval_hooks to arith_state, put error code into it
...
function old new delta
expand_and_evaluate_arith 79 89 +10
arith 675 674 -1
arith_lookup_val 151 142 -9
ash_arith 135 122 -13
arith_apply 1304 1269 -35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/4 up/down: 10/-58) Total: -48 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-13 12:49:03 +02:00
Denys Vlasenko
bd14770b0c
shell/math.c: small code shrink; fixed incomprehensible comments
...
function old new delta
arith_apply 1334 1304 -30
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-13 11:11:40 +02:00
Denys Vlasenko
51850c818c
shell: small code shrink
...
function old new delta
arith 680 675 -5
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-13 01:09:11 +02:00
Denys Vlasenko
b771c654ca
shell: shrink arith code; and prepare for returning text error codes
...
function old new delta
arith 701 680 -21
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-13 00:34:26 +02:00
Denys Vlasenko
8b2f13d84d
shell: unify endofname() in hush and ash
...
function old new delta
builtin_umask 132 133 +1
changepath 195 194 -1
expand_and_evaluate_arith 77 69 -8
ash_arith 143 135 -8
expand_one_var 1551 1515 -36
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/4 up/down: 1/-53) Total: -52 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-07 12:19:33 +02:00
Denys Vlasenko
0ef64bdb40
*: make GNU licensing statement forms more regular
...
This change retains "or later" state! No licensing _changes_ here,
only form is adjusted (article, space between "GPL" and "v2" and so on).
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-08-16 20:14:46 +02:00
Denys Vlasenko
03dad22f8a
hush: use ash's read builtin
...
function old new delta
shell_builtin_read - 1000 +1000
set_local_var_from_halves - 24 +24
setvar2 - 7 +7
...
popstring 140 134 -6
ash_main 1375 1368 -7
setvar 184 174 -10
arith_set_local_var 36 - -36
builtin_read 1096 185 -911
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 5/23 up/down: 1038/-1007) Total: 31 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-01-12 23:29:57 +01:00
Denys Vlasenko
7306727d1b
shell: split read builtin from ash
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-01-12 22:11:24 +01:00
Denys Vlasenko
76ace254e1
ash,hush: fix $RANDOM in children being repeated
...
function old new delta
next_random 46 68 +22
forkshell 248 263 +15
expand_vars_to_list 2118 2131 +13
run_pipe 1775 1782 +7
popstring 134 140 +6
builtin_umask 123 121 -2
ash_main 1356 1336 -20
get_local_var_value 125 104 -21
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/3 up/down: 63/-43) Total: 20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-12 15:25:01 +02:00
Denys Vlasenko
a7bb3c1396
*: code shrink via NOINLINE
...
function old new delta
expand_vars_to_list - 2118 +2118
lzo1x_optimize - 1429 +1429
run_pipe 358 1775 +1417
arith_apply - 1335 +1335
mainQSort3 - 1198 +1198
logdir_open - 1163 +1163
rewrite - 1039 +1039
dump_identity - 987 +987
do_shm - 884 +884
cpio_o - 863 +863
cpio_main 1450 560 -890
ipcs_main 3442 2523 -919
bb_dump_dump 2611 1488 -1123
process_dev 4572 3405 -1167
logdirs_reopen 1308 86 -1222
arith 2084 707 -1377
mainSort 2622 1202 -1420
do_lzo_compress 2276 799 -1477
run_list 2491 943 -1548
expand_variables 2280 135 -2145
------------------------------------------------------------------------------
(add/remove: 9/0 grow/shrink: 1/10 up/down: 12433/-13288) Total: -855 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-08 12:28:08 +02:00
Denys Vlasenko
71016baf55
printf: accept negative numbers for %x; sh: overflowed numbers are 0
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-06-05 16:24:29 +02:00