summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-30awk: evaluate all, even superfluous function argsDenys Vlasenko
function old new delta evaluate 3128 3135 +7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-30awk: rewrite "print" logic a bit to make it clearerDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-30awk: allow empty fuinctions with no arguments, disallow function redefinitionsDenys Vlasenko
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-30awk: replace incorrect use of union in undefined function check (no code ↵Denys Vlasenko
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-30awk: remove custom pool allocator for temporary awk variablesDenys Vlasenko
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-30modprobe: when reading modules.builtin, use basenames of files from itDenys Vlasenko
function old new delta modprobe_main 798 803 +5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: assorted optimizationsDenys Vlasenko
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-29awk: free unused parsing structures after parse is doneDenys Vlasenko
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-29awk: document which hashes are used at what state (parse/execute)Denys Vlasenko
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-29awk: fix parsing of expressions such as "v (a)"Denys Vlasenko
function old new delta next_token 812 825 +13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: deindent a block, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: code shrinkDenys Vlasenko
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-29awk: get rid of "move name one char back" trick in next_token()Denys Vlasenko
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-29awk: when parsing TC_FUNCTION token, eat its opening '('Denys Vlasenko
...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-29awk: g_buf[] does not need a separate allocationDenys Vlasenko
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-29awk: simplify parsing of function declarationDenys Vlasenko
function old new delta parse_program 328 313 -15 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: rename TC_SEQSTART/END to L/RPAREN, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: deindent code block, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-29awk: use TS_foo for combined token classes. No code changesDenys Vlasenko
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-29awk: make ltclass ("last token class") local to next_token()Denys Vlasenko
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-29awk: remove redundant checkDenys Vlasenko
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-27vi: stored search pattern applies to ':s'Ron Yorston
The same stored search pattern applies to both search ('/') and search/replace (':s') operations. A search/replace operation with an empty "find" string (':s//abc/') should use the last stored search pattern, if available, and issue an error message if there is none. If the "find" string is not empty it should replace the stored search pattern. function old new delta colon 3952 4024 +72 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 72/0) Total: 72 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25ls: revert last change (short name must be allocated)Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25awk: move locals deeper into scopes where they are used, no logic changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25awk: more efficient -f FILE, document what "some trick in next_token" isDenys Vlasenko
function old new delta awk_main 890 898 +8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25ash: parser: Fix VSLENGTH parsing with trailing garbageDenys Vlasenko
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-25ash: revert accidental change (should have been separate)Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25fdisk: commonalize stringsDenys Vlasenko
function old new delta .rodata 103674 103667 -7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25cp,mv: fix -t DIR optionRon Yorston
When the '-t DIR' option is used the loop over the remaining arguments should terminate when a NULL pointer is reached. function old new delta mv_main 585 590 +5 cp_main 492 496 +4 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 9/0) Total: 9 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-25xxd: compat tweak for -iDenys Vlasenko
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-24uniq: really support -zRon Yorston
Commit 894466cc5 (uniq: support -z) added support for NUL delimited output. Unfortunately nobody told getopt32(). Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-24switch_root: code shrink - use iterate_on_dir()Denys Vlasenko
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-24libbb: do not check closedir() in remove_file()Denys Vlasenko
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-24nproc: code shrinkDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-24ls: code shrinkDenys Vlasenko
function old new delta scan_and_display_dirs_recur 576 574 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-24taskset: use iterate_on_dir()Denys Vlasenko
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-24move iterate_on_dir() from e2fsprogs to libbbDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-24e2fsprogs: code shrinkDenys Vlasenko
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-24lsattr,chattr: do not open e.g. device files unless asked directly; do not ↵Denys Vlasenko
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-23chattr: if IOC_FSGETXATTR fails, do not try IOC_FSSETXATTRDenys Vlasenko
function old new delta change_attributes 416 410 -6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-23vi: fix read outside of text buffer during insertS Harris
Signed-off-by: S Harris <S.E.Harris@kent.ac.uk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-23cpio: fix sscanf on unterminated bufferS Harris
Signed-off-by: S Harris <S.E.Harris@kent.ac.uk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-23chattr: fix "chattr =ae -R FILE"Denys Vlasenko
-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-23chattr,lsattr: share stat error messageDenys Vlasenko
function old new delta .rodata 103692 103684 -8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-23e2fsprogs/*: remove ioctl calling obfuscationDenys Vlasenko
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-23chattr: update list of attributes in --helpDenys Vlasenko
function old new delta packed_usage 33717 33823 +106 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-22cp: implement -nDenys Vlasenko
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-22crc32: code shrink for !CKSUM configDenys Vlasenko
function old new delta cksum_main 215 203 -12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-22cksum: fix handling of read errorsDenys Vlasenko
function old new delta cksum_main 377 399 +22 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-22crc32: new appletDenys Vlasenko
function old new delta cksum_main 258 377 +119 .rodata 103672 103681 +9 applet_names 2745 2751 +6 applet_main 1588 1592 +4 packed_usage 33734 33698 -36 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/1 up/down: 138/-36) Total: 102 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>