Commit Graph

17298 Commits

Author SHA1 Message Date
Denys Vlasenko
40a327aeae udhcpc: send client-id option in DHCPDECLINE
function                                             old     new   delta
add_serverid_and_clientid_options                      -      46     +46
send_decline                                          88      83      -5
perform_release                                      200     159     -41
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 46/-46)              Total: 0 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 00:34:04 +02:00
Ron Yorston
52c4b7ac3b vi: initialise tabstop once not for each file
The default tabstop value should be set during early start up,
not reset for each new file.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14 20:58:17 +02:00
Ron Yorston
f7ed0e8ae0 vi: ':r' should insert text after current line
When no line number is specified ':read' should place the inserted
text after the current line, not before.

This used to be correct but was broken when commit 0c42a6b07
(vi: fix empty line range regression) revealed a bug in commit
7a8ceb4eb (vi: changes to line addresses for colon commands).

function                                             old     new   delta
colon                                               3960    3952      -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8)               Total: -8 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14 20:58:17 +02:00
Denys Vlasenko
e2b9215868 *: --help tweaks
function                                             old     new   delta
packed_usage                                       33589   33552     -37

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14 20:47:20 +02:00
Denys Vlasenko
643b308029 base32/64: accept -i "skip bad chars" option (currently in effect unconditionally)
function                                             old     new   delta
.rodata                                           103189  103190      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 23:58:17 +02:00
Denys Vlasenko
6f7b10cdab *: more --help tweaking
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 03:51:55 +02:00
Denys Vlasenko
1849285a20 *: more --help tweaks, mostly expanding ts --help
function                                             old     new   delta
packed_usage                                       33554   33596     +42

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 03:12:09 +02:00
Denys Vlasenko
6b6826f0b8 *: --help tweaks
function                                             old     new   delta
.rodata                                           103190  103189      -1
packed_usage                                       33590   33566     -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-25)             Total: -25 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 01:08:48 +02:00
Denys Vlasenko
aece2c5f0f bc: tweak overflow detection in a^b
function                                             old     new   delta
zbc_num_p                                            506     510      +4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 14:03:24 +02:00
Denys Vlasenko
e36c39a46d bc: code shrink: combine init() and copy() where we can
function                                             old     new   delta
bc_num_init_and_copy                                   -      27     +27
zxc_program_popResultAndCopyToVar                    495     483     -12
zxc_num_printNum                                     518     506     -12
zbc_num_p                                            518     506     -12
zxc_program_assign                                   357     341     -16
zbc_num_m                                            298     267     -31
zxc_vm_process                                      6498    6412     -86
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/6 up/down: 27/-169)          Total: -142 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 12:35:15 +02:00
Denys Vlasenko
e5958f7dda bc: fix for mul overflow in scale calculation in a^b
function                                             old     new   delta
zbc_num_p                                            516     518      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 12:19:20 +02:00
Sergey Ponomarev
4d983dcdde httpd_post_upload.cgi: use mktemp to avoid $RANDOM
The $RANDOM variable may be disabled on ash compilation but we can safelly use mktemp instead.

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 13:44:08 +02:00
Denys Vlasenko
4c4b02c290 ash: save Ron's patch from oblivion
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 13:01:25 +02:00
Denys Vlasenko
457825f77a shells: do not allow bare "read" in non-bash compat configs
On Sat, Feb 9, 2019 Cristian Ionescu-Idbohrn wrote:
    > In my case (at work), I have to watch and prevent people from doing
    > unportable things.  For me, that's a burden.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 12:08:43 +02:00
Ron Yorston
a1b0d3856d ash: add process substitution in bash-compatibility mode
Process substitution is a Korn shell feature that's also available
in bash and some other shells.  This patch implements process
substitution in ash when ASH_BASH_COMPAT is enabled.

function                                             old     new   delta
argstr                                              1386    1522    +136
strtodest                                              -      52     +52
readtoken1                                          3346    3392     +46
.rodata                                           183206  183250     +44
unwindredir                                            -      28     +28
cmdloop                                              365     372      +7
static.spclchars                                      10      12      +2
cmdputs                                              380     367     -13
exitreset                                             86      69     -17
evalcommand                                         1754    1737     -17
varvalue                                             675     634     -41
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 5/4 up/down: 315/-88)           Total: 227 bytes
   text	   data	    bss	    dec	    hex	filename
 953967	   4219	   1904	 960090	  ea65a	busybox_old
 954192	   4219	   1904	 960315	  ea73b	busybox_unstripped

v2: Replace array of file descriptors with a linked list.
    Include tests that were unaccountably omitted from v1.
v3: Update linked list code to the intended version.
v4: Change order of conditional code in cmdputs().
v5: Use existing popredir() mechanism to manage file descriptors.
v6: Rebase to latest version of BusyBox ash.  Reduce code churn.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 23:37:19 +02:00
Ján Sáreník
8c1f8aa016 run-parts: permit dot later in file name
See https://gist.github.com/andyshinn/3ae01fa13cb64c9d36e7#gistcomment-2044506

To test:

    mkdir /tmp/testrp
    printf "#!/bin/sh\necho test\n" > /tmp/testrp/test.sh
    chmod a+x /tmp/testrp/*
    busybox run-parts /tmp/testrp
    test
    mv /tmp/testrp/test.sh /tmp/testrp/.test.sh
    busybox run-parts /tmp/testrp
    # no output

function                                             old     new   delta
act                                                  190     200     +10

Signed-off-by: Ján Sáreník <jajomojo@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 18:40:58 +02:00
Paul Spooren
947a22b332 build system: use SOURCE_DATE_EPOCH for timestamp if available
The SOURCE_DATE_EPOCH is an effort of the Reproducible Builds
organization to make timestamps/build dates in compiled tools
deterministic over several repetitive builds.

Busybox shows by default the build date timestamp which changes whenever
compiled. To have a reasonable accurate build date while staying
reproducible, it's possible to use the *date of last source
modification* rather than the current time and date.

Further information on SOURCE_DATE_EPOCH are available online [1].

This patch modifies `confdata.c` so that the content of the
SOURCE_DATE_EPOCH env variable is used as timestamp.

To be independent of different timezones between builds, whenever
SOURCE_DATE_EPOCH is defined the GMT time is used.

[1]: https://reproducible-builds.org/docs/source-date-epoch/

Signed-off-by: Paul Spooren <mail@aparcar.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 18:13:00 +02:00
Eicke Herbertz
1b30c63dfd shell: also do word splitting when -d DELIM is used
The original commit 3bef5d89b0 introduced an additional check
for an unset `opt_d` before doing word splitting. I'm unsure
why it's there in the first place, but the commit message also
describes a different behaviour than what -d actually does in
bash, while the code mostly does the right thing.

`opt_d` sets the line delimiter for read to stop reading and
should not affect word splitting.

Testcase:
$ echo qwe rty | { read -d Z a b; echo a:$a b:$b; }
a:qwe b:rty

function                                             old     new   delta
shell_builtin_read                                  1314    1304     -10

Signed-off-by: Eicke Herbertz <wolletd@posteo.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 18:06:47 +02:00
Khem Raj
c0f8113f86 gen_build_files: Use C locale when calling sed on globbed files
When include/applets.h is re-generated

it generates code macros in include/applets.h e.g.

IF_XZCAT(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
...
IF_CHVT(APPLET_NOEXEC(chvt, chvt, BB_DIR_USR_BIN, BB_SUID_DROP, chvt))
...

sed is used to process source files like below to feed into this header
generation

sed -n 's@^//applet:@@p' "$srctree"/*/*.c "$srctree"/*/*/*.c

this means we let shell decide the order of .c files being fed into sed
tool, applets.h has code snippets thats generated out of code fragments
from these .c files and the order of the generated code depends on the
order of .c files being fed to sed and then piped to generate tool, even
though the generated code is logically same, it does result in re-odered
code in applets.h based on which shell was used during build on exact busybox
sources since sort order is different based on chosen locale and also default shell
being bash or dash

This sets the environment variable LC_ALL to the value C, which will
enforce bytewise sorting, irrespective of the shell

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 17:36:19 +02:00
Denys Vlasenko
274ce6cce1 udhcpc: revert deprecation message for -V
"-x vendor:VENDOR" will not be a trivial replacement of it:

(1) by default, we do send a vendor string ("udhcp BB_VER"),
will need code to preserve the default.

(2) -V '' currently disables vendor string. -x vendor:''
would not easily achieve that: it adds no option at all
(string options can't be empty), and default (1) would trigger.
To avoid that, we will need yet another hack to detect
-x vendor:'' and interpret that as "no vendor string at all".

IOW: removing -V is likely to increase code size, not decrease.

function                                             old     new   delta
udhcpc_main                                         2563    2555      -8
.rodata                                           103251  103198     -53
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-61)             Total: -61 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 17:06:35 +02:00
Denys Vlasenko
5a72b0cd74 runsv: code shrink: use single handler function for SIGTERM and SIGCHLD
function                                             old     new   delta
s_chld_term                                            -      36     +36
runsv_main                                          1677    1662     -15
s_child                                               22       -     -22
s_term                                                29       -     -29
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 36/-66)            Total: -30 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 16:36:21 +02:00
Denys Vlasenko
5dadd497ff runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up
While at it, rename bb_signals_recursive_norestart() to bb_signals_norestart():
"recursive" was implying we are setting SA_NODEFER allowing signal handler
to be entered recursively, but we do not do that.

function                                             old     new   delta
bb_signals_norestart                                   -      70     +70
startservice                                         380     394     +14
bb_signals_recursive_norestart                        70       -     -70
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 84/-70)             Total: 14 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 16:20:05 +02:00
Denys Vlasenko
d3e1090308 tcp/udpsvd: robustify SIGCHLD handling
function                                             old     new   delta
if_verbose_print_connection_status                     -      40     +40
tcpudpsvd_main                                      1798    1794      -4
connection_status                                     31       -     -31
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 40/-35)              Total: 5 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 15:24:04 +02:00
Denys Vlasenko
ac444861b0 svlogd: if processor's stdin can not be opened, do not try ad infinitum
function                                             old     new   delta
processorstart                                       426     423      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 14:51:53 +02:00
Denys Vlasenko
08ea7be73b ls: trim --help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 10:36:17 +02:00
Denys Vlasenko
df0383c624 libbb: correct the name of is_TERM_dumb()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 08:33:03 +02:00
Sören Tempel
3d9c649158 ls: don't output any colors with TERM=dumb
The TERM variable is usually set to "dumb" to indicate that the terminal
does not support any ANSI escape sequences. Presently, ls does not honor
this variable and outputs colors anyhow which results in unreadable
output, unless the user explicitly disables colors using `ls
--color=never`. The rational behind this change is that ls should "just
work" by default, even on dumb terminals.

For this reason, this patch adds a check which additionally consults the
TERM variable before printing any colors. This is analogous to the
existing check for ensuring that standard output is a tty. As such,
colors can still be forced with `--color=force`, even if TERM is set to
dumb.

function                                             old     new   delta
is_TERM_dumb                                           -      40     +40
ls_main                                              579     598     +19
.rodata                                           103246  103251      +5
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/0 up/down: 64/0)               Total: 64 bytes

Signed-off-by: Sören Tempel <soeren+git@soeren-tempel.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-04 22:39:10 +02:00
Seth David Schoen
5a3d3b8055 udhcpd: don't hardcode treating .0 and .255 specially
Even following current Internet standards, it can be perfectly
legitimate to issue IPv4 addresses that end in .0 or .255 via DHCP --
this can happen whenever the network is larger than /8.  For example,
10.3.4.0 and 10.3.4.255 are legitimate host addresses in 10/8 or 10.3/16.
(We also want to be able to issue .0 addresses in smaller networks
following our proposed kernel patch and standards changes.)

This behavior is already fully controllable by the user, simply by
setting start_ip and end_ip correctly.  Users who don't want to issue
.0 or .255 should set start_ip greater than .0 or end_ip less than .255
and udhcpd will already respect these bounds.  (This is also the case
for other DHCP servers -- the recommended example configurations will
default to a lower bound starting with .1 or some other value, which is
typically appropriate, but the user is still allowed to change this to
.0 -- or to a range that overlaps a .0 or .255 address -- if so desired.)

Signed-off-by: Seth David Schoen <schoen@loyalty.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 20:30:13 +02:00
Denys Vlasenko
b1a2762ecf cpio: fix "cpio -d -p A/B/C"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 20:26:30 +02:00
Paul Spooren
327b9f8848 nslookup: mention QUERY_TYPE SRV
SRV lookups are supported since "6b4960155 nslookup: implement support
for SRV records" and should therefore be mentioned as a possible
QUERY_TYPE in the help message.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:23:52 +02:00
Denys Vlasenko
ecaf8e8d08 udhcpc[6]: on SIGUSR1, do not go from rebind to renew state
function                                             old     new   delta
udhcpc6_main                                        2628    2636      +8
udhcpc_main                                         2556    2563      +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 15/0)               Total: 15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:22:35 +02:00
Denys Vlasenko
f6def87a2e udhcpc: code shrink, rename functions, no logic changes
function                                             old     new   delta
d4_run_script                                          -     739    +739
d4_recv_raw_packet                                     -     484    +484
d4_run_script_deconfig                                 -      12     +12
perform_release                                      207     200      -7
udhcpc_main                                         2598    2556     -42
udhcp_recv_raw_packet                                484       -    -484
udhcp_run_script                                     739       -    -739
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/2 up/down: 1235/-1272)        Total: -37 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:14:04 +02:00
Denys Vlasenko
2f1d13d56a examples/udhcp/udhcpd.conf: update
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 12:07:56 +02:00
Denys Vlasenko
0d15d5bcca udhcp: shrink arpping()
function                                             old     new   delta
.rodata                                           103249  103246      -3
arpping                                              437     420     -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-20)             Total: -20 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 11:32:40 +02:00
Denys Vlasenko
774020c224 udhcp: convert log1s() macro to function
function                                             old     new   delta
log1s                                                  -      15     +15
udhcp_recv_kernel_packet                             134     125      -9
d6_recv_kernel_packet                                118     109      -9
change_listen_mode                                   280     271      -9
send_packet                                          162     141     -21
udhcpc_main                                         2625    2598     -27
udhcpc6_main                                        2655    2628     -27
d6_recv_raw_packet                                   255     216     -39
udhcp_recv_raw_packet                                562     484     -78
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/8 up/down: 15/-219)          Total: -204 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 11:12:20 +02:00
Denys Vlasenko
1c7253726f udhcpc[6]: when renewing, send 1 packet (not 3), on failure go back to BOUND
This restores old behavior where we slept for 1/2 of lease, then tried renewing,
thel slept for 1/4 and tried again, etc. But now we will NOT be listening to
all packets for 1/2 of lease time, processing (rejecting) everyone else's
DHCP traffic.
We'll go back to bound state, where we have no listening socket at all.

function                                             old     new   delta
udhcpc6_main                                        2600    2655     +55
udhcpc_main                                         2608    2625     +17
.rodata                                           103250  103249      -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 72/-1)              Total: 71 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 10:22:28 +02:00
Denys Vlasenko
01daecca1d udhcpc[6]: remove superfluous "created raw socket" log message
function                                             old     new   delta
change_listen_mode                                   299     280     -19
.rodata                                           103272  103250     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-41)             Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 20:23:43 +02:00
Denys Vlasenko
4bbc391c7f udhcpc: improve logs - show offer as it is received
function                                             old     new   delta
udhcpc_main                                         2566    2608     +42
.rodata                                           103248  103272     +24
udhcp_recv_raw_packet                                559     562      +3
d6_recv_raw_packet                                   254     255      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 70/0)               Total: 70 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 19:51:52 +02:00
Denys Vlasenko
0ae53451cf udhcpc[6]: close listening socket more eagerly (e.g. across script runs)
function                                             old     new   delta
udhcpc6_main                                        2571    2600     +29
udhcpc_main                                         2588    2566     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 29/-22)              Total: 7 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 17:53:09 +02:00
Denys Vlasenko
949e9621d1 udhcpc: get rid of client_data.fqdn field
function                                             old     new   delta
attach_option                                        253     276     +23
udhcpc_main                                         2582    2588      +6
udhcpc6_main                                        2579    2571      -8
add_client_options                                   175     158     -17
udhcp_insert_new_option                              169     138     -31
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/3 up/down: 29/-56)            Total: -27 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 15:51:50 +02:00
Denys Vlasenko
698cdef538 udhcpc: remove deprecated -H/-h HOSTNAME options (9 years), deprecate -V VENDOR
function                                             old     new   delta
udhcpc_main                                         2563    2582     +19
dhcp_option_strings                                  294     301      +7
dhcp_optflags                                         80      82      +2
.rodata                                           103250  103248      -2
udhcpc_longopts                                      252     241     -11
add_client_options                                   209     175     -34
alloc_dhcp_option                                     59       -     -59
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 3/3 up/down: 28/-106)           Total: -78 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 15:07:46 +02:00
Denys Vlasenko
265fcddd08 udhcpc: include client-id option in DECLINEs, even if it's a custom -x 61:HEX option
client_data.vendorclass, .hostname and .fqdn probably need the same treatment:
just insert them into the list of -x opts, get rid of

        if (client_data.vendorclass)
                udhcp_add_binary_option(packet, client_data.vendorclass);
        if (client_data.hostname)
                udhcp_add_binary_option(packet, client_data.hostname);
        if (client_data.fqdn)
                udhcp_add_binary_option(packet, client_data.fqdn);

function                                             old     new   delta
udhcp_insert_new_option                                -     166    +166
perform_release                                      171     207     +36
perform_d6_release                                   227     259     +32
udhcpc6_main                                        2558    2580     +22
init_d6_packet                                       103      84     -19
udhcpc_main                                         2585    2564     -21
attach_option                                        397     253    -144
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 256/-184)           Total: 72 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 14:07:26 +02:00
Ron Yorston
9659a8db1d vi: remove autoindent from otherwise empty lines
Lines that have no content apart from automatic indentation should
be treated as empty when the user hits return or ESC.

The implementation uses the global variable 'indentcol'.  Usually
this is zero.  It can also be -1 to indicate an 'O' (open above)
command, replacing the overloading of the tabstop option bit.

A value greater than zero indicates that the current line has
been autoindented to the given column (or that the autoindent has
been adjusted with ctrl-D).  Any other change to the line resets
'indentcol' to zero.

Replace strspn() with ident_len().  The latter handles the unlikely
case that it's called on the last line of a file which doesn't have
a terminating newline.

function                                             old     new   delta
char_insert                                          741     912    +171
indent_len                                             -      42     +42
do_cmd                                              4781    4785      +4
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/0 up/down: 217/0)             Total: 217 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 06:29:34 +02:00
Ron Yorston
16e2fa9049 vi: make autoindent respect expandtab setting
Autoindent took a copy of the indent from a neighbouring line, which
may not have respected the expandtab setting.

Determine the target column and construct a suitable indent.  This
will consist entirely of spaces if expandtab is enabled or an
efficient combination of tabs and spaces otherwise.

function                                             old     new   delta
char_insert                                          719     741     +22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 22/0)               Total: 22 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 06:16:36 +02:00
Ron Yorston
d95f89ec57 vi: make cursor positioning more vi compatible
Commit 24effc7a3 (vi: cursor positioning after whole-line 'y')
tried to save a few bytes by treating whole-line deletion the
same as whole-line yank.  If the deletion removed the last lines
of the file the cursor was left beyond the end of the file.
Revert the part of the commit related to whole-line deletion.

Position the cursor on the first non-whitespace character of the
line when whole lines are 'put'.

function                                             old     new   delta
do_cmd                                              4759    4781     +22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 22/0)               Total: 22 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 06:16:36 +02:00
Denys Vlasenko
f193aeac1f tail: do not lose the tail of old file if new file (-F) is detected
function                                             old     new   delta
tail_main                                           1619    1645     +26
.rodata                                           103246  103250      +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 30/0)               Total: 30 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 05:17:44 +02:00
Denys Vlasenko
e0ea125ce2 tail: fix typo in variable name
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 04:11:40 +02:00
Denys Vlasenko
b9258b86a7 head,tail: trim --help text
function                                             old     new   delta
packed_usage                                       33598   33560     -38

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 04:01:10 +02:00
Denys Vlasenko
687f41f10b udhcpc[6]: fix "untangle timeout and remaining lease" fallout
As reported in bug 13776, before this fix the renew never times out.

function                                             old     new   delta
udhcpc_main                                         2541    2585     +44
udhcpc6_main                                        2567    2558      -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 44/-9)              Total: 35 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-01 00:19:03 +02:00
Mario Abajo
7de0ab21d9 login: permit change expired password wit PAM
Signed-off-by: Mario Abajo <marioabajo@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-07 12:28:00 +02:00