Commit Graph

16835 Commits

Author SHA1 Message Date
Denys Vlasenko
2aaacc1453 dd: support for O_DIRECT i/o
Based on patch by Akash Hadke <hadkeakash4@gmail.com>

function                                             old     new   delta
dd_read                                                -      66     +66
clear_O_DIRECT                                         -      55     +55
write_and_stats                                      102     135     +33
dd_main                                             1578    1601     +23
static.oflag_words                                    19      26      +7
static.iflag_words                                    22      29      +7
packed_usage                                       33665   33668      +3
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 5/0 up/down: 194/0)             Total: 194 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-14 20:27:57 +01:00
Denys Vlasenko
c7b858ff8d libbb: add and use infrastructure for fixed page size optimization
function                                             old     new   delta
procps_scan                                         1121    1118      -3
getpagesize                                            6       -      -6
rpm_main                                            1037    1027     -10
rpm2cpio_main                                        120     110     -10
ptok                                                  38      21     -17
time_main                                           1282    1261     -21
mkswap_main                                          317     278     -39
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/6 up/down: 0/-106)           Total: -106 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-14 18:54:30 +01:00
Denys Vlasenko
fd3c512f88 libbb: create and use mmap() helpers
function                                             old     new   delta
mmap_anon                                              -      22     +22
mmap_read                                              -      21     +21
xmmap_anon                                             -      16     +16
rpm_gettags                                          465     447     -18
bb_full_fd_action                                    498     480     -18
uevent_main                                          337     310     -27
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 0/3 up/down: 59/-63)             Total: -4 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-14 18:25:28 +01:00
Denys Vlasenko
db793480cb build system: combat gcc zealotry in data alignment
text	   data	    bss	    dec	    hex	filename
1020934	    559	   5052	1026545	  fa9f1	busybox_old
1020750	    559	   5052	1026361	  fa939	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-14 05:53:45 +01:00
Denys Vlasenko
a8e19608fc hush: code shrink
function                                             old     new   delta
run_applet_main                                        -      20     +20
builtin_kill                                         296     288      -8
builtin_test                                          19      10      -9
builtin_printf                                        19      10      -9
builtin_echo                                          19      10      -9
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 20/-35)            Total: -15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-14 03:52:54 +01:00
Denys Vlasenko
84d5eddb25 help text: replace [OPTIONS] with actual options (if not too long)
function                                             old     new   delta
packed_usage                                       33620   33665     +45

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 22:34:05 +01:00
Denys Vlasenko
63139b531f hush: if login shell, also source ~/.profile
function                                             old     new   delta
hush_main                                           1101    1151     +50

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 22:00:56 +01:00
Denys Vlasenko
1b367cbeda examples: remove /sbin/ prefixes, system should be configured with $PATH to find utilities
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 21:35:26 +01:00
Denys Vlasenko
5d553bc558 more --help text tweaks
function                                             old     new   delta
packed_usage                                       33545   33581     +36

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 19:18:28 +01:00
Denys Vlasenko
11f1a2553e help text tweaks
function                                             old     new   delta
packed_usage                                       33547   33545      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 19:04:19 +01:00
Denys Vlasenko
49142d48bd hush: NOMMU fix for hush-psubst/tick6.tests
function                                             old     new   delta
hush_main                                           1759    1766      +7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 18:44:07 +01:00
Denys Vlasenko
9cabd17e55 hush: fix -c SCRIPT handling
function                                             old     new   delta
hush_main                                           1763    1759      -4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 18:24:11 +01:00
Denys Vlasenko
31df5a3eee ash: reset SIGHUP earlier: allows HUP traps in .profile, closes 13371
function                                             old     new   delta
ash_main                                            1188    1203     +15

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 16:36:28 +01:00
Denys Vlasenko
6c5f4296dc traceroute: code shrink
function                                             old     new   delta
hexdump_if_verbose                                     -     255    +255
common_traceroute_main                              1668    1644     -24
hexdump                                              239       -    -239
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 255/-263)           Total: -8 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 15:58:47 +01:00
Denys Vlasenko
623e55a396 traceroute: even with -v, don't show other ping processes reply's
function                                             old     new   delta
traceroute_init                                     1135    1151     +16
common_ping_main                                    1919    1935     +16
common_traceroute_main                              1715    1668     -47
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 32/-47)            Total: -15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 15:53:06 +01:00
Denys Vlasenko
d067acb005 traceroute: simpler hexdump()
function                                             old     new   delta
hexdump                                              270     239     -31

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 15:10:07 +01:00
Denys Vlasenko
b4b1828076 traceroute: make "ipv4 or ipv6?" cheaper to find out
function                                             old     new   delta
traceroute_init                                     1131    1135      +4
hexdump                                              274     270      -4
common_traceroute_main                              1730    1715     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 4/-19)             Total: -15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 14:58:11 +01:00
Denys Vlasenko
8055173128 traceroute: don't set SO_DONTROUTE on recv socket, it only affects send
function                                             old     new   delta
traceroute_init                                     1147    1131     -16

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-13 14:18:05 +01:00
Denys Vlasenko
724c7df683 traceroute: untangle main loop
function                                             old     new   delta
common_traceroute_main                              1785    1730     -55

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 21:44:32 +01:00
Denys Vlasenko
e76f03b267 traceroute: commonalize verbose printing
function                                             old     new   delta
hexdump                                                -     274    +274
traceroute_init                                     1172    1147     -25
pr_type                                               79       -     -79
common_traceroute_main                              2091    1785    -306
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/2 up/down: 274/-410)         Total: -136 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 21:09:21 +01:00
Denys Vlasenko
df5c5394b0 traceroute: set IP_PKTINFO to see correct local IP of received pkt (fixes -v display)
Also, assorted code shrink:

function                                             old     new   delta
traceroute_init                                     1210    1172     -38
common_traceroute_main                              2141    2091     -50
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-88)             Total: -88 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 20:09:52 +01:00
Denys Vlasenko
cc55bbef75 traceroute: code shrink
Move init code to a separate function.

function                                             old     new   delta
traceroute_init                                        -    1203   +1203
common_traceroute_main                              3391    2141   -1250
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 1203/-1250)        Total: -47 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 18:09:45 +01:00
Denys Vlasenko
70726640b3 traceroute: code shrink
Do not pass "from" and "to" addresses as parameters, keep them in globals

function                                             old     new   delta
common_traceroute_main                              3426    3391     -35

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 18:09:45 +01:00
Denys Vlasenko
d0dea17900 traceroute: code shrink
Do not byteswap ident (why we were doing it?)

function                                             old     new   delta
common_traceroute_main                              3544    3426    -118

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 18:09:45 +01:00
Denys Vlasenko
3978adc445 traceroute: fix traceroute6 -I (icmp mode)
function                                             old     new   delta
common_traceroute_main                              3530    3544     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 18:09:45 +01:00
Denys Vlasenko
ef2366cdca nsenter: stop option parsing on 1st non-option
"nsenter ls -l" gives: invalid option -- 'l'

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-12 08:44:32 +01:00
Denys Vlasenko
030fe31760 libbb: make msleep() result in only one syscall instead of looping
function                                             old     new   delta
msleep                                                45      52      +7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-11 16:48:47 +01:00
Denys Vlasenko
56ee576507 mount: fix incorrect "success" exitcode if loop device setup fails
When mounting, in parallel, multiple loop devices (squashfs for the
submitter's case), the following behavior can be observed:

stat64(/path/to/image, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
openat(AT_FDCWD, /path/to/image, O_RDWR|O_LARGEFILE) = 3
openat(AT_FDCWD, /dev/loop-control, O_RDWR|O_LARGEFILE|O_CLOEXEC) = 4
ioctl(4, LOOP_CTL_GET_FREE)             = 12
close(4)                                = 0
openat(AT_FDCWD, /dev/loop12, O_RDWR|O_LARGEFILE) = 4
ioctl(4, LOOP_GET_STATUS64, {lo_offset=0, lo_number=12, lo_flags=LO_FLAGS_AUTOCLEAR, lo_file_name=/path/to/image, ...}) = 0
close(4)                                = 0
close(3)                                = 0
write(2, "mount: can't setup loop device\n", 31mount: can't setup loop device
) = 31
exit_group(0)                           = ?
+++ exited with 0 +++

The ioctl LOOP_CTL_GET_FREE has resulted in the same result for
a competing mount process. The subsequent ioctl LOOP_GET_STATUS64
fails, having succeeded for the competing mount process.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-09 20:56:43 +01:00
Denys Vlasenko
e7d853b4eb wget: do not ftruncate if -O- is used, closes 13351
function                                             old     new   delta
wget_main                                           2558    2571     +13
retrieve_file_data                                   612     621      +9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 22/0)               Total: 22 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-08 19:06:28 +01:00
Xabier Oneca
abaee4aada mkdtemp: proper error detection on mktemp
On error, mktemp returns an empty string, not NULL.

Signed-off-by: Xabier Oneca <xoneca@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-08 18:46:32 +01:00
Denys Vlasenko
c9b93cf290 tar: expand --help
function                                             old     new   delta
packed_usage                                       33486   33590    +104

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-08 16:46:41 +01:00
Denys Vlasenko
34c5115a7f mount: implement -o nosymfollow, remove bogus -o union
The (1 << 8) MS_ flag is MS_NOSYMFOLLOW, not MS_UNION.
As far as I see in git history of kernel and util-linux,
MS_UNION did not ever exist.
Why did it appear in our tree in 2009?...

function                                             old     new   delta
mount_option_str                                     379     385      +6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-06 21:56:22 +01:00
Denys Vlasenko
696c38ddca mount: add -o nostrictatime and -o [no]lazytime
function                                             old     new   delta
mount_option_str                                     345     379     +34
mount_options                                        176     188     +12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 46/0)               Total: 46 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-06 20:59:41 +01:00
Denys Vlasenko
b1eedfcfa1 mount: do not guess mount as NFS if "hostname:" contains slashes
function                                             old     new   delta
singlemount                                         1273    1295     +22

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-05 14:14:11 +01:00
Denys Vlasenko
758c2bd58e awk: add a test that $NF is empty
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-04 19:00:06 +01:00
Denys Vlasenko
f4f6e5144b libbb: exec_login_shell() - new function
function                                             old     new   delta
exec_login_shell                                       -      12     +12
sulogin_main                                         247     240      -7
login_main                                           960     953      -7
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 12/-14)             Total: -2 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 21:51:08 +01:00
Denys Vlasenko
0622416fec libbb: code shrink in exec_shell()
function                                             old     new   delta
exec_shell                                           129     120      -9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 21:39:57 +01:00
Denys Vlasenko
2075aa93e0 libbb: rename run_shell() to exec_shell()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 21:28:47 +01:00
Denys Vlasenko
b4f93f562d mount: do not guess bind mounts as nfs
Fails as follows:

$ mount -o bind /dev/disk/by-path/pci-0000:13:00.0-scsi-0:0:3:0 /dir
mount: bad address '/dev/disk/by-path/pci-0000'

function                                             old     new   delta
singlemount                                         1256    1273     +17

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 19:10:22 +01:00
Denys Vlasenko
665a659530 awk: FS regex matches only non-empty separators (gawk compat)
function                                             old     new   delta
awk_split                                            484     553     +69

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 19:07:31 +01:00
Denys Vlasenko
50ead33c45 login: log to syslog every bad password, not only 3rd
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-12-02 17:47:16 +01:00
Denys Vlasenko
6599e380ed mount: make filesystems[] array byte-aligned
text	   data	    bss	    dec	    hex	filename
1021120	    559	   5052	1026731	  faaab	busybox_old
1021092	    559	   5052	1026703	  faa8f	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 15:10:43 +01:00
Denys Vlasenko
6cc4962b60 decrease padding: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly
text	   data	    bss	    dec	    hex	filename
1021236	    559	   5052	1026847	  fab1f	busybox_old
1021120	    559	   5052	1026731	  faaab	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 14:58:02 +01:00
Denys Vlasenko
965b795b87 decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly
text	   data	    bss	    dec	    hex	filename
1021988	    559	   5052	1027599	  fae0f	busybox_old
1021236	    559	   5052	1026847	  fab1f	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 13:03:03 +01:00
Denys Vlasenko
2fba2f5bb9 unicode: relax array alignment for tables
text	   data	    bss	    dec	    hex	filename
1022075	    559	   5052	1027686	  fae66	busybox_old
1021988	    559	   5052	1027599	  fae0f	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 11:30:17 +01:00
Denys Vlasenko
33e955ab91 unicode: fix handling of short 1-4 char tables
function                                             old     new   delta
in_uint16_table                                       92     107     +15

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-30 11:18:00 +01:00
Denys Vlasenko
eb773054e4 libbb: code shrink
function                                             old     new   delta
generate_uuid                                        124     103     -21

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-29 14:24:14 +01:00
Denys Vlasenko
6a55b4e403 libbb: introduce and use msleep()
function                                             old     new   delta
msleep                                                 -      45     +45
watchdog_main                                        271     266      -5
common_traceroute_main                              3546    3530     -16
beep_main                                            277     248     -29
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/3 up/down: 45/-50)             Total: -5 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-29 12:40:25 +01:00
Denys Vlasenko
b86a9ed699 use write_str() functions where appropriate
function                                             old     new   delta
chat_main                                           1300    1295      -5
finalize_tty_attrs                                    80      70     -10
getty_main                                          1538    1519     -19
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-34)             Total: -34 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-29 11:49:37 +01:00
Denys Vlasenko
ec16c030bd libbb: introduce and use sleep1()
function                                             old     new   delta
sleep1                                                 -       9      +9
run_shutdown_and_kill_processes                       97      95      -2
restore_state_and_exit                               116     114      -2
reread_partition_table                                67      65      -2
flush_buffer_cache                                    80      78      -2
chat_main                                           1302    1300      -2
timeout_main                                         310     307      -3
telnet_main                                         1235    1232      -3
stop_handler                                          86      83      -3
process_action                                      1078    1075      -3
nbdclient_main                                      1185    1182      -3
init_main                                            789     786      -3
getty_main                                          1541    1538      -3
do_time                                              410     407      -3
runsv_main                                          1682    1677      -5
pause_and_low_level_reboot                            59      54      -5
inetd_main                                          1917    1911      -6
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/16 up/down: 9/-50)            Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2020-11-29 11:37:34 +01:00