aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * less: Ignore -XIsmael Luceno2021-09-281-1/+1
| | | | | | | | | | | | | | | | The flag disables termcap init/deinit of the terminal, which the applet doesn't do anyway. Signed-off-by: Ismael Luceno <ismael@iodev.co.uk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fix compile breakage in !ENABLE_ASH_ALIAS configDenys Vlasenko2021-09-281-2/+2
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: code shrink in main() and scripted_main()Denys Vlasenko2021-09-281-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | function old new delta main 68 65 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes text data bss dec hex filename 1472 560 16 2048 800 busybox_old 1398 552 16 1966 7ae busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shell: fix parsing of $(( (v)++ + NUM ))Denys Vlasenko2021-09-265-22/+44
| | | | | | | | | | | | | | function old new delta evaluate_string 988 1011 +23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shell: enable more tests which are passing nowDenys Vlasenko2021-09-256-73/+105
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shell: fix arithmentic evaluation of "++7" and such (it is + + 7, i.e. 7)Denys Vlasenko2021-09-259-46/+65
| | | | | | | | | | | | | | function old new delta evaluate_string 945 988 +43 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb/lineedit: tweak #if indenting, no code changesDenys Vlasenko2021-09-251-8/+8
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | win32: fix bb_get_last_path_component_nostrip()Ron Yorston2021-10-131-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Finding the last component of a path didn't properly handle a mixture of slashes and backslashes, paths relative to another drive or bare UNC paths. The following were incorrect: $ basename /dir\\file dir\file $ basename c:file c:file $ basename //HOST/share share With this patch the results are now: $ basename /dir\\file file $ basename c:file file $ basename //HOST/share //HOST/share
* | win32: fix creation of relative symlinksRon Yorston2021-10-121-2/+5
| | | | | | | | | | | | | | | | Symlinks containing '.' or '..' (such as '../target', './target' or 'dir/./target') were successfully created but couldn't be accessed. It turns out Windows requires paths of that form to use backslashes rather than forward slashes.
* | win32: rename is_absolute_path()Ron Yorston2021-10-124-13/+13
| | | | | | | | | | As the comment pointed out is_absolute_path() was misnamed. Rename it to is_relative_path() and change the sense of all tests.
* | win32: use is_dir_sep() everywhereRon Yorston2021-10-122-14/+12
| | | | | | | | | | The is_dir_sep() macro, which has been around since the start of busybox-w32, can be used instead of is_path_sep().
* | ash: prevent exit if background jobs are presentRon Yorston2021-09-261-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | If the user exits from an interactive shell while background jobs are running the console window won't terminate because the background jobs are still connected to it. Warn the user when this happens. They can either shut down the background jobs themselves or close the console window. This is implemented by repurposing the stoppedjobs() function which is otherwise unused in the WIN32 port.
* | ash: associate command names with jobsRon Yorston2021-09-261-14/+16
| | | | | | | | | | | | | | | | | | Reporting of background jobs is more useful if the commands associated with the jobs are displayed. Also, allow the kill builtin to kill jobs by matching their command names. This was previously disabled by commit f67224cb2 (ash: restrict valid job ids).
* | ash: additional support for background jobsRon Yorston2021-09-263-11/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The rationale for the jobs builtin in POSIX notes: The jobs utility is not dependent on the job control option, as are the seemingly related bg and fg utilities because jobs is useful for examining background jobs, regardless of the condition of job control. When the user has invoked a set +m command and job control has been turned off, jobs can still be used to examine the background jobs associated with that current session. Similarly, kill can then be used to kill background jobs with kill %<background job number>. Although ash in busybox-w32 doesn't support job control it can handle background jobs. Allow the ASH_JOB_CONTROL setting to enable certain features: - the jobs builtin; - killing of jobs by job id in the kill builtin; - monitoring of changes to jobs. Since process groups aren't supported it's necessary to kill the processes constituting a background job individually. When doing this we ask kill(2) to kill all children too.
* | ash: fix FUNCNAME issueRon Yorston2021-09-221-0/+5
| | | | | | | | | | | | | | | | | | Commit c13f77823 (ash: adjust reinitvar() to allow for FUNCNAME) was incomplete. It didn't correctly pass the funcname variable during forkshell. This resulted in horrible failure when running a function like: f() { (echo $FUNCNAME); }
* | Merge branch 'busybox' into mergeRon Yorston2021-09-2111-64/+77
|\|
| * cal: implement -mRon Yorston2021-09-211-13/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some people prefer the week to start on Monday. Add the '-m' option to support this. function old new delta cal_main 926 966 +40 day_array 316 337 +21 packed_usage 34151 34158 +7 .rodata 99224 99225 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 69/0) Total: 69 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: code shrink parse_datestr (again)Ron Yorston2021-09-181-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 9fe1548bb (date,touch: allow timezone offsets in dates) mentioned the similarity between '@' format dates and those with timezone offsets. It didn't notice that as a result there's common code which can be shared. function old new delta parse_datestr 730 687 -43 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-43) Total: -43 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb/lineedit: do not escape %^=+}]:, escape ~? in tab completionDenys Vlasenko2021-09-171-1/+10
| | | | | | | | | | | | | | function old new delta .rodata 104185 104180 -5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: clarify what bb_mode_string() generatesDenys Vlasenko2021-09-173-15/+12
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: ensure mode_string is NUL terminatedRon Yorston2021-09-171-9/+3
| | | | | | | | | | | | | | | | | | | | | | If the mode_string array is no longer static we can't rely on it being NUL terminated. function old new delta bb_mode_string 115 118 +3 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: eliminate a static data array in bb_mode_string()Denys Vlasenko2021-09-177-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta print_stat 861 869 +8 header_verbose_list_ar 73 77 +4 display_single 975 979 +4 header_verbose_list 237 239 +2 bb_mode_string 124 115 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/1 up/down: 18/-9) Total: 9 bytes text data bss dec hex filename 1043136 559 5052 1048747 1000ab busybox_old 1043153 559 5020 1048732 10009c busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: code shrink bb_parse_modeDenys Vlasenko2021-09-172-3/+4
| | | | | | | | | | | | | | | | | | | | | | function old new delta bb_parse_mode 393 398 +5 static.who_mask 16 8 -8 static.perm_mask 24 12 -12 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 5/-20) Total: -15 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * chmod: correctly report changed modesDenys Vlasenko2021-09-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | Chmod used to incorrectly report as changed even files for which the mode did not change. This was caused by extra bits in the st_mode, that were not present when parsed from passed argument in the form of octal number. Patch by Wolf <wolf@wolfsden.cz>. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: improve signal handlingRon Yorston2021-09-214-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | Allow waitpid() to detect SIGTERM/SIGKILL by checking the (Windows) status returned by GetExitCodeProcess() and updating the Unix status to suit. This allows ash to detect when a process has been 'signalled'. Provide our own implementation of strsignal(3) which returns expanded text for SIGTERM/SIGKILL. Costs 192 bytes.
* | win32: limited version of timegm(3)Ron Yorston2021-09-181-84/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | timegm(3) from musl checks that the calculated time_t value can be broken out into a struct tm without overflow. The limiting factor is that tm_year is an int. Our only use of timegm(3) is followed by a call to localtime(3). The Microsoft version of this only works for time_t values between 0 and INT_MAX (32-bit) or 0 and 32535215999 (64-bit). Enforce these limits in timegm(3), thus avoiding the use of musl's __secs_to_tm() and saving 624 bytes.
* | ash: avoid problems with non-zero DEBUGRon Yorston2021-09-171-3/+6
| | | | | | | | | | | | | | | | | | | | | | When DEBUG had a non-zero value the preprocessor complained that 'close' was being redefined. In a WIN32 build it's set to 'mingw_close'. Since this isn't necessary in ash it can be undefined without ill effects. DEBUG can be set to 1 or 2. In a WIN32 build this value was being used to calculate indices for optlist[], giving incorrect results. Using (DEBUG != 0) instead fixes this.
* | win32: don't affect POSIX buildRon Yorston2021-09-171-1/+1
| |
* | ash: adjust reinitvar() to allow for FUNCNAMERon Yorston2021-09-171-1/+10
| | | | | | | | | | The new FUNCNAME variable, like LINENO, needs special treatment during forkshell.
* | win32: changes to allow timezones in datesRon Yorston2021-09-177-9/+254
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Create mingw_strptime() to return timezone offset as a separate argument (since Microsoft's struct tm doesn't have the required member). Import timegm() from musl. Update parse_datestr() to use mingw_strptime(). Enable FEATURE_TIMEZONE in the default configuration. GitHub issue #230.
* | Merge branch 'busybox' into mergeRon Yorston2021-09-1711-92/+194
|\| | | | | | | Disable FEATURE_TIMEZONE for now.
| * date,touch: allow timezone offsets in datesRon Yorston2021-09-176-10/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow ISO 8601 style dates to include a timezone offset. Like the '@' format these dates aren't relative to the user's current timezone and shouldn't be subject to DST adjustment. - The implementation uses the strptime() '%z' format specifier. This an extension which may not be available so the use of timezones is a configuration option. - The 'touch' applet has been updated to respect whether DST adjustment is required, matching 'date'. function old new delta parse_datestr 624 730 +106 static.fmt_str 106 136 +30 touch_main 388 392 +4 date_main 818 819 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 141/0) Total: 141 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * getopt: code shrinkRon Yorston2021-09-161-36/+28
| | | | | | | | | | | | | | | | | | | | | | | | function old new delta .rodata 99277 99290 +13 normalize 177 142 -35 getopt_main 675 622 -53 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 13/-88) Total: -75 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: introduce bash-like $FUNCNAMEDenys Vlasenko2021-09-151-3/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch adapted from Roberto A. Foglietta <roberto.foglietta@gmail.com> work. function old new delta lookupvar 106 150 +44 evalfun 369 408 +39 ash_main 1218 1242 +24 varinit_data 156 168 +12 .rodata 104162 104172 +10 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 129/0) Total: 129 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: code shrink parse_datestrRon Yorston2021-09-151-11/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default build uses strptime() in parse_datestr() to support the 'month_name d HH:MM:SS YYYY' format of GNU date. If we've linked with strptime() there's an advantage is using it for other formats too. There's no change to the non-default, non-DESKTOP build. function old new delta fmt_str - 106 +106 .rodata 99216 99145 -71 parse_datestr 948 624 -324 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/2 up/down: 106/-395) Total: -289 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: let ignoreeof only affect interactive shellsRon Yorston2021-09-141-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit fb7d6c89 from Harald van Dijk's gwsh variant of ash (https://github.com/hvdijk/gwsh): ignoreeof is documented as only having an effect for interactive shells, but is implemented as having mostly the same effect for interactive shells as for non-interactive shells. Change the implementation to match the documentation. Test case: $SHELL -o ignoreeof /dev/null function old new delta cmdloop 359 361 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 2/0) Total: 2 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: stopped jobs should only prevent exit from interactive shellRon Yorston2021-09-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | When the user tries to exit an interactive shell with stopped jobs present the shell issues a warning and only exits if the user insists by trying to exit again. This shouldn't apply to non-interactive shells. Reported-by: Roberto A. Foglietta <roberto.foglietta@gmail.com> Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fix ignoreeof optionRon Yorston2021-09-141-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ignoreeof option should prevent an interactive shell from exiting on EOF. This hasn't worked in BusyBox ash since commit 727752d2d (ash: better fix for ash -c 'echo 5&' and ash -c 'sleep 5&' with testcase). Commit 3b4d04b77e (ash: input: Allow two consecutive calls to pungetc) pulled in improved support for multiple calls to pungetc from dash, thus rendering much of commit 727752d2d obsolete. Removing this old code fixes the problem with ignoreeof. function old new delta __pgetc 605 587 -18 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-18) Total: -18 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * df: "support" -H as an alias of -hDenys Vlasenko2021-09-111-11/+15
| | | | | | | | | | | | | | | | | | | | function old new delta df_main 1065 1068 +3 .rodata 104232 104233 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 4/0) Total: 4 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Update default configurationRon Yorston2021-09-102-2/+6
| |
* | Merge branch 'busybox' into mergeRon Yorston2021-09-1053-437/+683
|\|
| * httpd: fix config depsDenys Vlasenko2021-09-101-0/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: reuse "bad port" error message stringDenys Vlasenko2021-09-101-1/+1
| | | | | | | | | | | | | | function old new delta .rodata 104251 104232 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * blkdiscard: accept -f (force) as no-opDenys Vlasenko2021-09-101-5/+8
| | | | | | | | | | | | | | function old new delta .rodata 104250 104251 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * basename: implement -a and -s SUFFIXDenys Vlasenko2021-09-091-24/+38
| | | | | | | | | | | | | | | | | | | | | | function old new delta basename_main 145 207 +62 packed_usage 33914 33950 +36 .rodata 104241 104250 +9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 107/0) Total: 107 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: make bb_lookup_port() abort on bad port namesDenys Vlasenko2021-09-094-22/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Also, no need to preserve errno function old new delta .rodata 104247 104241 -6 bb_lookup_port 97 83 -14 nc_main 1039 1018 -21 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-41) Total: -41 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * httpd,telnetd: make default port configurableSergey Ponomarev2021-09-093-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BusyBox on Termux can't use ports less than 1024 it's patched to change default port for httpd to 8080 and telnetd to 8023. https://github.com/termux/termux-packages/blob/master/packages/busybox/0011-networking-telnetd-default-port.patch https://github.com/termux/termux-packages/blob/master/packages/busybox/0010-networking-httpd-default-port.patch To avoid such patches we can make port configurable. function old new delta packed_usage 33920 33914 -6 Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * awk: never return NULL from awk_printf()Denys Vlasenko2021-09-091-4/+4
| | | | | | | | | | | | | | function old new delta awk_printf 651 628 -23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * awk: code shrinkDenys Vlasenko2021-09-091-8/+7
| | | | | | | | | | | | | | function old new delta awk_printf 652 651 -1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * awk: code shrink: avoid duplicate NUL checks and strlen()Denys Vlasenko2021-09-091-21/+33
| | | | | | | | | | | | | | function old new delta awk_printf 665 652 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>