aboutsummaryrefslogtreecommitdiff
path: root/coreutils/cut.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-12-21cut: code shrinkbusyboxDenys Vlasenko1-6/+5
move "linenum" manipulations to the one place where it is used. function old new delta cut_main 1373 1360 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-21cut: code shrinkDenys Vlasenko1-9/+13
This change eliminates one temporary: - if (dcount++ < cut_list[cl_pos].startpos) + dcount++; + if (dcount <= cut_list[cl_pos].startpos) function old new delta cut_main 1402 1373 -29 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-20cut: fix up -D/-s behavior with -FDenys Vlasenko2-5/+36
function old new delta cut_main 1388 1402 +14 packed_usage 34934 34933 -1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-1) Total: 13 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-20cut: remove unnecessary initialization of regmatch_tDenys Vlasenko1-1/+1
function old new delta cut_main 1404 1388 -16 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16cut: shorten error messages on bad syntax even moreDenys Vlasenko1-10/+6
$ cut -s -b3 cut: -s requires -f or -F $ cut -d@ -b3 cut: -d DELIM requires -f or -F function old new delta static.requires_f - 19 +19 static._op_on_field 32 - -32 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 0/0 up/down: 19/-32) Total: -13 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16cut: shorten error messages on bad syntaxDenys Vlasenko1-3/+3
We don't need to mimic GNU cut error messages. $ cut -d@ -b3 cut: -d DELIM makes sense only with -f or -F $ cut -s -b3 cut: -s makes sense only with -f or -F function old new delta static._op_on_field 31 32 +1 .rodata 105659 105598 -61 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 1/-61) Total: -60 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16cut: terminate cut_list[] so that we don't need "size of the array" variableDenys Vlasenko1-20/+25
function old new delta cut_main 1410 1404 -6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-16cut: we can't get empty cut_list[], remove the check for thatDenys Vlasenko1-8/+11
function old new delta .rodata 105685 105659 -26 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-15cut: disallow -f '' and -f '-'Denys Vlasenko1-15/+19
function old new delta cut_main 1391 1410 +19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-14cut: fix -F n-m to match toyboxDenys Vlasenko2-3/+28
function old new delta cut_main 1339 1391 +52 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: simplify getopt32 codeDenys Vlasenko1-11/+8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: "it's legal to pass an empty list" seems to be untrueDenys Vlasenko1-46/+44
function old new delta cut_main 1344 1339 -5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: whitespace fixesDenys Vlasenko1-3/+3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: tweak commentsDenys Vlasenko1-3/+2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: fix handling of -d ''Denys Vlasenko2-1/+13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-13cut: prevent infinite loop if -F REGEX matches empty delimiterDenys Vlasenko1-1/+3
function old new delta cut_main 1339 1348 +9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-11cut: tweak --helpDenys Vlasenko2-11/+10
function old new delta packed_usage 34901 34934 +33 cut_main 1353 1339 -14 .rodata 105724 105685 -39 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 33/-53) Total: -20 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: fix -d$'\n' --output-delimiter=@@ behaviorDenys Vlasenko2-7/+53
function old new delta cut_main 1261 1353 +92 packed_usage 34925 34901 -24 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 92/-24) Total: 68 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: implement --output-delimiterDenys Vlasenko2-10/+49
function old new delta cut_main 1204 1261 +57 static.cut_longopts - 20 +20 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/0 up/down: 77/0) Total: 77 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: with -F disabled in .config, don't show it in --helpDenys Vlasenko1-5/+13
function old new delta packed_usage 34897 34849 -48 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: comment out code which seems to be not neededDenys Vlasenko1-7/+7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: fix "echo 1.2 | cut -d. -f1,3" (print "1", not "1.")Denys Vlasenko2-7/+27
function old new delta cut_main 1228 1201 -27 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: with -F, do not regcomp() pattern for every fileDenys Vlasenko1-18/+24
function old new delta cut_main 1218 1228 +10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: rename "cut_lists" to "cut_list"Denys Vlasenko1-19/+20
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: rename some variables to hopefully better namesDenys Vlasenko1-13/+19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: "orig_line" is redundant, remove itDenys Vlasenko1-2/+1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: allocate "printed" only if OPT_CHAR or OPT_BYTEDenys Vlasenko1-3/+4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: localize 'spos' variable, convert !NUMVAR to NUMVAR == 0Denys Vlasenko1-5/+6
This imporves readability Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: simplify OPT_ names, eliminate one variableDenys Vlasenko1-24/+27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: improve detection of invalid rangesRon Yorston2-12/+12
Commit 0068ce2fa (cut: add toybox-compatible options -O OUTSEP, -D, -F LIST) added detection of reversed ranges. Further improvements are possible. - The test for reversed ranges compared the start after it had been decremented with the end before decrement. It thus missed ranges of the form 2-1. - Zero isn't a valid start value for a range. (Nor is it a valid end value, but that's caught by the test for a reversed range.) - The code if (!*ltok) e = INT_MAX; duplicates a check that's already been made. - Display the actual range in the error message to make it easier to find which range was at fault. function old new delta .rodata 100273 100287 +14 cut_main 1239 1237 -2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-2) Total: 12 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-10cut: fix "-s" flag to omit blank linesColin McAllister2-5/+24
Using cut with the delimiter flag ("-d") with the "-s" flag to only output lines containing the delimiter will print blank lines. This is deviant behavior from cut provided by GNU Coreutils. Blank lines should be omitted if "-s" is used with "-d". This change introduces a somewhat naiive, yet efficient solution, where line length is checked before looping though bytes. If line length is zero and the "-s" flag is used, the code will jump to parsing the next line to avoid printing a newline character. function old new delta cut_main 1196 1185 -11 Signed-off-by: Colin McAllister <colinmca242@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-09hexdump: fix regression with -n4 -e '"%u"'Natanael Copa2-2/+10
Fix bug introduced in busybox 1.37.0 that broke kernel builds. Fixes commit e2287f99fe6f (od: for !DESKTOP, match output more closely to GNU coreutils 9.1, implement -s) function old new delta rewrite 967 976 +9 Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-09libbb: tidy argument checks in getopt32()Ron Yorston1-8/+5
When getopt32() has complementary options it's possible to specify the minimum and maximum number of arguments allowed. Checking these values was inconsistent: - '?' correctly checked that it was followed by a digit but set the otherwise unused spec_flgs variable on error. - '=' failed to check that it was followed by a digit. function old new delta vgetopt32 1307 1319 +12 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-09chpst: fix error check of nice(2) callChristian Franke1-1/+2
Check errno instead of return value because -1 is a valid return value also on success. Signed-off-by: Christian Franke <christian.franke@t-online.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-12-09hush: fix G.argv0_for_re_execing to avoid endless loopHajime Tazaki1-0/+3
When the busybox is used as /sbin/init and the inittab file contains below: ::respawn:-/bin/sh /sbin/init spawns hush for the first time with the argv[0] contains '-', and hush treats it as login shell. Then it reads /etc/profile and if the file contains the command execution like below, it invokes hush as login shell because the argv[0] argument is still '-/bin/sh' and reads /etc/profile again. This will last until some failure (e.g., memory failure) happens. [ "$(id -u)" -eq 0 ] && PS1="${PS1}# " || PS1="${PS1}\$ " This commit fixes this issues by adding an offset (+1) to the G.argv0_for_re_execing variable. This issue happens on our out-of-tree UML (use mode linux) with nommu configuration. Link: https://lore.kernel.org/all/cover.1731290567.git.thehajime@gmail.com/ Signed-off-by: Hajime Tazaki <thehajime@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-08hexdump: accept hex numbers in -n, closes 16195Denys Vlasenko1-3/+8
function old new delta hexdump_main 366 383 +17 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-08libbb: modify find_executable() to not temporarily write to PATHDenys Vlasenko4-54/+48
This allows to simplify "which" applet code function old new delta find_executable 93 111 +18 which_main 191 177 -14 builtin_source 316 294 -22 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 18/-36) Total: -18 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07hush: fix "type ./cat" and "command -v ./cat" to not scan PATHDenys Vlasenko1-13/+33
function old new delta find_executable_in_PATH - 67 +67 if_command_vV_print_and_exit 114 116 +2 .rodata 105712 105710 -2 builtin_type 137 128 -9 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/2 up/down: 69/-11) Total: 58 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07hush: make "test -x" use cached groupinfoDenys Vlasenko1-7/+22
While at it, correct "type" to skip non-executable files in PATH function old new delta builtin_source 211 316 +105 builtin_test 10 32 +22 hush_main 1150 1170 +20 builtin_type 122 137 +15 if_command_vV_print_and_exit 120 114 -6 find_in_path 131 - -131 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 4/1 up/down: 162/-137) Total: 25 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07test: -x can return 0/1 early if all X bits are the sameDenys Vlasenko1-10/+10
function old new delta nexpr 702 725 +23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07ash: cache more of uid/gid syscallsDenys Vlasenko4-10/+30
Testcase: setuidgid 1:1 strace ash -c 'test -x TODO; test -x TODO; echo $?' should show that second "test -x" does not query ids again. function old new delta ash_main 1236 1256 +20 get_cached_euid - 19 +19 get_cached_egid - 19 +19 test_main 56 72 +16 test_exec 119 135 +16 is_in_supplementary_groups 52 57 +5 nexpr 718 702 -16 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 4/1 up/down: 95/-16) Total: 79 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07ash: make "test -x" use cached groupinfoDenys Vlasenko3-6/+19
function old new delta test_main2 - 407 +407 testcmd 10 23 +13 test_main 418 56 -362 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/1 up/down: 420/-362) Total: 58 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07libbb: simplify parameter passing in is_in_supplementary_groups()Denys Vlasenko4-20/+34
function old new delta is_in_supplementary_groups 54 52 -2 nexpr 721 718 -3 test_exec 125 119 -6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-11) Total: -11 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07ash: command -v CMD must skip (go to next path) when CMD exists, but is not ↵Denys Vlasenko1-3/+51
executable Upstream commit: Date: Fri, 5 Apr 2024 17:55:46 +0800 exec: Check executable bit when searching path Andrej Shadura <andrew.shadura@collabora.co.uk> wrote: ... > https://bugs.debian.org/874264 > -------- Forwarded Message -------- > Subject: dash: 'command -v' mistakenly returns a shell script whose > executable is not set > Date: Mon, 04 Sep 2017 10:45:48 -0400 > From: Norman Ramsey <nr@cs.tufts.edu> > To: Debian Bug Tracking System <submit@bugs.debian.org> ... > I tracked a build bug in s-nail to a problem with dash. Symptom: > building s-nail tries to run /home/nr/bin/clang, a script whose > executable bit is not set. We tracked the problem to the result of > running `command -v clang` with /bin/sh: ... This is inherited from NetBSD. There is even a commented-out block of code that tried to fix this. Anyway, we now have faccessat so we can simply use it. function old new delta test_exec - 125 +125 find_command 911 918 +7 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/0 up/down: 132/0) Total: 132 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-07libbb: move is_in_supplementary_groups() from test to libbbDenys Vlasenko3-19/+26
function old new delta is_in_supplementary_groups - 54 +54 nexpr 766 721 -45 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 54/-45) Total: 9 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-06test: Invert return value of test_eaccess and rename it to test_st_modeDenys Vlasenko1-16/+11
From dash: From: herbert <herbert@gondor.apana.org.au> Date: Wed, 2 Mar 2005 22:14:54 +1100 Invert return value of test_eaccess and rename it to test_st_mode. function old new delta nexpr 800 766 -34 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-06test: code shrinkDenys Vlasenko1-1/+1
function old new delta nexpr 813 800 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-06networking/libiproute/iplink.c: fix support for older kernelsThomas Devoogdt1-0/+21
- The CAN netlink interface has been added in Linux v2.6.31 with only 3 options [1]: CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */ CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */ CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */ So define the other options. - IFLA_CAN_TERMINATION has been added in Linux 4.11 [2], define it for older kernels. [1] https://github.com/torvalds/linux/blob/v2.6.31/include/linux/can/netlink.h#L80-L82 [2] https://github.com/torvalds/linux/commit/12a6075cabc0d9ffbc0366b44daa22f278606312 Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-10-06libbb: fix sha1 on !x86 if CONFIG_SHA1_HWACCEL=yRudi Heitbaum1-0/+2
fixes non i386 and x86 builds libbb/hash_md5_sha.c: In function 'sha1_end': libbb/hash_md5_sha.c:1316:35: error: 'sha1_process_block64_shaNI' undeclared 1316 | || ctx->process_block == sha1_process_block64_shaNI Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2024-09-28hush: whitespace and comment fixesDenys Vlasenko1-43/+27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>