Denys Vlasenko
1ce60699c1
dd: tweak --help
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 23:05:30 +02:00
Denys Vlasenko
b259415b51
dd: fix testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 23:01:33 +02:00
Denys Vlasenko
d32ef3174b
*: remove remains of FEATURE_TOUCH_NODEREF
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:50:13 +02:00
Denys Vlasenko
319e20b56b
taskset: disallow "taskset -p 0"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:41:18 +02:00
Denys Vlasenko
ac2d4d88ce
touch: fix SEGV if !ENABLE_FEATURE_TOUCH_SUSV3
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:23:40 +02:00
Denys Vlasenko
eaa8ee40aa
cut: fix testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:15:42 +02:00
Denys Vlasenko
21afddefd2
hush: fix "error: invalid preprocessing directive ##"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:08:53 +02:00
Denys Vlasenko
2a1ce6b20e
traceroute: fix compile error due to FreeBSD compat
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-15 20:06:52 +02:00
Denys Vlasenko
3d40dfabe1
tar: simplify addition of --exclude=GLOB to the expansion of -X EXCLFILE
...
function old new delta
tar_main 1115 1105 -10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-02 19:58:13 +02:00
Denys Vlasenko
37460f5daf
hush: tweak ${var/pattern/repl} optimization
...
function old new delta
expand_one_var 2507 2502 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-27 18:13:39 +02:00
Denys Vlasenko
49cc3cac30
hush: optimize ${var/pattern/repl} for trivial patterns
...
function old new delta
expand_one_var 2353 2507 +154
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-27 17:53:55 +02:00
Denys Vlasenko
c450437a4e
shell: update psubst testcases
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-27 04:20:32 +02:00
Denys Vlasenko
8dd676c6c3
hush: add missed "undef"
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-27 04:09:45 +02:00
Denys Vlasenko
b278d82c61
hush: implement $'str' bashism
...
function old new delta
parse_dollar_squote - 441 +441
encode_then_expand_vararg 359 380 +21
parse_stream 2252 2271 +19
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/0 up/down: 481/0) Total: 481 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-26 15:32:46 +02:00
Denys Vlasenko
05c5d745f7
ahell: update testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-25 22:03:16 +02:00
Denys Vlasenko
53d45c934f
ash: speed up ${v//pattern/repl}
...
function old new delta
subevalvar 1447 1457 +10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-25 21:54:14 +02:00
Denys Vlasenko
1310d7b1d1
ash: speed up ${v//pattern/repl} if !ASH_OPTIMIZE_FOR_SIZE
...
function old new delta
subevalvar 1353 1447 +94
.rodata 104179 104184 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 99/0) Total: 99 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-22 18:15:59 +02:00
Denys Vlasenko
dabbeeb793
awk: whitespace and debugging tweaks
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-14 16:58:05 +02:00
Denys Vlasenko
95fffd8a7f
vi: remove redundant assignment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-14 16:32:19 +02:00
Denys Vlasenko
d3480dd582
awk: disallow break/continue outside of loops
...
function old new delta
.rodata 104139 104186 +47
chain_group 610 633 +23
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 70/0) Total: 70 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-14 16:32:19 +02:00
Denys Vlasenko
d62627487a
awk: tighten parsing - disallow extra semicolons
...
'; BEGIN {...}' and 'BEGIN {...} ;; {...}' are not accepted by gawk
function old new delta
parse_program 332 353 +21
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-14 16:32:19 +02:00
Denys Vlasenko
36feb26824
vi: somewhat more readable code, no logic changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-13 16:16:21 +02:00
Denys Vlasenko
95ac4a48f1
vi: allow regular expressions in ':s' commands
...
BusyBox vi has never supported the use of regular expressions in
search/replace (':s') commands. Implement this using GNU regex
when VI_REGEX_SEARCH is enabled.
The implementation:
- uses basic regular expressions, to match those used in the search
command;
- only supports substitution of back references ('\0' - '\9') in the
replacement string. Any other character following a backslash is
treated as that literal character.
VI_REGEX_SEARCH isn't enabled in the default build. In that case:
function old new delta
colon 4036 4033 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes
When VI_REGEX_SEARCH is enabled:
function old new delta
colon 4036 4378 +342
.rodata 108207 108229 +22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 364/0) Total: 364 bytes
v2: Rebase. Code shrink. Ensure empty replacement string is null terminated.
Signed-off-by: Andrey Dobrovolsky <andrey.dobrovolsky.odessa@gmail.com >
Signed-off-by: Ron Yorston <rmy@pobox.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-13 14:38:20 +02:00
Denys Vlasenko
ab755e3717
awk: in parsing, remove superfluous NEWLINE check; optimize builtin arg evaluation
...
function old new delta
exec_builtin 1149 1145 -4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-12 13:30:30 +02:00
Denys Vlasenko
8d269ef859
awk: fix printf "%-10c", 0
...
function old new delta
awk_printf 596 626 +30
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-12 11:27:11 +02:00
Denys Vlasenko
caa93ecdd3
awk: fix corner case in awk_printf
...
Example where it wasn't working:
awk 'BEGIN { printf "qwe %s rty %c uio\n", "a", 0, "c" }'
- the NUL printing in %c caused premature stop of printing.
function old new delta
awk_printf 593 596 +3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 18:16:10 +02:00
Denys Vlasenko
f5f336e787
tc: fix for parsing of "dev IFACE" and printing of "class list"
...
First part (parsing fix) is from Steffen Nurpmeso <steffen@sdaoden.eu >
function old new delta
.rodata 104120 104138 +18
print_qdisc 469 464 -5
tc_main 980 969 -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 18/-16) Total: 2 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 14:50:04 +02:00
Denys Vlasenko
39aabfe8f0
awk: unbreak "cmd" | getline
...
function old new delta
evaluate 3337 3343 +6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 12:51:43 +02:00
Denys Vlasenko
4ef8841b21
awk: unbreak "printf('%c') can output NUL" testcase
...
function old new delta
awk_printf 546 593 +47
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 12:25:33 +02:00
Denys Vlasenko
3d57a84907
awk: undo TI_PRINT, it introduced a bug (print with any redirect acting as printf)
...
function old new delta
evaluate 3329 3337 +8
Patch by Ron Yorston <rmy@pobox.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 12:00:31 +02:00
Denys Vlasenko
49c3ce64f0
awk: rollback_token() + chain_group() == chain_until_rbrace()
...
function old new delta
parse_program 336 332 -4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-11 11:46:21 +02:00
Denys Vlasenko
e2e3802987
awk: fix printf buffer overflow
...
function old new delta
awk_printf 468 546 +78
fmt_num 239 247 +8
getvar_s 125 111 -14
evaluate 3343 3329 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/2 up/down: 86/-28) Total: 58 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-04 01:25:34 +02:00
Denys Vlasenko
08ca313d7e
awk: simplify tests for operation class
...
Usually, an operation class has only one possible value of "info" word.
In this case, just compare the entire info word, do not bother
to mask OPCLSMASK bits.
(Example where this is not the case: OC_REPLACE for "<op>=")
function old new delta
mk_splitter 106 100 -6
chain_group 616 610 -6
nextarg 40 32 -8
exec_builtin 1157 1149 -8
as_regex 111 103 -8
awk_split 553 543 -10
parse_expr 948 936 -12
awk_getline 656 642 -14
evaluate 3387 3343 -44
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/9 up/down: 0/-116) Total: -116 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 14:11:51 +02:00
Denys Vlasenko
cb042b0582
awk: restore strdup elision optimization in assignment
...
function old new delta
evaluate 3339 3387 +48
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 13:30:45 +02:00
Denys Vlasenko
90404ed2f6
awk: match(): code shrink
...
function old new delta
do_match - 165 +165
exec_builtin_match 202 - -202
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/0 up/down: 165/-202) Total: -37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 12:20:36 +02:00
Denys Vlasenko
0e3ef4efb0
awk: rand(): 64-bit constants should be ULL
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 11:57:59 +02:00
Denys Vlasenko
2211fa70cc
awk: do not use a copy of g_progname for node->l.new_progname
...
We never destroy g_progname's, the strings still exist, no need to copy
function old new delta
chain_node 104 97 -7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 11:54:01 +02:00
Denys Vlasenko
e1e7ad6b60
awk: support %F %a %A in printf
...
function old new delta
.rodata 104111 104120 +9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 01:59:36 +02:00
Denys Vlasenko
1f765709ed
awk: open-code TS_OPTERM, no logic changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 01:32:03 +02:00
Denys Vlasenko
2b65e73db3
awk: tighten rules in action parsing
...
Disallow:
BEGIN
{ action } - must start on the same line
Disallow:
func f()
print "hello" - must be in {...}
function old new delta
chain_until_rbrace - 41 +41
parse_program 307 336 +29
chain_group 649 616 -33
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 70/-33) Total: 37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 01:16:48 +02:00
Denys Vlasenko
717200eb43
awk: rename GRPSTART/END to L/RBRACE, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-03 00:39:55 +02:00
Denys Vlasenko
b705bf5539
awk: move match() code out-of-line
...
function old new delta
exec_builtin_match - 202 +202
exec_builtin 1434 1157 -277
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 202/-277) Total: -75 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 23:48:48 +02:00
Denys Vlasenko
646429e05e
awk: use smaller regmatch_t arrays, they had 2 elements for no apparent reason
...
function old new delta
exec_builtin 1479 1434 -45
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 23:26:09 +02:00
Denys Vlasenko
a5d7b0f4f4
awk: fix detection of VAR=VAL arguments
...
1NAME=VAL is not it, neither is VA.R=VAL
function old new delta
next_input_file 216 214 -2
is_assignment 115 91 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-26) Total: -26 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 23:07:21 +02:00
Denys Vlasenko
4d902ea9de
awk: fix beavior of "exit" without parameter
...
function old new delta
evaluate 3336 3339 +3
awk_exit 93 94 +1
awk_main 829 827 -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 4/-2) Total: 2 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 22:28:51 +02:00
Denys Vlasenko
8bb03da906
awk: rand() could return 1.0, fix this - should be in [0,1)
...
While at it, make it finer-grained (63 bits of randomness)
function old new delta
evaluate 3303 3336 +33
.rodata 104107 104111 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 37/0) Total: 37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 19:38:03 +02:00
Denys Vlasenko
37ae8cdc6e
awk: beautify builtins table, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 18:55:00 +02:00
Denys Vlasenko
47d9133896
awk: enforce simple builtins' argument number
...
function old new delta
evaluate 3215 3303 +88
.rodata 104036 104107 +71
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 159/0) Total: 159 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 18:28:12 +02:00
Denys Vlasenko
786ca197ad
awk: make builtin definitions more understandable, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 17:32:08 +02:00
Denys Vlasenko
640212ae0e
awk: do not special-case "delete"
...
Rework of the previous fix:
Can use operation attributes to disable arg evaluation instead of special-casing.
function old new delta
.rodata 104032 104036 +4
evaluate 3223 3215 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 4/-8) Total: -4 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 15:21:36 +02:00
Denys Vlasenko
ef5463cf16
awk: shuffle globals for smaller offsets
...
function old new delta
awk_main 832 829 -3
evaluate 3229 3223 -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-9) Total: -9 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 14:53:52 +02:00
Denys Vlasenko
966cafcc77
awk: use "static" tmpvars in main and exit
...
function old new delta
awk_exit 103 93 -10
awk_main 850 832 -18
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-28) Total: -28 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 14:33:13 +02:00
Denys Vlasenko
1193c68fa7
awk: when parsing length(), simplify eating of LPAREN
...
function old new delta
parse_expr 945 948 +3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 14:29:01 +02:00
Denys Vlasenko
40573556f2
awk: shuffle functions to reduce forward declarations, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-02 14:27:40 +02:00
Denys Vlasenko
8b4c429025
awk: use static tmpvars instead of nvalloc(1)ed ones
...
ptest() was using this idea already.
As far as I can see, this is safe. Ttestsuite passes.
One downside is that a temporary from e.g. printf invocation
won't be freed until the next printf call.
function old new delta
awk_printf 481 468 -13
as_regex 137 111 -26
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-39) Total: -39 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-01 17:50:26 +02:00
Denys Vlasenko
1573487e21
awk: rename temp variables, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-07-01 16:17:33 +02:00
Denys Vlasenko
d7354df169
awk: evaluate all, even superfluous function args
...
function old new delta
evaluate 3128 3135 +7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 12:52:51 +02:00
Denys Vlasenko
ca9278ee58
awk: rewrite "print" logic a bit to make it clearer
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 12:42:39 +02:00
Denys Vlasenko
d150710169
awk: allow empty fuinctions with no arguments, disallow function redefinitions
...
function old new delta
.rodata 103681 103700 +19
parse_program 303 307 +4
evaluate 3145 3141 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 23/-4) Total: 19 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 12:23:51 +02:00
Denys Vlasenko
86fc2872b3
awk: replace incorrect use of union in undefined function check (no code changes)
...
...which reveals that it's buggy: it thinks "func f(){}" is an undefined function!
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 12:12:20 +02:00
Denys Vlasenko
6cf6f1eaee
awk: remove custom pool allocator for temporary awk variables
...
It seems to be designed to reduce overhead of malloc's auxiliary data,
by allocating at least 64 variables as a block.
With "struct var" being about 20-32 bytes long (32/64 bits),
malloc overhead for one temporary indeed is high, ~33% more memory used
than needed.
function old new delta
evaluate 3137 3145 +8
modprobe_main 798 803 +5
exec_builtin 1414 1419 +5
awk_printf 476 481 +5
as_regex 132 137 +5
EMSG_INTERNAL_ERROR 15 - -15
nvfree 169 116 -53
nvalloc 145 - -145
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 5/1 up/down: 28/-213) Total: -185 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 08:01:29 +02:00
Denys Vlasenko
f99800758e
modprobe: when reading modules.builtin, use basenames of files from it
...
function old new delta
modprobe_main 798 803 +5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-30 00:49:24 +02:00
Denys Vlasenko
3aff3b9cb8
awk: assorted optimizations
...
hash_find(): do not caclculate hash twice. Do not divide - can use
cheap multiply-by-8 shift.
nextword(): do not repeatedly increment in-memory value, do it in register,
then store final result.
hashwalk_init(): do not strlen() twice.
function old new delta
hash_search3 - 49 +49
hash_find 259 281 +22
nextword 19 16 -3
evaluate 3141 3137 -4
hash_search 54 28 -26
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/3 up/down: 71/-33) Total: 38 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 19:07:36 +02:00
Denys Vlasenko
b3c91a127f
awk: free unused parsing structures after parse is done
...
function old new delta
hash_clear - 90 +90
awk_main 827 849 +22
clear_array 90 - -90
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 112/-90) Total: 22 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 19:06:59 +02:00
Denys Vlasenko
21fbee2e87
awk: document which hashes are used at what state (parse/execute)
...
We can free them after they are no longer needed.
(Currently, being a NOEXEC applet is much larger waste of memory
for the case of long-running awk script).
function old new delta
awk_main 831 827 -4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 14:33:04 +02:00
Denys Vlasenko
6872c193a9
awk: fix parsing of expressions such as "v (a)"
...
function old new delta
next_token 812 825 +13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 12:16:36 +02:00
Denys Vlasenko
686287b5da
awk: deindent a block, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 03:47:46 +02:00
Denys Vlasenko
216d3d8ad9
awk: code shrink
...
function old new delta
parse_expr 948 945 -3
chain_expr 65 62 -3
chain_group 655 649 -6
parse_program 310 303 -7
rollback_token 10 - -10
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/4 up/down: 0/-29) Total: -29 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 03:44:56 +02:00
Denys Vlasenko
4f27503a1e
awk: get rid of "move name one char back" trick in next_token()
...
function old new delta
next_token 791 812 +21
awk_main 886 831 -55
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 21/-55) Total: -34 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 03:27:07 +02:00
Denys Vlasenko
f414fb4411
awk: when parsing TC_FUNCTION token, eat its opening '('
...
...like we do for array references.
function old new delta
parse_expr 938 948 +10
next_token 788 791 +3
parse_program 313 310 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 13/-3) Total: 10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 03:02:21 +02:00
Denys Vlasenko
cb6061a4e9
awk: g_buf[] does not need a separate allocation
...
function old new delta
exec_builtin 1400 1414 +14
evaluate 3132 3141 +9
getvar_s 121 125 +4
awk_main 902 886 -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 27/-16) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 02:43:02 +02:00
Denys Vlasenko
926420795b
awk: simplify parsing of function declaration
...
function old new delta
parse_program 328 313 -15
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 02:37:10 +02:00
Denys Vlasenko
9782cb7774
awk: rename TC_SEQSTART/END to L/RPAREN, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 01:50:47 +02:00
Denys Vlasenko
a493441ca5
awk: deindent code block, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 01:30:49 +02:00
Denys Vlasenko
adcd9a6f34
awk: use TS_foo for combined token classes. No code changes
...
Confusion with "simple" classes was the cause of a bug fixed by previous commit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 01:23:37 +02:00
Denys Vlasenko
832cb4fcb9
awk: make ltclass ("last token class") local to next_token()
...
function old new delta
next_token 784 790 +6
next_input_file 219 216 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 6/-3) Total: 3 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 01:09:08 +02:00
Denys Vlasenko
af0172369e
awk: remove redundant check
...
function old new delta
next_token 785 784 -1
parse_program 337 328 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-10) Total: -10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-29 01:03:42 +02:00
Denys Vlasenko
0231e34427
ls: revert last change (short name must be allocated)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 19:48:34 +02:00
Denys Vlasenko
78645d8371
awk: move locals deeper into scopes where they are used, no logic changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 19:41:05 +02:00
Denys Vlasenko
8c5da0323b
awk: more efficient -f FILE, document what "some trick in next_token" is
...
function old new delta
awk_main 890 898 +8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 19:38:27 +02:00
Denys Vlasenko
53a7a9cd8c
ash: parser: Fix VSLENGTH parsing with trailing garbage
...
Let's adopt Herbert Xu's patch, not waiting for it to reach dash git:
hush already has a similar fix.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 02:09:41 +02:00
Denys Vlasenko
ad57e4e4b2
ash: revert accidental change (should have been separate)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 02:08:38 +02:00
Denys Vlasenko
53e5c59821
fdisk: commonalize strings
...
function old new delta
.rodata 103674 103667 -7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 01:14:43 +02:00
Denys Vlasenko
294d0c85ad
xxd: compat tweak for -i
...
function old new delta
xxd_main 888 893 +5
.rodata 103669 103674 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 10/0) Total: 10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-25 00:16:04 +02:00
Denys Vlasenko
3b267e9925
switch_root: code shrink - use iterate_on_dir()
...
function old new delta
rmrf - 46 +46
delete_contents 181 99 -82
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 46/-82) Total: -36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 17:54:11 +02:00
Denys Vlasenko
4a68697521
libbb: do not check closedir() in remove_file()
...
If it's needed, there has to be a comment why. There isn't.
function old new delta
.rodata 103686 103669 -17
remove_file 598 571 -27
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-44) Total: -44 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 17:39:57 +02:00
Denys Vlasenko
6481070eb9
nproc: code shrink
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 13:47:49 +02:00
Denys Vlasenko
df96a3cd08
ls: code shrink
...
function old new delta
scan_and_display_dirs_recur 576 574 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 13:37:53 +02:00
Denys Vlasenko
6d61eb1363
taskset: use iterate_on_dir()
...
function old new delta
iter - 27 +27
process_pid_str 854 856 +2
taskset_main 181 135 -46
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 29/-46) Total: -17 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 12:02:17 +02:00
Denys Vlasenko
1746218bee
move iterate_on_dir() from e2fsprogs to libbb
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 11:42:55 +02:00
Denys Vlasenko
87c40cf4de
e2fsprogs: code shrink
...
function old new delta
print_e2flags_long - 109 +109
list_attributes 248 232 -16
print_e2flags 169 47 -122
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 109/-138) Total: -29 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 09:31:57 +02:00
Denys Vlasenko
9468ea06d2
lsattr,chattr: do not open e.g. device files unless asked directly; do not follow links
...
Add O_NOFOLLOW (and O_NOCTTY for good measure) to open calls like e2fsprogs does.
In lsattr, when recursing, operate only on regular files, symlinks, and directories.
(Otherwise, "lsattr /dev" can e.g. open a watchdog device... not good).
At this time, looks like chattr/lsattr can't operate on symlink inodes -
ioctls do not work on open(O_PATH | O_NOFOLLOW) fds.
function old new delta
lsattr_dir_proc 168 203 +35
change_attributes 410 408 -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 35/-2) Total: 33 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-24 01:07:56 +02:00
Denys Vlasenko
0e55af6c61
chattr: if IOC_FSGETXATTR fails, do not try IOC_FSSETXATTR
...
function old new delta
change_attributes 416 410 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-23 19:44:15 +02:00
Denys Vlasenko
5709b51a75
chattr: fix "chattr =ae -R FILE"
...
-R is not an "unset these flags" argument, thus no conflict with "=".
function old new delta
.rodata 103684 103686 +2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-23 18:57:00 +02:00
Denys Vlasenko
85a5bc9148
chattr,lsattr: share stat error message
...
function old new delta
.rodata 103692 103684 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-23 15:33:22 +02:00
Denys Vlasenko
96436fb36a
e2fsprogs/*: remove ioctl calling obfuscation
...
function old new delta
change_attributes 326 416 +90
list_attributes 222 248 +26
close_silently 22 - -22
.rodata 103722 103692 -30
fgetsetversion 74 - -74
fgetsetprojid 107 - -107
fgetsetflags 148 - -148
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 2/1 up/down: 116/-381) Total: -265 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-23 12:56:40 +02:00
Denys Vlasenko
e7ff017a1a
chattr: update list of attributes in --help
...
function old new delta
packed_usage 33717 33823 +106
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-23 09:42:01 +02:00
Denys Vlasenko
56bbbfae7d
cp: implement -n
...
function old new delta
.rodata 103681 103722 +41
packed_usage 33698 33717 +19
copy_file 1678 1696 +18
cp_main 500 492 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 78/-8) Total: 70 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-22 15:28:34 +02:00
Denys Vlasenko
91b9549a8c
crc32: code shrink for !CKSUM config
...
function old new delta
cksum_main 215 203 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-22 10:24:06 +02:00
Denys Vlasenko
836580a7d6
cksum: fix handling of read errors
...
function old new delta
cksum_main 377 399 +22
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-06-22 09:29:22 +02:00