Denys Vlasenko
74ee3f2f73
tls: remove unused tls_symmetric.h (was used by old "big" AES code)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-11 13:46:30 +02:00
Denys Vlasenko
d8e39b5917
find: code shrink -{m,a,c}{time,min}
...
function old new delta
time_cmp - 181 +181
func_mmin 171 31 -140
func_mtime 180 34 -146
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 181/-286) Total: -105 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-10 15:18:12 +02:00
Denys Vlasenko
d3dbf4ac05
*: add more beneficial NOINLINEs
...
function old new delta
dec_main - 1729 +1729 -41 bytes
fallbackQSort3 - 671 +671 -70 bytes
verify_sun - 481 +481 -107 bytes
verify 1330 742 -588
fallbackSort 1469 728 -741
unpack_xz_stream 2306 536 -1770
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 0/3 up/down: 2881/-3099) Total: -218 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-10 14:32:05 +02:00
Denys Vlasenko
53b2fdcdba
*: add NOINLINEs where code noticeably shrinks
...
function old new delta
display 85 1463 +1378 -73 bytes
select_and_cluster - 1088 +1088 -139 bytes
parse_reply - 979 +979 -109 bytes
zbc_num_sqrt - 632 +632 -191 bytes
show_bridge_port - 585 +585 -56 bytes
sp_256_proj_point_add_8 - 576 +576 -45 bytes
encode_then_append_var_plusminus - 554 +554 -118 bytes
read_mode_db - 537 +537 -47 bytes
fbset_main 1331 747 -584
sp_256_ecc_mulmod_8 1157 536 -621
brctl_main 2189 1548 -641
expand_one_var 2544 1872 -672
zxc_vm_process 6412 5589 -823
send_queries 1813 725 -1088
recv_and_process_peer_pkt 2245 1018 -1227
bb_dump_dump 1531 80 -1451
------------------------------------------------------------------------------
(add/remove: 7/0 grow/shrink: 1/8 up/down: 6329/-7107) Total: -778 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-10 13:50:53 +02:00
Denys Vlasenko
49bcf9f40c
hush: speed up ${x//\*/|} too
...
function old new delta
expand_one_var 2502 2544 +42
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-09 03:52:04 +02:00
Denys Vlasenko
5aaeb550b7
ash: speed up ${x//\*/|} too, make it independent of ASH_OPTIMIZE_FOR_SIZE
...
function old new delta
subevalvar 1503 1545 +42
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-09 03:33:22 +02:00
Denys Vlasenko
86ba007b84
xxd: fix -p -r, closes 13881
...
function old new delta
xxd_main 893 890 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 23:03:54 +02:00
Denys Vlasenko
d315a77a79
resize: use tcgetattr(TCSAFLUSH) instead of TCSANOW, closes 13811
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 22:18:24 +02:00
Denys Vlasenko
b198e9aa93
tar: improve comments, add FIXMEs. no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 19:34:20 +02:00
Denys Vlasenko
049775b2ef
libbb.h: fix logic selecting incorrect BB_STRTOOFF for !LFS configs
...
BB_STRTOOFF() was equal to bb_strtou(). On x86_64, it's incorrect.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 15:54:40 +02:00
Denys Vlasenko
84874785c2
httpd: if range is not specified, correctly fall back to read/write loop
...
range_start was staying -1, and comparison meant to detect
"is it the first sendfile that failed, or not the first?"
was making incorrect decision. The result: nothing is sent.
function old new delta
send_file_and_exit 865 877 +12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 15:41:08 +02:00
Denys Vlasenko
50c5b36dd7
help: s/Don't daemonize/Run in foreground/g
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 15:02:53 +02:00
Denys Vlasenko
d2e0d3f514
mdev: tweak --help
...
function old new delta
packed_usage 33993 34008 +15
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 14:30:50 +02:00
Denys Vlasenko
cf4dc4a09d
mount: "mount -o rw ...." should not fall back to RO mount
...
The reported case was an attempt to remount,rw a CD-ROM:
mount -o remount,rw /mnt/sr0
which "succeeded" by falling back to RO:
mount("/dev/sr0", "/mnt/sr0", 0x412862, MS_REMOUNT|MS_SILENT|MS_RELATIME, "nojoliet,check=s,map=n,blocksize"...) = -1 EROFS (Read-only file system)
...
mount("/dev/sr0", "/mnt/sr0", 0x412862, MS_RDONLY|MS_REMOUNT|MS_SILENT|MS_RELATIME, "nojoliet,check=s,map=n,blocksize"...) = 0
Clearly, not what was intended!
function old new delta
parse_mount_options 241 267 +26
mount_main 1198 1211 +13
singlemount 1301 1313 +12
inetd_main 1919 1911 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 51/-8) Total: 43 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-08 02:20:10 +02:00
Denys Vlasenko
eb048a450c
ps: fix -o pid=PID,args interpreting entire "PID,args" as header
...
procps-ng 3.3.15 does not do this.
(It could, allowing commas in headers and requiring
"ps -opid=PID -oargs" form for this case, but it does not).
function old new delta
parse_o 167 190 +23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-07 21:55:16 +02:00
Denys Vlasenko
17e6fb06b3
tls: whitespace fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 21:22:36 +02:00
Denys Vlasenko
5e9c617021
tls: P256: sp_256_sub_8_p256_mod always subtracts in-place, use that
...
i386:
function old new delta
sp_256_mont_reduce_8 245 243 -2
sp_256_mont_dbl_8 26 24 -2
sp_256_ecc_mulmod_8 1161 1157 -4
sp_256_proj_point_dbl_8 359 353 -6
sp_256_sub_8_p256_mod 71 32 -39
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/5 up/down: 0/-53) Total: -53 bytes
non-asm code:
function old new delta
sp_256_sub_8_p256_mod - 12 +12
sp_256_mont_reduce_8 250 243 -7
sp_256_mont_dbl_8 31 24 -7
sp_256_ecc_mulmod_8 1171 1157 -14
sp_256_proj_point_dbl_8 374 353 -21
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 12/-49) Total: -37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 20:19:30 +02:00
Denys Vlasenko
87e3f2e9f8
tls: P256: x86-64 optimized sp_256_sub_8_p256_mod
...
function old new delta
sp_256_sub_8_p256_mod - 53 +53
sp_256_mont_reduce_8 223 217 -6
sp_256_mont_dbl_8 38 32 -6
sp_256_ecc_mulmod_8 1535 1529 -6
sp_256_proj_point_dbl_8 469 454 -15
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 53/-33) Total: 20 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 19:59:39 +02:00
Denys Vlasenko
911344a998
tls: P256: x86-64 assembly
...
function old new delta
sp_256_mont_mul_8 127 155 +28
sp_256_proj_point_dbl_8 448 469 +21
sp_256_mont_sub_8 23 35 +12
sp_256_mont_dbl_8 26 38 +12
sp_256_sub_8 44 49 +5
sp_256_ecc_mulmod_8 1530 1535 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/0 up/down: 83/0) Total: 83 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 17:17:34 +02:00
Denys Vlasenko
22fd8fd3f4
tls: P256: tweak arm assembly (currently disabled)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 16:10:49 +02:00
Denys Vlasenko
d74993d31d
tls: P@256: remove "header comment is kept intact" comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 14:28:47 +02:00
Denys Vlasenko
567eefcaf8
tls: P256: do not dumplicate sp_256_sub_8()
...
function old new delta
sp_256_proj_point_dbl_8 359 374 +15
sp_256_ecc_mulmod_8 1159 1171 +12
sp_256_mont_reduce_8 245 250 +5
sp_256_mont_dbl_8 26 31 +5
sp_256_sub_8_p256_mod 43 - -43
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/0 up/down: 37/-43) Total: -6 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 14:25:54 +02:00
Denys Vlasenko
00f2cceb6a
tls: P256: shrink sp_256_mul_add_8 a bit more
...
function old new delta
sp_256_mont_reduce_8 257 245 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 10:15:29 +02:00
Denys Vlasenko
c784284615
tls: P256: propagate constants, create dedicated "subtract p256_mod" function
...
8 instances of this subtraction probably warrant a few bytes more of code.
function old new delta
sp_256_sub_8_p256_mod - 71 +71
sp_256_mont_sub_8 - 29 +29
sp_256_mont_dbl_8 - 26 +26
sp_256_mont_reduce_8 262 257 -5
sp_256_ecc_mulmod_8 1171 1161 -10
sp_256_proj_point_dbl_8 374 359 -15
static.sp_256_mont_sub_8 29 - -29
static.sp_256_mont_dbl_8 31 - -31
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/3 up/down: 126/-90) Total: 36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 01:11:48 +02:00
Denys Vlasenko
2430fcfd8d
tls: optimize sp_256_mont_reduce_8 in P256
...
The code size decrease is small, but we eliminate ALL multiplies!
function old new delta
sp_256_mont_reduce_8 268 262 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-06 00:24:03 +02:00
Denys Vlasenko
bbd723ebec
tls: optimize sp_256_mul_8 in P256
...
function old new delta
sp_256_mont_mul_8 151 150 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 23:19:18 +02:00
Denys Vlasenko
3b411ebbfc
tls: replace "26-bit" P256 code with 32-bit one.
...
function old new delta
sp_256_ecc_mulmod_8 - 1171 +1171
sp_256_mod_mul_norm_8 - 834 +834
sp_256_proj_point_dbl_8 - 374 +374
sp_256_mont_reduce_8 - 268 +268
sp_256_mont_mul_8 - 151 +151
sp_256_sub_8 - 76 +76
sp_256_add_8 - 76 +76
sp_256_cmp_8 - 38 +38
static.sp_256_mont_dbl_8 - 31 +31
static.sp_256_mont_sub_8 - 29 +29
sp_256_to_bin_8 - 28 +28
sp_256_point_from_bin2x32 50 73 +23
sp_256_mont_sqr_8 - 7 +7
sp_256_mont_sqr_10 7 - -7
p256_mod 40 32 -8
curve_P256_compute_pubkey_and_premaster 186 167 -19
sp_256_sub_10 22 - -22
sp_256_add_10 22 - -22
sp_256_cmp_10 24 - -24
sp_256_norm_10 31 - -31
static.sp_256_mont_sub_10 49 - -49
static.sp_256_mont_dbl_10 52 - -52
static.sp_256_mul_add_10 82 - -82
sp_256_from_bin_10 119 - -119
sp_256_to_bin_10 120 - -120
sp_256_mont_reduce_10 178 - -178
sp_256_mont_mul_10 214 - -214
sp_256_proj_point_dbl_10 451 - -451
sp_256_ecc_mulmod_10 1216 - -1216
sp_256_mod_mul_norm_10 1305 - -1305
------------------------------------------------------------------------------
(add/remove: 12/15 grow/shrink: 1/2 up/down: 3106/-3919) Total: -813 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 20:01:38 +02:00
Denys Vlasenko
55578f2fb7
tls: fix the case of sp_256_mont_tpl_10() leaving striay high bits
...
It has no effect on correctness, but interferes with compating internal state
of different implementations.
function old new delta
sp_256_proj_point_dbl_10 443 451 +8
static.sp_256_mont_sub_10 46 49 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 19:46:39 +02:00
Denys Vlasenko
81d8af1970
tls: fix (what looks like) a rare corner case bug in P256
...
function old new delta
static.sp_256_mont_sub_10 30 46 +16
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 17:31:33 +02:00
Denys Vlasenko
92402d5e0a
tls: remove one overzealous debugging statement
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 14:01:52 +02:00
Denys Vlasenko
137864f559
tls: add debugging scaffolding to P256 code
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 13:50:11 +02:00
Denys Vlasenko
389329efbe
tls: another P256 code shrink
...
Propagate constant arrays and scalars deeper down call chain.
Use sp_256_mont_mul_10 to implement sp_256_mont_sqr_10.
function old new delta
sp_256_mont_mul_10 - 214 +214
sp_256_mont_reduce_10 - 178 +178
sp_256_mont_sqr_10 - 7 +7
static.sp_256_mont_reduce_10 178 - -178
static.sp_256_mont_mul_10 214 - -214
static.sp_256_mont_sqr_10 234 - -234
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/0 up/down: 399/-626) Total: -227 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 13:39:33 +02:00
Denys Vlasenko
e730505034
tls: P256 code shrink
...
function old new delta
sp_256_to_bin_10 - 120 +120
sp_256_from_bin_10 - 119 +119
sp_256_proj_point_dbl_10 446 443 -3
curve_P256_compute_pubkey_and_premaster 191 186 -5
sp_256_point_from_bin2x32 62 50 -12
sp_256_to_bin 120 - -120
static.sp_256_from_bin 149 - -149
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/3 up/down: 239/-289) Total: -50 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-05 13:32:04 +02:00
Denys Vlasenko
934bb01d51
tls: "server cert is not RSA" is a fatal error
...
function old new delta
tls_handshake 2022 2019 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-01 22:03:09 +02:00
Denys Vlasenko
1f5a44d20c
tls: add scaffolding to selectively disable ciphers. no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-01 14:27:10 +02:00
Denys Vlasenko
7714518f1a
tls: code shrink P256 code
...
function old new delta
sp_256_to_bin 148 120 -28
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-10-01 13:51:39 +02:00
Denys Vlasenko
ac36e70074
tls: remove unused define
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-30 00:03:23 +02:00
Denys Vlasenko
5b026d1ecf
ash: fix compile breakage in !ENABLE_ASH_ALIAS config
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-28 17:41:56 +02:00
Denys Vlasenko
03ed86b39e
libbb: code shrink in main() and scripted_main()
...
function old new delta
main 68 65 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes
text data bss dec hex filename
1472 560 16 2048 800 busybox_old
1398 552 16 1966 7ae busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-28 17:40:59 +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
62e433131b
shell: enable more tests which are passing now
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-25 22:35:17 +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
627821e42b
libbb/lineedit: tweak #if indenting, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-25 19:36:35 +02:00
Denys Vlasenko
6d2463ac01
libbb/lineedit: do not escape %^=+}]:, escape ~? in tab completion
...
function old new delta
.rodata 104185 104180 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-17 17:33:32 +02:00
Denys Vlasenko
6279aec03d
libbb: clarify what bb_mode_string() generates
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-17 17:10:38 +02:00
Denys Vlasenko
59ac467dc6
libbb: eliminate a static data array in bb_mode_string()
...
function old new delta
print_stat 861 869 +8
header_verbose_list_ar 73 77 +4
display_single 975 979 +4
header_verbose_list 237 239 +2
bb_mode_string 124 115 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 18/-9) Total: 9 bytes
text data bss dec hex filename
1043136 559 5052 1048747 1000ab busybox_old
1043153 559 5020 1048732 10009c busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-17 01:18:31 +02:00
Denys Vlasenko
4958c18134
libbb: code shrink bb_parse_mode
...
function old new delta
bb_parse_mode 393 398 +5
static.who_mask 16 8 -8
static.perm_mask 24 12 -12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 5/-20) Total: -15 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-17 00:47:23 +02:00
Denys Vlasenko
2df4e0a370
chmod: correctly report changed modes
...
Chmod used to incorrectly report as changed even files for which the
mode did not change. This was caused by extra bits in the st_mode, that
were not present when parsed from passed argument in the form of octal
number.
Patch by Wolf <wolf@wolfsden.cz >.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-17 00:39:21 +02:00
Denys Vlasenko
704c596563
ash: introduce bash-like $FUNCNAME
...
Patch adapted from Roberto A. Foglietta <roberto.foglietta@gmail.com >
work.
function old new delta
lookupvar 106 150 +44
evalfun 369 408 +39
ash_main 1218 1242 +24
varinit_data 156 168 +12
.rodata 104162 104172 +10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/0 up/down: 129/0) Total: 129 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-15 19:31:44 +02:00
Denys Vlasenko
9346ea9550
df: "support" -H as an alias of -h
...
function old new delta
df_main 1065 1068 +3
.rodata 104232 104233 +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 4/0) Total: 4 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-11 00:47:03 +02:00
Denys Vlasenko
40f2dd7dd2
httpd: fix config deps
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-10 10:07:42 +02:00
Denys Vlasenko
c00bcf2d2c
libbb: reuse "bad port" error message string
...
function old new delta
.rodata 104251 104232 -19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-10 09:48:55 +02:00
Denys Vlasenko
c421388dca
blkdiscard: accept -f (force) as no-op
...
function old new delta
.rodata 104250 104251 +1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-10 00:20:05 +02:00
Denys Vlasenko
0599e0f87b
basename: implement -a and -s SUFFIX
...
function old new delta
basename_main 145 207 +62
packed_usage 33914 33950 +36
.rodata 104241 104250 +9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 107/0) Total: 107 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 23:45:13 +02:00
Denys Vlasenko
7ab9cd2398
libbb: make bb_lookup_port() abort on bad port names
...
Also, no need to preserve errno
function old new delta
.rodata 104247 104241 -6
bb_lookup_port 97 83 -14
nc_main 1039 1018 -21
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-41) Total: -41 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 22:00:44 +02:00
Denys Vlasenko
857800c655
awk: never return NULL from awk_printf()
...
function old new delta
awk_printf 651 628 -23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 19:26:39 +02:00
Denys Vlasenko
e60c56932e
awk: code shrink
...
function old new delta
awk_printf 652 651 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 19:13:32 +02:00
Denys Vlasenko
8a0adba9f6
awk: code shrink: avoid duplicate NUL checks and strlen()
...
function old new delta
awk_printf 665 652 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 18:58:39 +02:00
Denys Vlasenko
eb60777769
ash: eval: Prevent recursive PS4 expansion
...
Date: Wed, 27 May 2020 13:19:10 +1000
eval: Prevent recursive PS4 expansion
Yaroslav Halchenko <yoh@onerussian.com > wrote:
> I like to (ab)use PS4 and set -x for tracing execution of scripts.
> Reporting time and PID is very useful in this context.
>
> I am not 100% certain if bash's behavior (of actually running the command
> embedded within PS4 string, probably eval'ing it) is actually POSIX
> compliant, posh seems to not do that; but I think it is definitely not
> desired for dash to just stall:
>
> - the script:
> #!/bin/sh
> set -x
> export PS4='+ $(date +%T.%N) [$$] '
> echo "lets go"
> sleep 1
> echo "done $var"
>
> - bash:
> /tmp > bash --posix test.sh
> +export 'PS4=+ $(date +%T.%N) [$$] '
> +PS4='+ $(date +%T.%N) [$$] '
> + 09:15:48.982296333 [2764323] echo 'lets go'
> lets go
> + 09:15:48.987829613 [2764323] sleep 1
> + 09:15:49.994485037 [2764323] echo 'done '
> done
>
...
> - dash: (stalls it set -x)
> /tmp > dash test.sh
> +export PS4=+ $(date +%T.%N) [$$]
> ^C^C
This patch fixes the infinite loop caused by repeated expansions
of PS4.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-09 16:29:37 +02:00
Denys Vlasenko
48cb983b13
ash: parser: Get rid of PEOA
...
Upstream commit:
Date: Wed, 27 May 2020 12:19:13 +1000
parser: Get rid of PEOA
PEOA is a special character used to mark an alias as being finished
so that we don't enter an infinite loop with nested aliases. It
complicates the parser because we have to ensure that it is skipped
where necessary and not copied to the resulting token text.
This patch removes it and instead delays the marking of aliases
until the second pgetc. This has the same effect as the current
PEOA code while keeping the complexities within the input code.
This adds ~32 bytes of global data:
function old new delta
__pgetc - 512 +512
freestrings - 95 +95
popfile 86 110 +24
pushstring 141 160 +19
basepf 76 84 +8
syntax_index_table 258 257 -1
S_I_T 30 28 -2
.rodata 104255 104247 -8
pgetc_without_PEOA 13 - -13
xxreadtoken 230 215 -15
popstring 158 120 -38
readtoken1 3110 3045 -65
pgetc 547 22 -525
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 3/7 up/down: 658/-667) Total: -9 bytes
text data bss dec hex filename
1043102 559 5020 1048681 100069 busybox_old
1043085 559 5052 1048696 100078 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-08 09:52:04 +02:00
Denys Vlasenko
8c68ae8416
ash: parser: Fix alias expansion after heredoc or newlines
...
Upstream commit:
Date: Wed, 29 Apr 2020 00:19:59 +1000
parser: Fix alias expansion after heredoc or newlines
This script should print OK:
alias a="case x in " b=x
a
b) echo BAD;; esac
alias BEGIN={ END=}
BEGIN
cat <<- EOF > /dev/null
$(:)
EOF
END
: <<- EOF &&
$(:)
EOF
BEGIN
echo OK
END
However, because the value of checkkwd is either zeroed when it
shouldn't, or isn't zeroed when it should, dash currently gets
it wrong in every case.
This patch fixes it by saving checkkwd and zeroing it where needed.
function old new delta
readtoken 157 176 +19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-08 01:43:12 +02:00
Denys Vlasenko
c540256127
ash: use pgetc_eatbnl() in more places, take 3
...
Adding previously skipped "readtoken1(pgetc_eatbnl(), syntax_type..." change
from upstream commit:
Date: Thu Mar 8 08:37:11 2018 +0100
parser: use pgetc_eatbnl() in more places
dash has a pgetc_eatbnl function in parser.c which skips any
backslash-newline combinations. It's not used everywhere it could be.
There is also some duplicated backslash-newline handling elsewhere in
parser.c. Replace most of the calls to pgetc() with calls to
pgetc_eatbnl() and remove the duplicated backslash-newline handling.
Testcase:
PS1='\
:::'
should result in ::: prompt, not <newline>::: prompt
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-08 01:13:40 +02:00
Denys Vlasenko
1c06ddd8bb
ash: parser: Save and restore heredoclist in expandstr
...
Upstream commit:
Date: Sun, 17 May 2020 23:36:25 +1000
parser: Save and restore heredoclist in expandstr
On Sun, May 17, 2020 at 01:19:28PM +0100, Harald van Dijk wrote:
> This still does not restore the state completely. It does not clean up any
> pending heredocs. I see:
>
> $ PS1='$(<<EOF "'
> src/dash: 1: Syntax error: Unterminated quoted string
> $(<<EOF ":
> >
>
> That is, after entering the ':' command, the shell is still trying to read
> the heredoc from the prompt.
This patch saves and restores the heredoclist in expandstr.
It also removes a bunch of unnecessary volatiles as those variables
are only referenced in case of a longjmp other than one started by
a signal like SIGINT.
function old new delta
expandstr 268 255 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-08 00:56:53 +02:00
Denys Vlasenko
30af5938af
ash: parser: Fix handling of empty aliases
...
Upstream commit:
Date: Tue, 28 Apr 2020 01:15:26 +1000
parser: Fix handling of empty aliases
Dash was incorrectly handling empty aliases. When attempting to use an
empty alias with nothing else, I'm (incorrectly) prompted for more
input:
```
$ alias empty=''
$ empty
>
```
Other shells (e.g., bash, yash) correctly handle the lone, empty alias as an
empty command:
```
$ alias empty=''
$ empty
$
```
The problem here is that we incorrectly enter the loop eating TNLs
in readtoken(). This patch fixes it by setting checkkwd correctly.
function old new delta
list 351 355 +4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-08 00:39:16 +02:00
Denys Vlasenko
6a9b3f7acf
shuf: add a TODO, code shrink
...
function old new delta
shuf_main 501 500 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 22:51:42 +02:00
Denys Vlasenko
574b9c446d
hush: fix var_LINENO3.tests failure
...
function old new delta
parse_and_run_string 40 62 +22
i_getch 105 102 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 22/-3) Total: 19 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 21:44:44 +02:00
Denys Vlasenko
bcff3a7b5a
shell/ash_test/run-all: unset locale/language variables
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 18:24:08 +02:00
Denys Vlasenko
64aa86b720
ash: LINENO starts from 0 in -c SCRIPT mode
...
The var_LINENO3.tests fails for hush: it does start from 0, but does not increment.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 18:16:45 +02:00
Denys Vlasenko
d6c9cbc072
ash: fix LINENO in functions
...
From larger patch by Roberto A. Foglietta <roberto.foglietta@gmail.com >
function old new delta
evalfun 348 369 +21
ash_main 1202 1218 +16
setinputstring 65 73 +8
lookupvar 116 106 -10
evaltree 772 753 -19
evalsubshell 192 173 -19
evalfor 175 156 -19
evalcase 273 254 -19
evalcommand 1560 1536 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/6 up/down: 45/-110) Total: -65 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 18:01:49 +02:00
Denys Vlasenko
0d7dfa9012
ash: support testsuite for !FEATURE_SUID_CONFIG_QUIET configs
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 17:34:58 +02:00
Denys Vlasenko
e53c7dbafc
hush: fix set -n to act immediately, not just after run_list()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 02:25:52 +02:00
Denys Vlasenko
f415e21a7d
ash: eval: Do not cache value of eflag in evaltree
...
Upsteam commit:
Date: Mon, 17 May 2021 15:19:23 +0800
eval: Do not cache value of eflag in evaltree
Patrick Brünn <P.Bruenn@beckhoff.com > wrote:
> Since we are migrating to Debian bullseye, we discovered a new behavior
> with our scripts, which look like this:
>>cleanup() {
>> set +e
>> rmdir ""
>>}
>>set -eu
>>trap 'cleanup' EXIT INT TERM
>>echo 'Hello world!'
>
> With old dash v0.5.10.2 this script would return 0 as we expected it.
> But since commit 62cf6955f8abe875752d7163f6f3adbc7e49ebae it returns
> the last exit code of our cleanup function.
...
Thanks for the report. This is actually a fairly old bug with
set -e that's just been exposed by the exit status change. What's
really happening is that cleanup itself is triggering a set -e
exit incorrectly because evaltree cached the value of eflag prior
to the function call.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 02:01:03 +02:00
Denys Vlasenko
41beb53787
ash: eval: Check nflag in evaltree instead of cmdloop
...
Upstream commit:
Date: Thu, 4 Jun 2020 21:53:55 +1000
eval: Check nflag in evaltree instead of cmdloop
This patch moves the nflag check from cmdloop into evaltree. This
is so that nflag will be in force even if we enter the shell via a
path other than cmdloop, e.g., through sh -c.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-07 01:52:21 +02:00
Denys Vlasenko
4b032a4d6c
chat: hopefully fix infinite spinning on input EOF
...
function old new delta
chat_main 1295 1303 +8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-06 17:38:18 +02:00
Denys Vlasenko
f4ba69d476
shuf: make -i 99999999990-100000000000 work even on 32 bits
...
function old new delta
shuf_main 443 501 +58
.rodata 104238 104245 +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 65/0) Total: 65 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-04 17:00:22 +02:00
Denys Vlasenko
8aa626ffff
udhcp: add comments, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-04 01:50:42 +02:00
Denys Vlasenko
d7e39f26d7
examples/var_service/fw/run: allow extif's to be more than one iface
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-02 23:53:48 +02:00
Denys Vlasenko
f02691939e
dhcprelay: change two more variables to unsigned
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-02 17:09:12 +02:00
Denys Vlasenko
3f2d969db9
udhcp: clarify aspects of relay operation, add TODOs and FIXMEs, tweak --help
...
function old new delta
packed_usage 33891 33920 +29
dhcprelay_main 943 926 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 29/-17) Total: 12 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-02 16:24:52 +02:00
Denys Vlasenko
62d0c8e028
udhcpd: check config file for bad IP ranges (start > end)
...
function old new delta
.rodata 104209 104238 +29
read_config 208 225 +17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 46/0) Total: 46 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-02 14:40:54 +02:00
Denys Vlasenko
d99dee944e
udhcpd: update --help to include -a MSEC
...
function old new delta
packed_usage 33886 33891 +5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-09-02 14:02:23 +02:00
Denys Vlasenko
6d3da732a5
bzip: make ftab[] and crc32table[] member arrays of EState, do not allocate
...
function old new delta
mainSort 941 986 +45
fallbackSort 1471 1469 -2
add_pair_to_block 194 188 -6
compressStream 543 515 -28
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 45/-36) Total: 9 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-29 15:32:42 +02:00
Denys Vlasenko
49a2e484b5
shuf: in -i RANGE, accept numbers up to width of pointers
...
function old new delta
.rodata 108468 108474 +6
shuf_main 555 542 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-29 14:39:01 +02:00
Denys Vlasenko
60f4843468
shuf: with -i LOW-HIGH, do not allow any argv's
...
function old new delta
shuf_main 436 441 +5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-23 15:52:34 +02:00
Denys Vlasenko
d59f539d57
shuf: tweak --help text
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-23 15:48:22 +02:00
Denys Vlasenko
1b661122a8
mount: code shrink
...
function old new delta
append_mount_options 174 157 -17
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-23 02:31:26 +02:00
Denys Vlasenko
dbdf9e0ab1
mount: with -w, do not fall back to read-only mounts
...
function old new delta
mount_it_now 364 358 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-23 02:30:13 +02:00
Denys Vlasenko
1e7ca18591
Regularize "NUL terminated input" --help texts
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-22 15:43:29 +02:00
Denys Vlasenko
62d5a1e56f
tar,smemcap: commonalyze checksumming code for tar header
...
function old new delta
chksum_and_xwrite_tar_header - 99 +99
writeheader 280 199 -81
chksum_and_xwrite 102 - -102
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 0/1 up/down: 99/-183) Total: -84 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-20 17:58:49 +02:00
Denys Vlasenko
29b53ef03f
udhcp: fix build breakage on MIPS
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-20 13:38:16 +02:00
Denys Vlasenko
9d286a0a55
Start 1.35.0 development cycle
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-19 15:06:57 +02:00
Denys Vlasenko
d922947834
Bump version to 1.34.0
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-19 15:04:39 +02:00
Denys Vlasenko
540aa11661
scripts/randomtest.loop: let user know about SKIP_MOUNT_MAND_TESTS
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 20:03:07 +02:00
Denys Vlasenko
9ba502456f
fdisk: indentation fix
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 11:13:30 +02:00
Denys Vlasenko
59243a86d9
busybox: fix "busybox --help busybox" not showing correct text
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 08:53:42 +02:00
Denys Vlasenko
8e8cea2a1b
awk: fix testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 07:37:22 +02:00
Denys Vlasenko
d6a7203042
vi: fix compile-time error if !ENABLE_FEATURE_VI_SETOPTS
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 01:31:32 +02:00
Denys Vlasenko
8d718686f7
tar: fix testsuite
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2021-08-16 00:48:50 +02:00
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