summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * vi: allow repetition count for paragraph motionRon Yorston2021-03-291-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | The paragraph motion commands '{' and '}' should accept a count. function old new delta do_cmd 5054 5071 +17 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 17/0) Total: 17 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: allow motion count for change/delete/yank/shiftRon Yorston2021-03-291-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motion that determines the range of a change, delete, yank or shift operation can have its own count. Thus the commands '5dd' and 'd5d' are equivalent: both delete 5 lines. When the command itself also has a count the two values are multiplied. Thus the command '2d3w' deletes 6 words and '2D3G' deletes from the current line to line 6. (When dealing with structured data it might make sense to think in units of 3 words so '2d3w' is deleting 2 such units. It doesn't seem quite as sensible to express 'delete from current line to line 6' as '2D3G' but vi permits it.) function old new delta get_motion_char - 68 +68 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/0 up/down: 68/0) Total: 68 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: support more commands for range selectionRon Yorston2021-03-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Add 'F', 'T' and '|' as commands that can be used to specify a range for change/delete/yank operations. function old new delta .rodata 105129 105135 +6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 6/0) Total: 6 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: improvements to character search within lineRon Yorston2021-03-291-41/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Use a common routine to handle all commands to search for a character in a line. - When searching for the nth occurrence of a character don't move the cursor if fewer than n occurrences are present. - Add support for the 'T' command, search backwards for character after next occurrence of given character. function old new delta do_cmd 4861 4805 -56 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-56) Total: -56 bytes v2: Add parentheses to avoid searches continuing past end of line. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: remember cursor column during vertical motionRon Yorston2021-03-291-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the 'j'/'k' commands or up/down arrow keys are used to move the cursor vertically 'vi' remembers the original cursor column and positions the cursor there if possible. Also, if the '$' command has been used to position the cursor at the end of a line vertical movements keep the cursor at the end of the line. Make BusyBox 'vi' do the same. function old new delta refresh 674 694 +20 do_cmd 4853 4861 +8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 28/0) Total: 28 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: 'G'/'M' commands move to first visible characterRon Yorston2021-03-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'G' command with no target (meaning 'go to last line') should position the cursor on the first visible character of the line, as it already does in other cases. The 'M' command should position the cursor on the first visible character (as 'H' and 'L' already do). function old new delta do_cmd 4842 4853 +11 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 11/0) Total: 11 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: don't overwrite existing fileRon Yorston2021-03-291-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the name of the file being written doesn't match the current filename and the output file already exists vi should issue a warning and not overwrite the file. Because the test only compares the file names it's somewhat over- protective. If the current file name is 'my_text' and the user tries to save to './my_text' they'll be prevented from doing so. function old new delta colon 3092 3151 +59 .rodata 105118 105146 +28 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 87/0) Total: 87 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: make buffer handling more vi-likeRon Yorston2021-03-291-89/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vi places text affected by change/delete/yank operations into a buffer. The contents of such buffers can be restored with the put commands, 'p' or 'P'. These behave differently depending on whether the buffer contains whole lines or partial lines. For whole lines the text is copied into the file on the line before (P) or after (p) the current line. For partial lines the text is copied before or after the current cursor position. Whether an operation results in whole or partial lines depends on the command used. BusyBox vi treats any buffer with a newline as though it contained whole lines. This is incorrect. Deleting multiple words across a line boundary results in a buffer with a newline but not having whole lines. Rework how buffers are handled to behave more like vi. function old new delta static.text_yank 79 99 +20 colon 3092 3097 +5 edit_file 885 887 +2 yank_delete 127 112 -15 .rodata 105139 105101 -38 find_range 514 467 -47 do_cmd 5088 4842 -246 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/4 up/down: 27/-346) Total: -319 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: code shrinkRon Yorston2021-03-291-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I was puzzled by code in find_range() which handles forward word movement. It included a test to see if we're at the start of a word. Since these are forward word movements surely we'd expect to be at the start of a word? In fact, the test was intended to fix a problem with changes to the last word in a file, as discussed in the thread starting here: http://lists.busybox.net/pipermail/busybox/2004-January/044552.html The code can be simplified by testing directly for end of file instead of indirectly for not being at the start of a word. Since trailing whitespace is now handled in do_cmd() the code to back up off a newline is no longer required. function old new delta find_range 619 514 -105 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-105) Total: -105 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: fix word operations across line boundariesRon Yorston2021-03-291-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 4b49422a0 (vi: fix changes to word at end of line. Closes 11796) fixed a problem where an operation on a word at the end of a line followed by a line starting with whitespace incorrectly joined the lines. However it also broke the case where operating on multiple words across a line boundary *should* join the lines. Fix this by detecting when trailing whitepace in a word operation includes a newline. Whitespace beyond the newline is excluded from consideration. function old new delta do_cmd 5083 5088 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 5/0) Total: 5 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ntpd: code shrink (force not-inlining, stop returning structs)Denys Vlasenko2021-03-261-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta d_to_sfp - 133 +133 lfp_to_d - 84 +84 sfp_to_d - 78 +78 d_to_lfp 141 137 -4 .rodata 103182 103174 -8 recv_and_process_peer_pkt 2380 2173 -207 recv_and_process_client_pkt 706 493 -213 ------------------------------------------------------------------------------ (add/remove: 3/0 grow/shrink: 0/4 up/down: 295/-432) Total: -137 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * timeout,top,watch,ping: parse NN.N fractional duration in locales with other ↵Denys Vlasenko2021-03-236-6/+16
| | | | | | | | | | | | separators Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * resume: write offset in /sys/power/resume_offsetDenys Vlasenko2021-03-201-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing this the kernel will hibernate and resume successfully from a swap file. Stop writing offset to /sys/power/resume, as this is not a parameter the kernel takes from this input. (Change added by Sven Mueller) function old new delta resume_main 522 561 +39 .rodata 103175 103182 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 46/0) Total: 46 bytes Signed-off-by: Jordi Pujol Palomer <jordipujolp@gmail.com> Signed-off-by: Sven Mueller <sven.mueller72+busybox@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * login: implement LOGIN_TIMEOUTDenys Vlasenko2021-03-191-3/+10
| | | | | | | | | | | | | | | | | | | | | | function old new delta packed_usage 33559 33598 +39 login_main 953 986 +33 .rodata 103161 103175 +14 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 86/0) Total: 86 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * udhcpc: ignore zero-length DHCP options, take 2Denys Vlasenko2021-03-161-3/+3
| | | | | | | | | | | | advance the optionptr by two bytes, not one Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * udhcpc: ignore zero-length DHCP optionsRussell Senior2021-03-161-8/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Discovered that the DHCP server on a TrendNet router (unknown model) provides a zero-length option 12 (Host Name) in the DHCP ACK message. This has the effect of causing udhcpc to drop the rest of the options, including option 51 (IP Address Lease Time), 3 (Router), and 6 (Domain Name Server), most importantly leaving the OpenWrt device with no default gateway. The TrendNet behavior violates RFC 2132, which in Section 3.14 declares that option 12 has a minimum length of 1 octet. It is perhaps not a cosmic coincidence that I found this behavior on Pi Day. This patch allows zero length options without bailing out, by simply skipping them. function old new delta udhcp_scan_options 183 172 -11 Signed-off-by: Russell Senior <russell@personaltelco.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * echo: special case "echo --help": it should not show help textDenys Vlasenko2021-03-151-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | While at it, fix "busybox --help echo" and other special applets to still print the help text. function old new delta run_applet_and_exit 732 761 +29 show_usage_if_dash_dash_help 70 78 +8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 37/0) Total: 37 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * decompress_gunzip: Fix DoS if gzip is corruptSamuel Sapalski2021-03-121-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On certain corrupt gzip files, huft_build will set the error bit on the result pointer. If afterwards abort_unzip is called huft_free might run into a segmentation fault or an invalid pointer to free(p). In order to mitigate this, we check in huft_free if the error bit is set and clear it before the linked list is freed. Signed-off-by: Samuel Sapalski <samuel.sapalski@nokia.com> Signed-off-by: Peter Kaestle <peter.kaestle@nokia.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: make LINENO selectable without BASH-COMPATDenys Vlasenko2021-03-101-5/+5
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * wget: new option FEATURE_WGET_FTP to enable/disable FTPSergey Ponomarev2021-03-091-15/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a separate option FTPS_SUPPORTED instead of not obvious ENABLE_FEATURE_WGET_HTTPS. function old new delta P_FTP 4 - -4 P_FTPS 5 - -5 reset_beg_range_to_zero 41 - -41 parse_url 431 366 -65 parse_pasv_epsv 154 - -154 .rodata 115566 115408 -158 ftpcmd 204 - -204 spawn_ssl_client 291 - -291 wget_main 2998 2664 -334 ------------------------------------------------------------------------------ (add/remove: 0/7 grow/shrink: 0/3 up/down: 0/-1256) Total: -1256 bytes Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * bloat-o-meter: avoid double countingRon Yorston2021-03-091-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disable 'echo' in the default config, run 'make baseline', then re-enable 'echo' and run 'make bloatcheck': function old new delta .rodata 182521 182622 +101 packed_usage 33714 33792 +78 applet_main 3168 3176 +8 applet_names 2730 2735 +5 applet_suid 99 100 +1 applet_install_loc 198 199 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/0 up/down: 194/0) Total: 194 bytes text data bss dec hex filename 955052 4195 1808 961055 eaa1f busybox_old 955153 4195 1808 961156 eaa84 busybox_unstripped The Total bytes value doesn't equal the change in the size of the binary. The packed_usage and applet_* items are in .rodata and are counted twice. With this modified bloat-o-meter the size of named items is deducted from .rodata: function old new delta packed_usage 33714 33792 +78 applet_main 3168 3176 +8 .rodata 105105 105113 +8 applet_names 2730 2735 +5 applet_suid 99 100 +1 applet_install_loc 198 199 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/0 up/down: 101/0) Total: 101 bytes text data bss dec hex filename 955052 4195 1808 961055 eaa1f busybox_old 955153 4195 1808 961156 eaa84 busybox_unstripped v2: Sections numbered less than 10 were always being omitted from consideration because splitting "[ 1] .interp" leaves "1]" in x[1] where the section name is expected. This wasn't a problem for .rodata (numbered 15 in my testing) but let's fix it anyway. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * start-stop-daemon: explain -x + -a testDenys Vlasenko2021-03-091-0/+5
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ntpd: tweak commentsDenys Vlasenko2021-03-021-23/+9
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ntpd: decrease INITIAL_SAMPLES from 4 to 3Denys Vlasenko2021-03-021-15/+12
| | | | | | | | | | | | | | | | | | | | | | This reduces initial traffic to NTP servers when a lot of devices boot at once. Log inspection tells me we agressively burst-poll servers about 5 times at startup, even though we usually already update clock after second replies. INITIAL_SAMPLES can probably be even lower, e.g. 2, but let's be conservative when changing this stuff. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: code shrinkDenys Vlasenko2021-03-011-18/+14
| | | | | | | | | | | | | | | | | | | | function old new delta setops 85 73 -12 colon 2965 2915 -50 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-62) Total: -62 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * vi: restore 0 offset after :set noXXX commandAlison Winters2021-03-011-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes bug where commands after the first noXXX command are ignored. e.g. :set noic tabstop=4 While at it, stop recognizing "notabstop=NNN". function old new delta colon 2990 2965 -25 Signed-off-by: Alison Winters <alisonatwork@outlook.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | win32: fix creation of symlinks in 64-bit Windows 7Ron Yorston2021-05-131-1/+1
| | | | | | | | | | | | | | | | The 64-bit build of busybox-w32 failed to create symbolic links on Windows 7 but claimed to have succeeded. The declaration of CreateSymbolicLinkA had the wrong return value. See GitHub issue #217.
* | libbb: special case for busybox --help is WIN32-onlyRon Yorston2021-04-091-1/+1
| | | | | | | | | | | | Commit 32833bc06 (ash: treat all applets as NOEXEC) added special treatment for 'busybox --help'. This should only be included for WIN32 builds.
* | Update README.mdRon Yorston2021-03-171-1/+1
| | | | | | | | Suggest not "cross compiling" on Windows.
* | libbb: fix another tab-completion corner caseRon Yorston2021-03-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 90f35327c (libbb: avoid problems with quoted characters in tab completion) avoided a conflict between the code to quote special characters and that to display case-preserved filenames. Here's another one. I'd installed a third-party binary on Microsoft Windows and wanted to execute it from a busybox-w32 shell which didn't have it in its path. No problem: $ c:/prog<tab> $ c:/Program<tab> Program Files/ ProgramData $ c:/Program\<tab> $ c:/PProgram I was too quick to enter the final <tab>, I'd meant to add a space. A trailing backslash is effectively removed by the tab completion matching code but it remains on the display. This confuses the code to display case-preserved filenames. Upstream BusyBox just ends up with a spurious backslash in the name. Bash rewrites the command line to remove the surplus backslash. Fix the issue in busybox-w32 by leaving the backslash in the name, even for matching purposes. This will never result in a match, thus affording the user a change to correct their mistake.
* | libbb: allow single-applet binary to buildRon Yorston2021-03-141-11/+10
| | | | | | | | | | | | The ability to build a single-applet binary was lost following commit 33a914da6b (ps: obtain applet names from other BusyBox processes).
* | build system: add support for 'make bloatcheck'Ron Yorston2021-03-103-11/+37
| | | | | | | | Plus a few other make targets that make measurements on the binary.
* | bloat-o-meter: avoid double countingRon Yorston2021-03-101-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disable 'echo' in the default config, run 'make baseline', then re-enable 'echo' and run 'make bloatcheck': function old new delta .rodata 182521 182622 +101 packed_usage 33714 33792 +78 applet_main 3168 3176 +8 applet_names 2730 2735 +5 applet_suid 99 100 +1 applet_install_loc 198 199 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/0 up/down: 194/0) Total: 194 bytes text data bss dec hex filename 955052 4195 1808 961055 eaa1f busybox_old 955153 4195 1808 961156 eaa84 busybox_unstripped The Total bytes value doesn't equal the change in the size of the binary. The packed_usage and applet_* items are in .rodata and are counted twice. With this modified bloat-o-meter the size of named items is deducted from .rodata: function old new delta packed_usage 33714 33792 +78 applet_main 3168 3176 +8 .rodata 105105 105113 +8 applet_names 2730 2735 +5 applet_suid 99 100 +1 applet_install_loc 198 199 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/0 up/down: 101/0) Total: 101 bytes text data bss dec hex filename 955052 4195 1808 961055 eaa1f busybox_old 955153 4195 1808 961156 eaa84 busybox_unstripped v2: Sections numbered less than 10 were always being omitted from consideration because splitting "[ 1] .interp" leaves "1]" in x[1] where the section name is expected. This wasn't a problem for .rodata (numbered 15 in my testing) but let's fix it anyway. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | winansi: fix ansi emulationRon Yorston2021-03-051-12/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following commands (reported in GitHub issue #201): printf "\033[38;2;255;0;0mX\033[m\n" printf "\033[38;2;255;0;0m;\033[m\n" produce different results. The first correctly displays a red 'X' while the second incorrectly displays a white ';'. The problem is that process_24bit() overruns the extent of the escape sequence. As a result the loop in process_escape() which handles 'ESC[...m' sequences sees the ';' in the text as a continuation of the escape sequence. Fix this by: - reworking process_24bit() so that the overrun is avoided; - changing the test in the loop in process_escape() so that even if an overrun happens it stops processing at the end of the escape sequence. Also, save a few bytes by replacing '++str' with 'str + 1' in a few places.
* | Work around GNU Make bug involving shell built-insChristopher Wellons2021-03-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The workaround for MSYS2 in 475c111 interacts badly with a long-standing bug in GNU Make where it avoids spawning a shell when it believes it can handle a command itself as a sort of Bourne shell emulation. Since "command" is typically implemented as a special shell built-in and not an actual program, and GNU Make does not implement this built-in in its Bourne shell emulation, GNU Make's shell function fails to invoke it properly, resulting in an error: make: command: Command not found One work-around is to set a custom shell that is not "/bin/sh" so that GNU Make does not assume any particular shell semantics. For instance: make SHELL=dash A second work-around is to use a shell feature not implemented by GNU Make, such as redirection or variable assignment (this patch), causing it to spawn an actual shell to handle the shell command.
* | busybox: allow '--install' to install symlinksFRP-3902-g61e53aa93Ron Yorston2021-03-021-43/+39
| | | | | | | | | | | | Restore the '--install -s' option which allows BusyBox to install symbolic links. Of course, this will only work if the user has permission to create symlinks.
* | ash: correctly identify applet in getopt() error messagesRon Yorston2021-03-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | With the default configuration most applets are run from the shell via run_noexec_applet_and_exit(). If the applet runs getopt() and an error is detected the message takes the form: sh: unknown option -- q This happens because mingw-w64's implementation of getopt() uses the global variable __argv[0] as the name of the program. Avoid the misleading message by setting __argv[0] as appropriate.
* | Post-merge build fixesRon Yorston2021-03-012-1/+2
| |
* | Merge branch 'busybox' into mergeRon Yorston2021-03-0121-330/+253
|\|
| * bc: typo fix in commentDenys Vlasenko2021-02-261-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * dc: more docs in --helpDenys Vlasenko2021-02-261-13/+14
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * dc: document what non-GNU commands doDenys Vlasenko2021-02-261-5/+5
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * bc/dc: fix length(0) and length(0.000nnn) resultDenys Vlasenko2021-02-263-4/+23
| | | | | | | | | | | | | | function old new delta zxc_vm_process 6464 6498 +34 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * dc: correct --help textDenys Vlasenko2021-02-261-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | before: Tiny RPN calculator. Operations: +, -, *, /, %, ~, ^, |, p - print top of the stack without popping f - print entire stack k - pop the value and set the precision i - pop the value and set input radix o - pop the value and set output radix After: Tiny RPN calculator. Operations: Arithmetic: + - * / % ^ ~ - divide with remainder | - modular exponentiation v - square root p - print top of the stack without popping f - print entire stack k - pop the value and set precision i - pop the value and set input radix o - pop the value and set output radix function old new delta packed_usage 33519 33565 +46 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * trylink: do not drop libs from CONFIG_EXTRA_LDLIBSDenys Vlasenko2021-02-233-10/+13
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * echo: do not assume that free() leaves errno unmodifiedNatanael Copa2021-02-231-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | musl libc's mallocng free() may modify errno if kernel does not support MADV_FREE which causes echo to echo with error when it shouldn't. Future versions of POSIX[1] will require that free() leaves errno unmodified but til then, do not rely free() implementation. Should fix downstream issues: https://github.com/alpinelinux/docker-alpine/issues/134 https://gitlab.alpinelinux.org/alpine/aports/-/issues/12311 Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * lineedit: support empty PATH entries in tab completionRon Yorston2021-02-231-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Zero-length path prefixes can be specified in PATH as a leading or trailing colon or two adjacent colons. POSIX says that the use of zero-length prefixes to refer to the current directory is a legacy feature. Nonetheless the shells in BusyBox respect this feature, as does 'which'. Tab-completion of executables using PATH should support this too. function old new delta complete_cmd_dir_file 934 931 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * diff: code shrinkRon Yorston2021-02-221-1/+1
| | | | | | | | | | | | | | | | | | | | function old new delta diff_main 1515 1495 -20 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20) Total: -20 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * dnsd: check that we don't read past packetDenys Vlasenko2021-02-221-5/+12
| | | | | | | | | | | | | | function old new delta dnsd_main 1296 1304 +8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * udhcp: reuse stringsDenys Vlasenko2021-02-213-10/+14
| | | | | | | | | | | | | | | | text data bss dec hex filename 1019916 559 5020 1025495 fa5d7 busybox_old 1019906 559 5020 1025485 fa5cd busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>