From 528728488025df01388ab8e84bccfa62fbaf88e9 Mon Sep 17 00:00:00 2001 From: nico Date: Sun, 15 Aug 2010 20:28:05 +0000 Subject: package/busybox: add missing bits from 1.17.1 update (mostly config stuff), rename upstream patches so they're applied first git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22665 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/busybox/config/Config.in | 119 +++++- package/busybox/config/archival/Config.in | 62 ++- package/busybox/config/console-tools/Config.in | 23 + package/busybox/config/coreutils/Config.in | 173 ++++---- package/busybox/config/debianutils/Config.in | 1 - package/busybox/config/e2fsprogs/Config.in | 20 +- package/busybox/config/editors/Config.in | 12 + package/busybox/config/init/Config.in | 43 +- package/busybox/config/loginutils/Config.in | 16 - package/busybox/config/miscutils/Config.in | 36 +- package/busybox/config/modutils/Config.in | 10 +- package/busybox/config/networking/Config.in | 130 +++--- package/busybox/config/networking/udhcp/Config.in | 3 +- package/busybox/config/procps/Config.in | 7 + package/busybox/config/runit/Config.in | 4 + package/busybox/config/selinux/Config.in | 1 - package/busybox/config/shell/Config.in | 103 +++-- package/busybox/config/sysklogd/Config.in | 11 +- package/busybox/config/util-linux/Config.in | 475 +++++++++++---------- package/busybox/patches/000-autoconf.patch | 11 + package/busybox/patches/000-upstream-mktemp.patch | 11 + package/busybox/patches/000-upstream-sed.patch | 64 +++ package/busybox/patches/000-upstream-shell.patch | 98 +++++ .../patches/241-udhcpc-oversized_packets.patch | 40 +- package/busybox/patches/250-ash_export-n.patch | 4 +- package/busybox/patches/300-netmsg.patch | 31 +- package/busybox/patches/310-passwd_access.patch | 2 +- package/busybox/patches/340-lock_util.patch | 2 +- package/busybox/patches/350-httpd_redir.patch | 19 +- package/busybox/patches/470-insmod_search.patch | 2 +- package/busybox/patches/510-awk_include.patch | 19 +- .../610-syslog-remote-retry-connection.patch | 28 +- package/busybox/patches/803-id_getgrouplist.patch | 4 +- package/busybox/patches/920-mktemp.patch | 11 - package/busybox/patches/921-sed.patch | 64 --- package/busybox/patches/922-shell.patch | 98 ----- 36 files changed, 1075 insertions(+), 682 deletions(-) create mode 100644 package/busybox/patches/000-autoconf.patch create mode 100644 package/busybox/patches/000-upstream-mktemp.patch create mode 100644 package/busybox/patches/000-upstream-sed.patch create mode 100644 package/busybox/patches/000-upstream-shell.patch delete mode 100644 package/busybox/patches/920-mktemp.patch delete mode 100644 package/busybox/patches/921-sed.patch delete mode 100644 package/busybox/patches/922-shell.patch diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in index f7ee7b3d4..5dd3d1b09 100644 --- a/package/busybox/config/Config.in +++ b/package/busybox/config/Config.in @@ -82,7 +82,7 @@ config BUSYBOX_CONFIG_SHOW_USAGE config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE bool "Show verbose applet usage messages" default y - select BUSYBOX_CONFIG_SHOW_USAGE + depends on BUSYBOX_CONFIG_SHOW_USAGE help All BusyBox applets will show more verbose help messages when busybox is invoked with --help. This will add a lot of text to the @@ -118,7 +118,7 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT Enable this if your system has locale support and you would like busybox to support locale settings. -config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE +config BUSYBOX_CONFIG_UNICODE_SUPPORT bool "Support Unicode" default n help @@ -130,16 +130,109 @@ config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE Probably by the time when busybox will be fully Unicode-clean, other encodings will be mainly of historic interest. +config BUSYBOX_CONFIG_UNICODE_USING_LOCALE + bool "Use libc routines for Unicode (else uses internal ones)" + default n + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && BUSYBOX_CONFIG_LOCALE_SUPPORT + help + With this option on, Unicode support is implemented using libc + routines. Otherwise, internal implementation is used. + config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV bool "Check $LANG environment variable" default n - depends on BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE && !BUSYBOX_CONFIG_LOCALE_SUPPORT + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE help With this option on, Unicode support is activated only if LANG variable has the value of the form "xxxx.utf8" Otherwise, Unicode support will be always enabled and active. +config BUSYBOX_CONFIG_SUBST_WCHAR + int "Character code to substitute unprintable characters with" + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT + default 63 + help + Typical values are 63 for '?' (works with any output device), + 30 for ASCII substitute control code, + 65533 (0xfffd) for Unicode replacement character. + +config BUSYBOX_CONFIG_LAST_SUPPORTED_WCHAR + int "Range of supported Unicode characters" + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT + default 767 + help + Any character with Unicode value bigger than this is assumed + to be non-printable on output device. Many applets replace + such chars with substitution character. + + The idea is that many valid printable Unicode chars are + nevertheless are not displayed correctly. Think about + combining charachers, double-wide hieroglyphs, obscure + characters in dozens of ancient scripts... + Many terminals, terminal emulators, xterms etc will fail + to handle them correctly. Choose the smallest value + which suits your needs. + + Typical values are: + 126 - ASCII only + 767 (0x2ff) - there are no combining chars in [0..767] range + (the range includes Latin 1, Latin Ext. A and B), + code is ~700 bytes smaller for this case. + 4351 (0x10ff) - there are no double-wide chars in [0..4351] range, + code is ~300 bytes smaller for this case. + 12799 (0x31ff) - nearly all non-ideographic characters are + available in [0..12799] range, including + East Asian scripts like katakana, hiragana, hangul, + bopomofo... + 0 - off, any valid printable Unicode character will be printed. + +config BUSYBOX_CONFIG_UNICODE_COMBINING_WCHARS + bool "Allow zero-width Unicode characters on output" + default n + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT + help + With this option off, any Unicode char with width of 0 + is substituted on output. + +config BUSYBOX_CONFIG_UNICODE_WIDE_WCHARS + bool "Allow wide Unicode characters on output" + default n + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT + help + With this option off, any Unicode char with width > 1 + is substituted on output. + +config BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT + bool "Bidirectional character-aware line input" + default n + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE + help + With this option on, right-to-left Unicode characters + are treated differently on input (e.g. cursor movement). + +config BUSYBOX_CONFIG_UNICODE_NEUTRAL_TABLE + bool "In bidi input, support non-ASCII neutral chars too" + default n + depends on BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT + help + In most cases it's enough to treat only ASCII non-letters + (i.e. punctuation, numbers and space) as characters + with neutral directionality. + With this option on, more extensive (and bigger) table + of neutral chars will be used. + +config BUSYBOX_CONFIG_UNICODE_PRESERVE_BROKEN + bool "Make it possible to enter sequences of chars which are not Unicode" + default n + depends on BUSYBOX_CONFIG_UNICODE_SUPPORT + help + With this option on, invalid UTF-8 bytes are not substituted + with the selected substitution character. + For example, this means that entering 'l', 's', ' ', 0xff, [Enter] + at shell prompt will list file named 0xff (single char name + with char value 255), not file named '?'. + config BUSYBOX_CONFIG_LONG_OPTS bool "Support for --long-options" default y @@ -169,6 +262,26 @@ config BUSYBOX_CONFIG_FEATURE_CLEAN_UP Don't enable this unless you have a really good reason to clean things up manually. +config BUSYBOX_CONFIG_FEATURE_UTMP + bool "Support utmp file" + default n + help + The file /var/run/utmp is used to track who is currently logged in. + With this option on, certain applets (getty, login, telnetd etc) + will create and delete entries there. + "who" applet requires this option. + +config BUSYBOX_CONFIG_FEATURE_WTMP + bool "Support wtmp file" + default n + select BUSYBOX_CONFIG_FEATURE_UTMP + help + The file /var/run/wtmp is used to track when users have logged into + and logged out of the system. + With this option on, certain applets (getty, login, telnetd etc) + will append new entries there. + "last" applet requires this option. + config BUSYBOX_CONFIG_FEATURE_PIDFILE bool "Support writing pidfiles" default y diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in index 403a631dd..1424c8673 100644 --- a/package/busybox/config/archival/Config.in +++ b/package/busybox/config/archival/Config.in @@ -5,6 +5,12 @@ menu "Archival Utilities" +config BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ + bool "Make tar, rpm, modprobe etc understand .xz data" + default n + help + Make tar, rpm, modprobe etc understand .xz data. + config BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA bool "Make tar, rpm, modprobe etc understand .lzma data" default n @@ -62,6 +68,13 @@ config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES It supports the GNU ar long filename method which moves multiple long filenames into a the data section of a new ar entry. +config BUSYBOX_CONFIG_FEATURE_AR_CREATE + bool "Support archive creation" + default n + depends on BUSYBOX_CONFIG_AR + help + This enables archive creation (-c and -r) with busybox ar. + config BUSYBOX_CONFIG_BUNZIP2 bool "bunzip2" default y @@ -207,8 +220,6 @@ config BUSYBOX_CONFIG_TAR create compressed archives. It's probably the most widely used UNIX archive program. -if BUSYBOX_CONFIG_TAR - config BUSYBOX_CONFIG_FEATURE_TAR_CREATE bool "Enable archive creation" default y @@ -220,7 +231,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT bool "Autodetect compressed tarballs" default n - depends on BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA + depends on BUSYBOX_CONFIG_TAR && (BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA || BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ) help With this option tar can automatically detect compressed tarballs. Currently it works only on files (not pipes etc). @@ -236,7 +247,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_FROM config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY bool "Support for old tar header format" default n - depends on BUSYBOX_CONFIG_TAR + depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG help This option is required to unpack archives created in the old GNU format; help to kill this old format by @@ -245,7 +256,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY bool "Enable untarring of tarballs with checksums produced by buggy Sun tar" default n - depends on BUSYBOX_CONFIG_TAR + depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG help This option is required to unpack archives created by some old version of Sun's tar (it was calculating checksum using signed @@ -255,7 +266,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS bool "Support for GNU tar extensions (long filenames)" default y - depends on BUSYBOX_CONFIG_TAR + depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG help With this option busybox supports GNU long filenames and linknames. @@ -267,6 +278,15 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS help Enable use of long options, increases size by about 400 Bytes +config BUSYBOX_CONFIG_FEATURE_TAR_TO_COMMAND + bool "Support for writing to an external program" + default n + depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS + help + If you enable this option you'll be able to instruct tar to send + the contents of each extracted file to the standard input of an + external program. + config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME bool "Enable use of user and group names" default n @@ -284,7 +304,13 @@ config BUSYBOX_CONFIG_FEATURE_TAR_NOPRESERVE_TIME With this option busybox supports GNU tar -m (do not preserve time) option. -endif #tar +config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX + bool "Support for extracting SELinux labels" + default n + depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_SELINUX + help + With this option busybox supports restoring SELinux labels + when extracting files from tar archives. config BUSYBOX_CONFIG_UNCOMPRESS bool "uncompress" @@ -316,6 +342,28 @@ config BUSYBOX_CONFIG_FEATURE_LZMA_FAST This option reduces decompression time by about 25% at the cost of a 1K bigger binary. +config BUSYBOX_CONFIG_LZMA + bool "Provide lzma alias which supports only unpacking" + default n + depends on BUSYBOX_CONFIG_UNLZMA + help + Enable this option if you want commands like "lzma -d" to work. + IOW: you'll get lzma applet, but it will always require -d option. + +config BUSYBOX_CONFIG_UNXZ + bool "unxz" + default n + help + unxz is a unlzma successor. + +config BUSYBOX_CONFIG_XZ + bool "Provide xz alias which supports only unpacking" + default n + depends on BUSYBOX_CONFIG_UNXZ + help + Enable this option if you want commands like "xz -d" to work. + IOW: you'll get xz applet, but it will always require -d option. + config BUSYBOX_CONFIG_UNZIP bool "unzip" default n diff --git a/package/busybox/config/console-tools/Config.in b/package/busybox/config/console-tools/Config.in index d1342ffd9..710bf976f 100644 --- a/package/busybox/config/console-tools/Config.in +++ b/package/busybox/config/console-tools/Config.in @@ -12,6 +12,12 @@ config BUSYBOX_CONFIG_CHVT This program is used to change to another terminal. Example: chvt 4 (change to terminal /dev/tty4) +config BUSYBOX_CONFIG_FGCONSOLE + bool "fgconsole" + default n + help + This program prints active (foreground) console number. + config BUSYBOX_CONFIG_CLEAR bool "clear" default y @@ -135,4 +141,21 @@ config BUSYBOX_CONFIG_SHOWKEY help Shows keys pressed. +comment "Common options for loadfont and setfont" + depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT + +config BUSYBOX_CONFIG_FEATURE_LOADFONT_PSF2 + bool "Support for PSF2 console fonts" + default n + depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT + help + Support PSF2 console fonts. + +config BUSYBOX_CONFIG_FEATURE_LOADFONT_RAW + bool "Support for old (raw) console fonts" + default n + depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT + help + Support old (raw) console fonts. + endmenu diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in index 759d98dab..e72ea6c4b 100644 --- a/package/busybox/config/coreutils/Config.in +++ b/package/busybox/config/coreutils/Config.in @@ -12,19 +12,96 @@ config BUSYBOX_CONFIG_BASENAME basename is used to strip the directory and suffix from filenames, leaving just the filename itself. Enable this option if you wish to enable the 'basename' utility. - -config BUSYBOX_CONFIG_CAL - bool "cal" - default n - help - cal is used to display a monthly calender. - config BUSYBOX_CONFIG_CAT bool "cat" default y help cat is used to concatenate files and print them to the standard output. Enable this option if you wish to enable the 'cat' utility. +config BUSYBOX_CONFIG_DATE + bool "date" + default y + help + date is used to set the system date or display the + current time in the given format. + +config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT + bool "Enable ISO date format output (-I)" + default y + depends on BUSYBOX_CONFIG_DATE + help + Enable option (-I) to output an ISO-8601 compliant + date/time string. + +config BUSYBOX_CONFIG_FEATURE_DATE_NANO + bool "Support %[num]N nanosecond format specifier" + default n + depends on BUSYBOX_CONFIG_DATE + help + Support %[num]N format specifier. Adds ~250 bytes of code. + +config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT + bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format" + default n + depends on BUSYBOX_CONFIG_DATE + help + System time can be set by 'date -s DATE' and simply 'date DATE', + but formats of DATE string are different. 'date DATE' accepts + a rather weird MMDDhhmm[[YY]YY][.ss] format with completely + unnatural placement of year between minutes and seconds. + date -s (and other commands like touch -d) use more sensible + formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss). + + With this option off, 'date DATE' is 'date -s DATE' support + the same format. With it on, 'date DATE' additionally supports + MMDDhhmm[[YY]YY][.ss] format. + +config BUSYBOX_CONFIG_TEST + bool "test" + default y + help + test is used to check file types and compare values, + returning an appropriate exit code. The bash shell + has test built in, ash can build it in optionally. + +config BUSYBOX_CONFIG_FEATURE_TEST_64 + bool "Extend test to 64 bit" + default y + depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH + help + Enable 64-bit support in test. + +config BUSYBOX_CONFIG_TR + bool "tr" + default y + help + tr is used to squeeze, and/or delete characters from standard + input, writing to standard output. + +config BUSYBOX_CONFIG_FEATURE_TR_CLASSES + bool "Enable character classes (such as [:upper:])" + default n + depends on BUSYBOX_CONFIG_TR + help + Enable character classes, enabling commands such as: + tr [:upper:] [:lower:] to convert input into lowercase. + +config BUSYBOX_CONFIG_FEATURE_TR_EQUIV + bool "Enable equivalence classes" + default n + depends on BUSYBOX_CONFIG_TR + help + Enable equivalence classes, which essentially add the enclosed + character to the current set. For instance, tr [=a=] xyz would + replace all instances of 'a' with 'xyz'. This option is mainly + useful for cases when no other way of expressing a character + is possible. + +config BUSYBOX_CONFIG_CAL + bool "cal" + default n + help + cal is used to display a monthly calender. config BUSYBOX_CONFIG_CATV bool "catv" @@ -100,37 +177,6 @@ config BUSYBOX_CONFIG_CUT cut is used to print selected parts of lines from each file to stdout. -config BUSYBOX_CONFIG_DATE - bool "date" - default y - help - date is used to set the system date or display the - current time in the given format. - -config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT - bool "Enable ISO date format output (-I)" - default y - depends on BUSYBOX_CONFIG_DATE - help - Enable option (-I) to output an ISO-8601 compliant - date/time string. - -config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT - bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format" - default n - depends on BUSYBOX_CONFIG_DATE - help - System time can be set by 'date -s DATE' and simply 'date DATE', - but formats of DATE string are different. 'date DATE' accepts - a rather weird MMDDhhmm[[YY]YY][.ss] format with completely - unnatural placement of year between minutes and seconds. - date -s (and other commands like touch -d) use more sensible - formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss). - - With this option off, 'date DATE' is 'date -s DATE' support - the same format. With it on, 'date DATE' additionally supports - MMDDhhmm[[YY]YY][.ss] format. - config BUSYBOX_CONFIG_DD bool "dd" default y @@ -183,6 +229,10 @@ config BUSYBOX_CONFIG_FEATURE_DF_FANCY help This option enables -a, -i and -B. + -a Show all filesystems + -i Inodes + -B Blocksize + config BUSYBOX_CONFIG_DIRNAME bool "dirname" default y @@ -682,6 +732,10 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL The options (-q, -s, and -v) are provided by GNU tail, but are not specific in the SUSv3 standard. + -q Never output headers giving file names + -s SEC Wait SEC seconds between reads with -f + -v Always output headers giving file names + config BUSYBOX_CONFIG_TEE bool "tee" default y @@ -696,21 +750,6 @@ config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO help Enable this option for a faster tee, at expense of size. -config BUSYBOX_CONFIG_TEST - bool "test" - default y - help - test is used to check file types and compare values, - returning an appropriate exit code. The bash shell - has test built in, ash can build it in optionally. - -config BUSYBOX_CONFIG_FEATURE_TEST_64 - bool "Extend test to 64 bit" - default y - depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH - help - Enable 64-bit support in test. - config BUSYBOX_CONFIG_TOUCH bool "touch" default y @@ -718,32 +757,6 @@ config BUSYBOX_CONFIG_TOUCH touch is used to create or change the access and/or modification timestamp of specified files. -config BUSYBOX_CONFIG_TR - bool "tr" - default y - help - tr is used to squeeze, and/or delete characters from standard - input, writing to standard output. - -config BUSYBOX_CONFIG_FEATURE_TR_CLASSES - bool "Enable character classes (such as [:upper:])" - default n - depends on BUSYBOX_CONFIG_TR - help - Enable character classes, enabling commands such as: - tr [:upper:] [:lower:] to convert input into lowercase. - -config BUSYBOX_CONFIG_FEATURE_TR_EQUIV - bool "Enable equivalence classes" - default n - depends on BUSYBOX_CONFIG_TR - help - Enable equivalence classes, which essentially add the enclosed - character to the current set. For instance, tr [=a=] xyz would - replace all instances of 'a' with 'xyz'. This option is mainly - useful for cases when no other way of expressing a character - is possible. - config BUSYBOX_CONFIG_TRUE bool "true" default y @@ -817,7 +830,7 @@ config BUSYBOX_CONFIG_FEATURE_WC_LARGE config BUSYBOX_CONFIG_WHO bool "who" default n - select BUSYBOX_CONFIG_FEATURE_UTMP + depends on BUSYBOX_CONFIG_FEATURE_UTMP help who is used to show who is logged on. diff --git a/package/busybox/config/debianutils/Config.in b/package/busybox/config/debianutils/Config.in index e61c661fc..a9beb9b4b 100644 --- a/package/busybox/config/debianutils/Config.in +++ b/package/busybox/config/debianutils/Config.in @@ -81,4 +81,3 @@ config BUSYBOX_CONFIG_WHICH print out their pathnames. endmenu - diff --git a/package/busybox/config/e2fsprogs/Config.in b/package/busybox/config/e2fsprogs/Config.in index e0e2c1ec3..08a1452c3 100644 --- a/package/busybox/config/e2fsprogs/Config.in +++ b/package/busybox/config/e2fsprogs/Config.in @@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_CHATTR ### config E2FSCK ### bool "e2fsck" -### default n +### default y ### help ### e2fsck is used to check Linux second extended file systems (ext2fs). ### e2fsck also supports ext2 filesystems countaining a journal (ext3). @@ -36,21 +36,21 @@ config BUSYBOX_CONFIG_LSATTR ### config MKE2FS ### bool "mke2fs" -### default n +### default y ### help ### mke2fs is used to create an ext2/ext3 filesystem. The normal compat ### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided. -### config TUNE2FS -### bool "tune2fs" -### default n -### help -### tune2fs allows the system administrator to adjust various tunable -### filesystem parameters on Linux ext2/ext3 filesystems. +config BUSYBOX_CONFIG_TUNE2FS + bool "tune2fs" + default n + help + tune2fs allows the system administrator to adjust various tunable + filesystem parameters on Linux ext2/ext3 filesystems. ### config E2LABEL ### bool "e2label" -### default n +### default y ### depends on TUNE2FS ### help ### e2label will display or change the filesystem label on the ext2 @@ -59,7 +59,7 @@ config BUSYBOX_CONFIG_LSATTR ### NB: this one is now provided by util-linux/volume_id/* ### config FINDFS ### bool "findfs" -### default n +### default y ### depends on TUNE2FS ### help ### findfs will search the disks in the system looking for a filesystem diff --git a/package/busybox/config/editors/Config.in b/package/busybox/config/editors/Config.in index 6175df72f..eeadfab7a 100644 --- a/package/busybox/config/editors/Config.in +++ b/package/busybox/config/editors/Config.in @@ -168,6 +168,18 @@ config BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE help Make busybox vi behave nicely with terminals that get resized. +config BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL + bool "Use 'tell me cursor position' ESC sequence to measure window" + default y + depends on BUSYBOX_CONFIG_VI + help + If terminal size can't be retrieved and $LINES/$COLUMNS are not set, + this option makes vi perform a last-ditch effort to find it: + vi positions cursor to 999,999 and asks terminal to report real + cursor position using "ESC [ 6 n" escape sequence, then reads stdin. + + This is not clean but helps a lot on serial lines and such. + config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR bool "Optimize cursor movement" default y diff --git a/package/busybox/config/init/Config.in b/package/busybox/config/init/Config.in index 949889563..bdf181c2f 100644 --- a/package/busybox/config/init/Config.in +++ b/package/busybox/config/init/Config.in @@ -5,6 +5,45 @@ menu "Init Utilities" +config BUSYBOX_CONFIG_BOOTCHARTD + bool "bootchartd" + default n + help + bootchartd is commonly used to profile the boot process + for the purpose of speeding it up. In this case, it is started + by the kernel as the init process. This is configured by adding + the init=/sbin/bootchartd option to the kernel command line. + + It can also be used to monitor the resource usage of a specific + application or the running system in general. In this case, + bootchartd is started interactively by running bootchartd start + and stopped using bootchartd stop. + +config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER + bool "Compatible, bloated header" + default n + depends on BUSYBOX_CONFIG_BOOTCHARTD + help + Create extended header file compatible with "big" bootchartd. + "Big" bootchartd is a shell script and it dumps some + "convenient" info int the header, such as: + title = Boot chart for `hostname` (`date`) + system.uname = `uname -srvm` + system.release = `cat /etc/DISTRO-release` + system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount) + system.kernel.options = `cat /proc/cmdline` + This data is not mandatory for bootchart graph generation, + and is considered bloat. Nevertheless, this option + makes bootchartd applet to dump a subset of it. + +config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE + bool "Support bootchartd.conf" + default n + depends on BUSYBOX_CONFIG_BOOTCHARTD + help + Enable reading and parsing of $PWD/bootchartd.conf + and /etc/bootchartd.conf files. + config BUSYBOX_CONFIG_INIT bool "init" default y @@ -25,8 +64,8 @@ config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB help When respawn entries are removed from inittab and a SIGHUP is - sent to init, this feature will kill the processes that have - been removed. + sent to init, this option will make init kill the processes + that have been removed. config BUSYBOX_CONFIG_FEATURE_KILL_DELAY int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED diff --git a/package/busybox/config/loginutils/Config.in b/package/busybox/config/loginutils/Config.in index 4498e4e2d..0a7d253d7 100644 --- a/package/busybox/config/loginutils/Config.in +++ b/package/busybox/config/loginutils/Config.in @@ -181,22 +181,6 @@ config BUSYBOX_CONFIG_GETTY help getty lets you log in on a tty, it is normally invoked by init. -config BUSYBOX_CONFIG_FEATURE_UTMP - bool "Support utmp file" - depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_WHO - default n - help - The file /var/run/utmp is used to track who is currently logged in. - -config BUSYBOX_CONFIG_FEATURE_WTMP - bool "Support wtmp file" - depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_LAST - default n - select BUSYBOX_CONFIG_FEATURE_UTMP - help - The file /var/run/wtmp is used to track when user's have logged into - and logged out of the system. - config BUSYBOX_CONFIG_LOGIN bool "login" default n diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in index 9d4a3700a..d3cf407b0 100644 --- a/package/busybox/config/miscutils/Config.in +++ b/package/busybox/config/miscutils/Config.in @@ -5,6 +5,27 @@ menu "Miscellaneous Utilities" +config BUSYBOX_CONFIG_CONSPY + bool "conspy" + default n + help + A text-mode VNC like program for Linux virtual terminals. + example: conspy NUM shared access to console num + or conspy -nd NUM screenshot of console num + or conspy -cs NUM poor man's GNU screen like + +config BUSYBOX_CONFIG_UBIATTACH + bool "ubiattach" + default n + help + Attach MTD device to an UBI device. + +config BUSYBOX_CONFIG_UBIDETACH + bool "ubidetach" + default n + help + Detach MTD device from an UBI device. + config BUSYBOX_CONFIG_ADJTIMEX bool "adjtimex" default n @@ -317,14 +338,14 @@ config BUSYBOX_CONFIG_INOTIFYD config BUSYBOX_CONFIG_LAST bool "last" default n - select BUSYBOX_CONFIG_FEATURE_WTMP + depends on BUSYBOX_CONFIG_FEATURE_WTMP help 'last' displays a list of the last users that logged into the system. choice prompt "Choose last implementation" depends on BUSYBOX_CONFIG_LAST - default BUSYBOX_CONFIG_FEATURE_LAST_SMALL + default BUSYBOX_CONFIG_FEATURE_LAST_FANCY config BUSYBOX_CONFIG_FEATURE_LAST_SMALL bool "small" @@ -551,6 +572,17 @@ config BUSYBOX_CONFIG_READAHEAD As readahead(2) blocks until each file has been read, it is best to run this applet as a background job. +config BUSYBOX_CONFIG_RFKILL + bool "rfkill" + default n + help + Enable/disable wireless devices. + + rfkill list : list all wireless devices + rfkill list bluetooth : list all bluetooth devices + rfkill list 1 : list device corresponding to the given index + rfkill block|unblock wlan : block/unblock all wlan(wifi) devices + config BUSYBOX_CONFIG_RUNLEVEL bool "runlevel" default n diff --git a/package/busybox/config/modutils/Config.in b/package/busybox/config/modutils/Config.in index db515b547..ad5401f95 100644 --- a/package/busybox/config/modutils/Config.in +++ b/package/busybox/config/modutils/Config.in @@ -5,6 +5,12 @@ menu "Linux Module Utilities" +config BUSYBOX_CONFIG_MODINFO + bool "modinfo" + default n + help + Show information about a Linux Kernel module + config BUSYBOX_CONFIG_MODPROBE_SMALL bool "Simplified modutils" default n @@ -226,7 +232,7 @@ config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR string "Default directory containing modules" default "/lib/modules" - depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL + depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO help Directory that contains kernel modules. Defaults to "/lib/modules" @@ -234,7 +240,7 @@ config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE string "Default name of modules.dep" default "modules.dep" - depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL + depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO help Filename that contains kernel modules dependencies. Defaults to "modules.dep" diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in index 99a8eddca..481567c61 100644 --- a/package/busybox/config/networking/Config.in +++ b/package/busybox/config/networking/Config.in @@ -5,6 +5,39 @@ menu "Networking Utilities" +config BUSYBOX_CONFIG_NC + bool "nc" + default y + help + A simple Unix utility which reads and writes data across network + connections. + +config BUSYBOX_CONFIG_NC_SERVER + bool "Netcat server options (-l)" + default n + depends on BUSYBOX_CONFIG_NC + help + Allow netcat to act as a server. + +config BUSYBOX_CONFIG_NC_EXTRA + bool "Netcat extensions (-eiw and filename)" + default n + depends on BUSYBOX_CONFIG_NC + help + Add -e (support for executing the rest of the command line after + making or receiving a successful connection), -i (delay interval for + lines sent), -w (timeout for initial connection). + +config BUSYBOX_CONFIG_NC_110_COMPAT + bool "Netcat 1.10 compatibility (+2.5k)" + default n + depends on BUSYBOX_CONFIG_NC + help + This option makes nc closely follow original nc-1.10. + The code is about 2.5k bigger. It enables + -s ADDR, -n, -u, -v, -o FILE, -z options, but loses + busybox-specific extensions: -f FILE and -ll. + config BUSYBOX_CONFIG_FEATURE_IPV6 bool "Enable IPv6 support" default y @@ -122,8 +155,8 @@ config BUSYBOX_CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST default n depends on BUSYBOX_CONFIG_FTPD help - Some ftp-clients (among them KDE's Konqueror) issue illegal - "LIST -la" requests. This option works around those problems. + Some ftp clients (among them KDE's Konqueror) issue illegal + "LIST -l" requests. This option works around such problems. It might prevent you from listing files starting with "-" and it increases the code size by ~40 bytes. Most other ftp servers seem to behave similar to this. @@ -404,7 +437,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6 ### UNUSED ###config FEATURE_IFUPDOWN_IPX ### bool "Support for IPX" -### default n +### default y ### depends on IFUPDOWN ### help ### If this option is selected you can use busybox to work with IPX @@ -621,35 +654,12 @@ config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED new_interface_name mac=00:80:C8:38:91:B5 new_interface_name 00:80:C8:38:91:B5 -config BUSYBOX_CONFIG_NC - bool "nc" - default y - help - A simple Unix utility which reads and writes data across network - connections. - config BUSYBOX_CONFIG_NETMSG bool "netmsg" default y help simple program for sending udp broadcast messages -config BUSYBOX_CONFIG_NC_SERVER - bool "Netcat server options (-l)" - default n - depends on BUSYBOX_CONFIG_NC - help - Allow netcat to act as a server. - -config BUSYBOX_CONFIG_NC_EXTRA - bool "Netcat extensions (-eiw and filename)" - default n - depends on BUSYBOX_CONFIG_NC - help - Add -e (support for executing the rest of the command line after - making or receiving a successful connection), -i (delay interval for - lines sent), -w (timeout for initial connection). - config BUSYBOX_CONFIG_NETSTAT bool "netstat" default y @@ -735,7 +745,7 @@ config BUSYBOX_CONFIG_SLATTACH #config TC # bool "tc" -# default n +# default y # help # show / manipulate traffic control settings # @@ -743,6 +753,13 @@ config BUSYBOX_CONFIG_SLATTACH # def_bool n # depends on TC +config BUSYBOX_CONFIG_TCPSVD + bool "tcpsvd" + default n + help + tcpsvd listens on a TCP port and runs a program for each new + connection. + config BUSYBOX_CONFIG_TELNET bool "telnet" default y @@ -858,8 +875,11 @@ config BUSYBOX_CONFIG_TFTPD In other words: it should be run from inetd in nowait mode, or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR" +comment "Common options for tftp/tftpd" + depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD + config BUSYBOX_CONFIG_FEATURE_TFTP_GET - bool "Enable \"get\" command" + bool "Enable 'tftp get' and/or tftpd upload code" default n depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD help @@ -867,8 +887,11 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_GET a client to retrieve a file from a TFTP server. Also enable upload support in tftpd, if tftpd is selected. + Note: this option does _not_ make tftpd capable of download + (the usual operation people need from it)! + config BUSYBOX_CONFIG_FEATURE_TFTP_PUT - bool "Enable \"put\" command" + bool "Enable 'tftp put' and/or tftpd download code" default n depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD help @@ -935,6 +958,20 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP help Add option -I to use ICMP ECHO instead of UDP datagrams. +config BUSYBOX_CONFIG_TUNCTL + bool "tunctl" + default n + help + tunctl creates or deletes tun devices. + +config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG + bool "Support owner:group assignment" + default n + depends on BUSYBOX_CONFIG_TUNCTL + help + Allow to specify owner and group of newly created interface. + 340 bytes of pure bloat. Say no here. + source package/busybox/config/networking/udhcp/Config.in config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS @@ -946,6 +983,13 @@ config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS Intended to alter options not available in /etc/network/interfaces. (IE: --syslog --background etc...) +config BUSYBOX_CONFIG_UDPSVD + bool "udpsvd" + default n + help + udpsvd listens on an UDP port and runs a program for each new + connection. + config BUSYBOX_CONFIG_VCONFIG bool "vconfig" default y @@ -992,32 +1036,4 @@ config BUSYBOX_CONFIG_ZCIP See http://www.zeroconf.org for further details, and "zcip.script" in the busybox examples. -config BUSYBOX_CONFIG_TCPSVD - bool "tcpsvd" - default n - help - tcpsvd listens on a TCP port and runs a program for each new - connection. - -config BUSYBOX_CONFIG_TUNCTL - bool "tunctl" - default n - help - tunctl creates or deletes tun devices. - -config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG - bool "Support owner:group assignment" - default n - depends on BUSYBOX_CONFIG_TUNCTL - help - Allow to specify owner and group of newly created interface. - 340 bytes of pure bloat. Say no here. - -config BUSYBOX_CONFIG_UDPSVD - bool "udpsvd" - default n - help - udpsvd listens on an UDP port and runs a program for each new - connection. - endmenu diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in index 2597f72ca..e9827870e 100644 --- a/package/busybox/config/networking/udhcp/Config.in +++ b/package/busybox/config/networking/udhcp/Config.in @@ -92,7 +92,8 @@ config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397 depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC help If selected, both client and server will support passing of domain - search lists via option 119, specified in RFC3397. + search lists via option 119, specified in RFC 3397, + and SIP servers option 120, specified in RFC 3361. config BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT string "Absolute path to config script" diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in index 2bac03891..3a95439ce 100644 --- a/package/busybox/config/procps/Config.in +++ b/package/busybox/config/procps/Config.in @@ -5,6 +5,13 @@ menu "Process Utilities" +config BUSYBOX_CONFIG_SMEMCAP + bool "smemcap" + default n + help + smemcap is a tool for capturing process data for smem, + a memory usage statistic tool. + config BUSYBOX_CONFIG_FREE bool "free" default y diff --git a/package/busybox/config/runit/Config.in b/package/busybox/config/runit/Config.in index 624d4992e..c1ee81362 100644 --- a/package/busybox/config/runit/Config.in +++ b/package/busybox/config/runit/Config.in @@ -61,22 +61,26 @@ config BUSYBOX_CONFIG_CHPST config BUSYBOX_CONFIG_SETUIDGID bool "setuidgid" + default n help Sets soft resource limits as specified by options config BUSYBOX_CONFIG_ENVUIDGID bool "envuidgid" + default n help Sets $UID to account's uid and $GID to account's gid config BUSYBOX_CONFIG_ENVDIR bool "envdir" + default n help Sets various environment variables as specified by files in the given directory config BUSYBOX_CONFIG_SOFTLIMIT bool "softlimit" + default n help Sets soft resource limits as specified by options diff --git a/package/busybox/config/selinux/Config.in b/package/busybox/config/selinux/Config.in index dbd960630..50f324aaa 100644 --- a/package/busybox/config/selinux/Config.in +++ b/package/busybox/config/selinux/Config.in @@ -120,4 +120,3 @@ config BUSYBOX_CONFIG_SESTATUS Displays the status of SELinux. endmenu - diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in index 5d492e239..d652dd307 100644 --- a/package/busybox/config/shell/Config.in +++ b/package/busybox/config/shell/Config.in @@ -5,34 +5,7 @@ menu "Shells" -choice - prompt "Choose your default shell" - default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH - help - Choose a shell. The ash shell is the most bash compatible - and full featured one. - -config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH - select BUSYBOX_CONFIG_ASH - bool "ash" - depends on !BUSYBOX_CONFIG_NOMMU -config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH - select BUSYBOX_CONFIG_HUSH - bool "hush" - -####config FEATURE_SH_IS_LASH -#### select LASH -#### bool "lash" - -####config FEATURE_SH_IS_MSH -#### select MSH -#### bool "msh" - -config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE - bool "none" - -endchoice config BUSYBOX_CONFIG_ASH bool "ash" @@ -243,6 +216,61 @@ config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT Enable pseudorandom generator and dynamic variable "$RANDOM". Each read of "$RANDOM" will generate a new pseudorandom value. + +choice + prompt "Choose which shell is aliased to 'sh' name" + default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH + help + Choose which shell you want to be executed by 'sh' alias. + The ash shell is the most bash compatible and full featured one. + +# note: cannot use "select ASH" here, it breaks "make allnoconfig" +config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH + depends on BUSYBOX_CONFIG_ASH + bool "ash" + depends on !BUSYBOX_CONFIG_NOMMU + +config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH + depends on BUSYBOX_CONFIG_HUSH + bool "hush" + +config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE + bool "none" + +endchoice + +choice + prompt "Choose which shell is aliased to 'bash' name" + default BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE + help + Choose which shell you want to be executed by 'bash' alias. + The ash shell is the most bash compatible and full featured one. + + Note that selecting this option does not switch on any bash + compatibility code. It merely makes it possible to install + /bin/bash (sym)link and run scripts which start with + #!/bin/bash line. + + Many systems use it in scripts which use bash-specific features, + even simple ones like $RANDOM. Without this option, busybox + can't be used for running them because it won't recongnize + "bash" as a supported applet name. + +config BUSYBOX_CONFIG_FEATURE_BASH_IS_ASH + depends on BUSYBOX_CONFIG_ASH + bool "ash" + depends on !BUSYBOX_CONFIG_NOMMU + +config BUSYBOX_CONFIG_FEATURE_BASH_IS_HUSH + depends on BUSYBOX_CONFIG_HUSH + bool "hush" + +config BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE + bool "none" + +endchoice + + config BUSYBOX_CONFIG_LASH bool "lash (deprecated: aliased to hush)" default n @@ -285,14 +313,14 @@ config BUSYBOX_CONFIG_SH_MATH_SUPPORT_64 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET bool "Hide message on interactive shell startup" default n - depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH + depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH help Remove the busybox introduction when starting a shell. config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE bool "Standalone shell" default n - depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS + depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS help This option causes busybox shells to use busybox applets in preference to executables in the PATH whenever possible. For @@ -325,7 +353,7 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE config BUSYBOX_CONFIG_FEATURE_SH_NOFORK bool "Run 'nofork' applets directly" default n - depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS + depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS help This option causes busybox shells [currently only ash] to not execute typical fork/exec/wait sequence, but call _main @@ -354,9 +382,20 @@ config BUSYBOX_CONFIG_CTTYHACK It analyzes stdin with various ioctls, trying to determine whether it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line). If it detects one, it closes stdin/out/err and reopens that device. - Then it executes given program. Usage example for /etc/inittab - (for busybox init): + Then it executes given program. Opening the device will make + that device a controlling tty. This may require cttyhack + to be a session leader. + + Example for /etc/inittab (for busybox init): ::respawn:/bin/cttyhack /bin/sh + Giving controlling tty to shell running with PID 1: + + $ exec cttyhack sh + + Starting an interactive shell from boot shell script: + + setsid cttyhack sh + endmenu diff --git a/package/busybox/config/sysklogd/Config.in b/package/busybox/config/sysklogd/Config.in index b9e0db2fa..ea134b546 100644 --- a/package/busybox/config/sysklogd/Config.in +++ b/package/busybox/config/sysklogd/Config.in @@ -50,6 +50,16 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP Option -D instructs syslogd to drop consecutive messages which are totally the same. +config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE + int "Read buffer size in bytes" + default 256 + range 256 20000 + depends on BUSYBOX_CONFIG_SYSLOGD + help + This option sets the size of the syslog read buffer. + Actual memory usage increases around five times the + change done here. + config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG bool "Circular Buffer support" default y @@ -115,4 +125,3 @@ config BUSYBOX_CONFIG_LOGGER problems that occur within programs and scripts. endmenu - diff --git a/package/busybox/config/util-linux/Config.in b/package/busybox/config/util-linux/Config.in index a4fbc0ce6..3745528da 100644 --- a/package/busybox/config/util-linux/Config.in +++ b/package/busybox/config/util-linux/Config.in @@ -5,6 +5,12 @@ menu "Linux System Utilities" +config BUSYBOX_CONFIG_REV + bool "rev" + default n + help + Reverse lines of a file or files. + config BUSYBOX_CONFIG_ACPID bool "acpid" default n @@ -191,6 +197,12 @@ config BUSYBOX_CONFIG_FINDFS WARNING: With all submodules selected, it will add ~8k to busybox. +config BUSYBOX_CONFIG_FLOCK + bool "flock" + default n + help + Manage locks from shell scripts + config BUSYBOX_CONFIG_FREERAMDISK bool "freeramdisk" default n @@ -227,9 +239,6 @@ config BUSYBOX_CONFIG_MKFS_MINIX with little overhead. If you wish to be able to create minix filesystems this utility will do the job for you. -comment "Minix filesystem support" - depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX - config BUSYBOX_CONFIG_FEATURE_MINIX2 bool "Support Minix fs v2 (fsck_minix/mkfs_minix)" default n @@ -244,6 +253,7 @@ config BUSYBOX_CONFIG_MKFS_REISER default n help Utility to create ReiserFS filesystems. + Note: this applet needs a lot of testing and polishing. config BUSYBOX_CONFIG_MKFS_VFAT bool "mkfs_vfat" @@ -289,7 +299,7 @@ config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE config BUSYBOX_CONFIG_HD bool "hd" default n - select BUSYBOX_CONFIG_HEXDUMP + depends on BUSYBOX_CONFIG_HEXDUMP help hd is an alias to hexdump -C. @@ -464,221 +474,6 @@ config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS will be unable to determine the current screen size, and will be unable to move the cursor. -config BUSYBOX_CONFIG_VOLUMEID - bool #No description makes it a hidden option - default n - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT - bool "Ext filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS - bool "btrfs filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS - bool "Reiser filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT - bool "fat filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS - bool "hfs filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS - bool "jfs filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_UFS -### bool "ufs filesystem" -### default n -### depends on VOLUMEID -### help -### TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS - bool "xfs filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS - bool "ntfs filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660 - bool "iso9660 filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF - bool "udf filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS - bool "luks filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP - bool "linux swap filesystem" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_LVM -### bool "lvm" -### default n -### depends on VOLUMEID -### help -### TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS - bool "cramfs filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_HPFS -### bool "hpfs filesystem" -### default n -### depends on VOLUMEID -### help -### TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS - bool "romfs filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV - bool "sysv filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_MINIX -### bool "minix filesystem" -### default n -### depends on VOLUMEID -### help -### TODO - -### These only detect partition tables - not used (yet?) -### config FEATURE_VOLUMEID_MAC -### bool "mac filesystem" -### default n -### depends on VOLUMEID -### help -### TODO -### -### config FEATURE_VOLUMEID_MSDOS -### bool "msdos filesystem" -### default n -### depends on VOLUMEID -### help -### TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2 - bool "ocfs2 filesystem" - default n - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_HIGHPOINTRAID -### bool "highpoint raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_ISWRAID -### bool "intel raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_LSIRAID -### bool "lsi raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_VIARAID -### bool "via raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_SILICONRAID -### bool "silicon raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_NVIDIARAID -### bool "nvidia raid" -### default n -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_PROMISERAID -### bool "promise raid" -### default n -### depends on VOLUMEID -### help -### TODO - -config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID - bool "linuxraid" - default y - depends on BUSYBOX_CONFIG_VOLUMEID - help - TODO - config BUSYBOX_CONFIG_MOUNT bool "mount" default y @@ -719,7 +514,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS The idea is to use such virtual filesystems in /etc/fstab. config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL - bool "Support specifiying devices by label or UUID" + bool "Support specifying devices by label or UUID" default n depends on BUSYBOX_CONFIG_MOUNT select BUSYBOX_CONFIG_VOLUMEID @@ -783,9 +578,9 @@ config BUSYBOX_CONFIG_RDATE systems. config BUSYBOX_CONFIG_RDEV - bool "rdev" - default n - help + bool "rdev" + default n + help Print the device node associated with the filesystem mounted at '/'. config BUSYBOX_CONFIG_READPROFILE @@ -895,6 +690,18 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP specify an offset or cryptographic options to the loopback device. (If you don't want umount to free the loop device, use "umount -D".) +config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE + bool "Create new loopback devices if needed" + default n + depends on BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP + help + Linux kernels >= 2.6.24 support unlimited loopback devices. They are + allocated for use when trying to use a loop device. The loop device + must however exist. + + This feature lets mount to try to create next /dev/loopN device + if it does not find a free one. + config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT bool "Support for the old /etc/mtab file" default n @@ -912,11 +719,231 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT If you must use this, keep in mind it's inherently brittle (for example a mount under chroot won't update it), can't handle modern features like separate per-process filesystem namespaces, requires - that your /etc directory be writeable, tends to get easily confused + that your /etc directory be writable, tends to get easily confused by --bind or --move mounts, won't update if you rename a directory that contains a mount point, and so on. (In brief: avoid.) About the only reason to use this is if you've removed /proc from your kernel. +config BUSYBOX_CONFIG_VOLUMEID + bool #No description makes it a hidden option + default n + +menu "Filesystem/Volume identification" + depends on BUSYBOX_CONFIG_VOLUMEID + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT + bool "Ext filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS + bool "btrfs filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS + bool "Reiser filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT + bool "fat filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS + bool "hfs filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS + bool "jfs filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +### config FEATURE_VOLUMEID_UFS +### bool "ufs filesystem" +### default y +### depends on VOLUMEID +### help +### TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS + bool "xfs filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS + bool "ntfs filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660 + bool "iso9660 filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF + bool "udf filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS + bool "luks filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP + bool "linux swap filesystem" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +### config FEATURE_VOLUMEID_LVM +### bool "lvm" +### default y +### depends on VOLUMEID +### help +### TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS + bool "cramfs filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +### config FEATURE_VOLUMEID_HPFS +### bool "hpfs filesystem" +### default y +### depends on VOLUMEID +### help +### TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS + bool "romfs filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV + bool "sysv filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +### config FEATURE_VOLUMEID_MINIX +### bool "minix filesystem" +### default y +### depends on VOLUMEID +### help +### TODO + +### These only detect partition tables - not used (yet?) +### config FEATURE_VOLUMEID_MAC +### bool "mac filesystem" +### default y +### depends on VOLUMEID +### help +### TODO +### +### config FEATURE_VOLUMEID_MSDOS +### bool "msdos filesystem" +### default y +### depends on VOLUMEID +### help +### TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2 + bool "ocfs2 filesystem" + default n + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +### config FEATURE_VOLUMEID_HIGHPOINTRAID +### bool "highpoint raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_ISWRAID +### bool "intel raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_LSIRAID +### bool "lsi raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_VIARAID +### bool "via raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_SILICONRAID +### bool "silicon raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_NVIDIARAID +### bool "nvidia raid" +### default y +### depends on VOLUMEID +### help +### TODO + +### config FEATURE_VOLUMEID_PROMISERAID +### bool "promise raid" +### default y +### depends on VOLUMEID +### help +### TODO + +config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID + bool "linuxraid" + default y + depends on BUSYBOX_CONFIG_VOLUMEID + help + TODO + +endmenu + endmenu diff --git a/package/busybox/patches/000-autoconf.patch b/package/busybox/patches/000-autoconf.patch new file mode 100644 index 000000000..d23745734 --- /dev/null +++ b/package/busybox/patches/000-autoconf.patch @@ -0,0 +1,11 @@ +--- a/applets/Kbuild.src ++++ b/applets/Kbuild.src +@@ -28,7 +28,7 @@ HOSTCFLAGS_usage_pod.o = -I$(srctree_sla + applets/applets.o: include/usage_compressed.h include/applet_tables.h + + applets/applet_tables: .config include/applets.h +-applets/usage: .config include/applets.h ++applets/usage: .config include/applets.h include/autoconf.h + applets/usage_pod: .config include/applet_tables.h include/applets.h + + quiet_cmd_gen_usage_compressed = GEN include/usage_compressed.h diff --git a/package/busybox/patches/000-upstream-mktemp.patch b/package/busybox/patches/000-upstream-mktemp.patch new file mode 100644 index 000000000..a7727ca81 --- /dev/null +++ b/package/busybox/patches/000-upstream-mktemp.patch @@ -0,0 +1,11 @@ +--- a/debianutils/mktemp.c ++++ b/debianutils/mktemp.c +@@ -50,7 +50,7 @@ int mktemp_main(int argc UNUSED_PARAM, c + opts = getopt32(argv, "dqtp:", &path); + + chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX"); +- if (chp[0] != '/' || (opts & 8)) ++ if (!strchr(chp, '/') || (opts & 8)) + chp = concat_path_file(path, chp); + + if (opts & 1) { /* -d */ diff --git a/package/busybox/patches/000-upstream-sed.patch b/package/busybox/patches/000-upstream-sed.patch new file mode 100644 index 000000000..7693d626f --- /dev/null +++ b/package/busybox/patches/000-upstream-sed.patch @@ -0,0 +1,64 @@ +--- a/editors/sed.c ++++ b/editors/sed.c +@@ -61,6 +61,10 @@ + #include "libbb.h" + #include "xregex.h" + ++enum { ++ OPT_in_place = 1 << 0, ++}; ++ + /* Each sed command turns into one of these structures. */ + typedef struct sed_cmd_s { + /* Ordered by alignment requirements: currently 36 bytes on x86 */ +@@ -938,8 +942,11 @@ static void process_files(void) + + if (matched) { + /* once matched, "n,xxx" range is dead, disabling it */ +- if (sed_cmd->beg_line > 0) ++ if (sed_cmd->beg_line > 0 ++ && !(option_mask32 & OPT_in_place) /* but not for -i */ ++ ) { + sed_cmd->beg_line = -2; ++ } + sed_cmd->in_match = !( + /* has the ending line come, or is this a single address command? */ + (sed_cmd->end_line ? +@@ -1270,9 +1277,6 @@ static void add_cmd_block(char *cmdstr) + int sed_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; + int sed_main(int argc UNUSED_PARAM, char **argv) + { +- enum { +- OPT_in_place = 1 << 0, +- }; + unsigned opt; + llist_t *opt_e, *opt_f; + int status = EXIT_SUCCESS; +@@ -1292,6 +1296,7 @@ int sed_main(int argc UNUSED_PARAM, char + opt_e = opt_f = NULL; + opt_complementary = "e::f::" /* can occur multiple times */ + "nn"; /* count -n */ ++ /* -i must be first, to match OPT_in_place definition */ + opt = getopt32(argv, "irne:f:", &opt_e, &opt_f, + &G.be_quiet); /* counter for -n */ + //argc -= optind; +--- a/testsuite/sed.tests ++++ b/testsuite/sed.tests +@@ -270,11 +270,16 @@ testing "sed a cmd ended by double backs + | two \\ + ' + +-# fisrt three lines are deleted; 4th line is matched and printed by "2,3" and by "4" ranges ++# first three lines are deleted; 4th line is matched and printed by "2,3" and by "4" ranges + testing "sed with N skipping lines past ranges on next cmds" \ + "sed -n '1{N;N;d};1p;2,3p;3p;4p'" \ + "4\n4\n" "" "1\n2\n3\n4\n" + ++testing "sed -i with address modifies all files, not only first" \ ++ "cp input input2; sed -i -e '1s/foo/bar/' input input2 && cat input input2; rm input2" \ ++ "bar\nbar\n" "foo\n" "" ++ ++ + # testing "description" "arguments" "result" "infile" "stdin" + + exit $FAILCOUNT diff --git a/package/busybox/patches/000-upstream-shell.patch b/package/busybox/patches/000-upstream-shell.patch new file mode 100644 index 000000000..4f0058e38 --- /dev/null +++ b/package/busybox/patches/000-upstream-shell.patch @@ -0,0 +1,98 @@ +--- a/shell/ash.c ++++ b/shell/ash.c +@@ -4515,6 +4515,7 @@ clear_traps(void) + INT_ON; + } + } ++ may_have_traps = 0; + } + + /* Lives far away from here, needed for forkchild */ +--- /dev/null ++++ b/shell/ash_test/ash-signals/signal7.right +@@ -0,0 +1 @@ ++Bug detected: 0 +--- /dev/null ++++ b/shell/ash_test/ash-signals/signal7.tests +@@ -0,0 +1,18 @@ ++bug() { ++ trap : exit ++ # Bug was causing sh to be run in subshell, ++ # as if this line is replaced with (sh -c ...; exit $?) & ++ # here: ++ sh -c 'echo REAL_CHILD=$$' & ++ echo PARENTS_IDEA_OF_CHILD=$! ++ wait # make sure bkgd shell completes ++} ++ ++bug | { ++while read varval; do ++ eval $varval ++done ++test x"$REAL_CHILD" != x"" \ ++&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" ++echo "Bug detected: $?" ++} +--- a/shell/hush.c ++++ b/shell/hush.c +@@ -3901,8 +3901,6 @@ static void insert_bg_job(struct pipe *p + + if (G_interactive_fd) + printf("[%d] %d %s\n", job->jobid, job->cmds[0].pid, job->cmdtext); +- /* Last command's pid goes to $! */ +- G.last_bg_pid = job->cmds[job->num_cmds - 1].pid; + G.last_jobid = job->jobid; + } + +@@ -4825,6 +4823,8 @@ static int run_list(struct pipe *pi) + if (G.run_list_level == 1) + insert_bg_job(pi); + #endif ++ /* Last command's pid goes to $! */ ++ G.last_bg_pid = pi->cmds[pi->num_cmds - 1].pid; + G.last_exitcode = rcode = EXIT_SUCCESS; + debug_printf_exec(": cmd&: exitcode EXIT_SUCCESS\n"); + } else { +--- /dev/null ++++ b/shell/hush_test/hush-trap/signal7.right +@@ -0,0 +1 @@ ++Bug detected: 0 +--- /dev/null ++++ b/shell/hush_test/hush-trap/signal7.tests +@@ -0,0 +1,18 @@ ++bug() { ++ trap : exit ++ # Bug was causing sh to be run in subshell, ++ # as if this line is replaced with (sh -c ...; exit $?) & ++ # here: ++ sh -c 'echo REAL_CHILD=$$' & ++ echo PARENTS_IDEA_OF_CHILD=$! ++ wait # make sure bkgd shell completes ++} ++ ++bug | { ++while read varval; do ++ eval $varval ++done ++test x"$REAL_CHILD" != x"" \ ++&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" ++echo "Bug detected: $?" ++} +--- a/shell/shell_common.c ++++ b/shell/shell_common.c +@@ -428,9 +428,14 @@ shell_builtin_ulimit(char **argv) + val <<= l->factor_shift; + } + //bb_error_msg("opt %c val_str:'%s' val:%lld", opt_char, val_str, (long long)val); ++ /* from man bash: "If neither -H nor -S ++ * is specified, both the soft and hard ++ * limits are set. */ ++ if (!opts) ++ opts = OPT_hard + OPT_soft; + if (opts & OPT_hard) + limit.rlim_max = val; +- if ((opts & OPT_soft) || opts == 0) ++ if (opts & OPT_soft) + limit.rlim_cur = val; + //bb_error_msg("setrlimit(%d, %lld, %lld)", l->cmd, (long long)limit.rlim_cur, (long long)limit.rlim_max); + if (setrlimit(l->cmd, &limit) < 0) { diff --git a/package/busybox/patches/241-udhcpc-oversized_packets.patch b/package/busybox/patches/241-udhcpc-oversized_packets.patch index b810752fc..ef9e7f4be 100644 --- a/package/busybox/patches/241-udhcpc-oversized_packets.patch +++ b/package/busybox/patches/241-udhcpc-oversized_packets.patch @@ -12,7 +12,7 @@ /* Construct a ip/udp header for a packet, send packet */ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, uint32_t source_nip, int source_port, -@@ -173,11 +178,12 @@ int FAST_FUNC udhcp_send_raw_packet(stru +@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru { struct sockaddr_ll dest_sll; struct ip_udp_dhcp_packet packet; @@ -20,27 +20,36 @@ int fd; int result = -1; const char *msg; - + int p_len = udhcp_get_payload_len(dhcp_pkt); -+ + fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP)); if (fd < 0) { - msg = "socket(%s)"; -@@ -186,7 +192,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru +@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru + } memset(&dest_sll, 0, sizeof(dest_sll)); - memset(&packet, 0, offsetof(struct ip_udp_dhcp_packet, data)); +- memset(&packet, 0, offsetof(struct ip_udp_dhcp_packet, data)); - packet.data = *dhcp_pkt; /* struct copy */ ++ memset(&packet, 0, sizeof(packet)); + memcpy(&(packet.data), dhcp_pkt, p_len); dest_sll.sll_family = AF_PACKET; dest_sll.sll_protocol = htons(ETH_P_IP); -@@ -208,27 +214,25 @@ int FAST_FUNC udhcp_send_raw_packet(stru - * In order to work with those buggy servers, - * we truncate packets after end option byte. - */ -- padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options); +@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru + goto ret_close; + } +- /* We were sending full-sized DHCP packets (zero padded), +- * but some badly configured servers were seen dropping them. +- * Apparently they drop all DHCP packets >576 *ethernet* octets big, +- * whereas they may only drop packets >576 *IP* octets big +- * (which for typical Ethernet II means 590 octets: 6+6+2 + 576). +- * +- * In order to work with those buggy servers, +- * we truncate packets after end option byte. +- */ +- padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options); +- packet.ip.protocol = IPPROTO_UDP; packet.ip.saddr = source_nip; packet.ip.daddr = dest_nip; @@ -65,11 +74,11 @@ udhcp_dump_packet(dhcp_pkt); - result = sendto(fd, &packet, IP_UPD_DHCP_SIZE - padding, /*flags:*/ 0, -+ result = sendto(fd, &packet, p_len, 0, ++ result = sendto(fd, &packet, p_len, /*flags:*/ 0, (struct sockaddr *) &dest_sll, sizeof(dest_sll)); msg = "sendto"; ret_close: -@@ -246,7 +250,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s +@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s uint32_t dest_nip, int dest_port) { struct sockaddr_in client; @@ -77,10 +86,11 @@ int fd; int result = -1; const char *msg; -@@ -278,8 +281,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s +@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s + } udhcp_dump_packet(dhcp_pkt); - +- - padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options); - result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding); + result = safe_write(fd, dhcp_pkt, udhcp_get_payload_len(dhcp_pkt)); diff --git a/package/busybox/patches/250-ash_export-n.patch b/package/busybox/patches/250-ash_export-n.patch index 48efdcf94..9c23920b8 100644 --- a/package/busybox/patches/250-ash_export-n.patch +++ b/package/busybox/patches/250-ash_export-n.patch @@ -1,6 +1,6 @@ --- a/shell/ash.c +++ b/shell/ash.c -@@ -12428,8 +12428,17 @@ exportcmd(int argc UNUSED_PARAM, char ** +@@ -12429,8 +12429,17 @@ exportcmd(int argc UNUSED_PARAM, char ** const char *p; char **aptr; int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT; @@ -19,7 +19,7 @@ aptr = argptr; name = *aptr; if (name) { -@@ -12441,10 +12450,12 @@ exportcmd(int argc UNUSED_PARAM, char ** +@@ -12442,10 +12451,12 @@ exportcmd(int argc UNUSED_PARAM, char ** vp = *findvar(hashvar(name), name); if (vp) { vp->flags |= flag; diff --git a/package/busybox/patches/300-netmsg.patch b/package/busybox/patches/300-netmsg.patch index 7e48930bb..b7dd5d986 100644 --- a/package/busybox/patches/300-netmsg.patch +++ b/package/busybox/patches/300-netmsg.patch @@ -8,18 +8,6 @@ IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP)) IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP)) IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP)) ---- a/include/usage.src.h -+++ b/include/usage.src.h -@@ -2961,6 +2961,9 @@ INSERT - " or\n" \ - "$ nameif -c /etc/my_mactab_file\n" \ - -+#define netmsg_trivial_usage NOUSAGE_STR -+#define netmsg_full_usage "" -+ - #define netstat_trivial_usage \ - "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]" - #define netstat_full_usage "\n\n" \ --- a/networking/Config.src +++ b/networking/Config.src @@ -623,6 +623,12 @@ config FEATURE_NAMEIF_EXTENDED @@ -30,7 +18,7 @@ + bool "netmsg" + default n + help -+ simple program for sending udp broadcast messages ++ simple program for sending udp broadcast messages + config NETSTAT bool "netstat" @@ -111,3 +99,20 @@ + close(s); + exit(1); +} +--- a/include/usage.src.h ++++ b/include/usage.src.h +@@ -1,3 +1,4 @@ ++ + /* vi: set sw=8 ts=8: */ + /* + * This file suffers from chronically incorrect tabification +@@ -2961,6 +2962,9 @@ INSERT + " or\n" \ + "$ nameif -c /etc/my_mactab_file\n" \ + ++#define netmsg_trivial_usage NOUSAGE_STR ++#define netmsg_full_usage "" ++ + #define netstat_trivial_usage \ + "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]" + #define netstat_full_usage "\n\n" \ diff --git a/package/busybox/patches/310-passwd_access.patch b/package/busybox/patches/310-passwd_access.patch index 24241c126..5faf6faf1 100644 --- a/package/busybox/patches/310-passwd_access.patch +++ b/package/busybox/patches/310-passwd_access.patch @@ -3,7 +3,7 @@ --- a/networking/httpd.c +++ b/networking/httpd.c -@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char +@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char if (ENABLE_FEATURE_HTTPD_AUTH_MD5) { char *md5_passwd; diff --git a/package/busybox/patches/340-lock_util.patch b/package/busybox/patches/340-lock_util.patch index b974b0446..473d1b9ac 100644 --- a/package/busybox/patches/340-lock_util.patch +++ b/package/busybox/patches/340-lock_util.patch @@ -10,7 +10,7 @@ IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname)) --- a/include/usage.src.h +++ b/include/usage.src.h -@@ -2319,6 +2319,9 @@ INSERT +@@ -2320,6 +2320,9 @@ INSERT #define loadkmap_example_usage \ "$ loadkmap < /etc/i18n/lang-keymap\n" diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch index 2bd569c29..7437d898c 100644 --- a/package/busybox/patches/350-httpd_redir.patch +++ b/package/busybox/patches/350-httpd_redir.patch @@ -1,6 +1,6 @@ --- a/include/usage.src.h +++ b/include/usage.src.h -@@ -1718,7 +1718,8 @@ INSERT +@@ -1719,7 +1719,8 @@ INSERT IF_FEATURE_HTTPD_SETUID(" [-u USER[:GRP]]") \ IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \ " [-h HOME]\n" \ @@ -10,16 +10,15 @@ #define httpd_full_usage "\n\n" \ "Listen for incoming HTTP requests\n" \ "\nOptions:" \ -@@ -2321,6 +2322,9 @@ INSERT +@@ -1737,6 +1738,8 @@ INSERT + "\n -m STRING MD5 crypt STRING") \ + "\n -e STRING HTML encode STRING" \ + "\n -d STRING URL decode STRING" \ ++ "\n -R PATH Redirect target path" \ ++ "\n -H HOST Redirect target host" \ - #define lock_trivial_usage NOUSAGE_STR - #define lock_full_usage "" -+ -+#define lock_trivial_usage NOUSAGE_STR -+#define lock_full_usage "" - - #define logger_trivial_usage \ - "[OPTIONS] [MESSAGE]" + #define hwclock_trivial_usage \ + IF_FEATURE_HWCLOCK_LONG_OPTIONS( \ --- a/networking/httpd.c +++ b/networking/httpd.c @@ -250,6 +250,8 @@ struct globals { diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch index ef170a20c..8f52d985f 100644 --- a/package/busybox/patches/470-insmod_search.patch +++ b/package/busybox/patches/470-insmod_search.patch @@ -124,7 +124,7 @@ string "Default directory containing modules" default "/lib/modules" - depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO -+ depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO || INSMOD ++ depends on DEPMOD || INSMOD || MODPROBE || MODPROBE_SMALL || MODINFO help Directory that contains kernel modules. Defaults to "/lib/modules" diff --git a/package/busybox/patches/510-awk_include.patch b/package/busybox/patches/510-awk_include.patch index 36dd080f9..07f28c9de 100644 --- a/package/busybox/patches/510-awk_include.patch +++ b/package/busybox/patches/510-awk_include.patch @@ -1,6 +1,11 @@ --- a/editors/awk.c +++ b/editors/awk.c -@@ -70,9 +70,14 @@ typedef struct chain_s { +@@ -1,3 +1,4 @@ ++ + /* vi: set sw=4 ts=4: */ + /* + * awk implementation for busybox +@@ -70,9 +71,14 @@ typedef struct chain_s { } chain; /* Function */ @@ -15,7 +20,7 @@ } func; /* I/O stream */ -@@ -1453,7 +1458,8 @@ static void parse_program(char *p) +@@ -1453,7 +1459,8 @@ static void parse_program(char *p) next_token(TC_FUNCTION); g_pos++; f = newfunc(t_string); @@ -25,7 +30,7 @@ f->nargs = 0; while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) { v = findvar(ahash, t_string); -@@ -1462,7 +1468,7 @@ static void parse_program(char *p) +@@ -1462,7 +1469,7 @@ static void parse_program(char *p) if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM) break; } @@ -34,7 +39,7 @@ chain_group(); clear_array(ahash); -@@ -2547,7 +2553,8 @@ static var *evaluate(node *op, var *res) +@@ -2547,7 +2554,8 @@ static var *evaluate(node *op, var *res) var *vbeg, *v; const char *sv_progname; @@ -44,7 +49,7 @@ syntax_error(EMSG_UNDEF_FUNC); vbeg = v = nvalloc(op->r.f->nargs + 1); -@@ -2564,7 +2571,10 @@ static var *evaluate(node *op, var *res) +@@ -2564,7 +2572,10 @@ static var *evaluate(node *op, var *res) fnargs = vbeg; sv_progname = g_progname; @@ -56,7 +61,7 @@ g_progname = sv_progname; nvfree(fnargs); -@@ -2942,6 +2952,143 @@ static rstream *next_input_file(void) +@@ -2942,6 +2953,143 @@ static rstream *next_input_file(void) #undef files_happen } @@ -200,7 +205,7 @@ int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int awk_main(int argc, char **argv) { -@@ -3007,6 +3154,9 @@ int awk_main(int argc, char **argv) +@@ -3007,6 +3155,9 @@ int awk_main(int argc, char **argv) *s1 = '='; } } diff --git a/package/busybox/patches/610-syslog-remote-retry-connection.patch b/package/busybox/patches/610-syslog-remote-retry-connection.patch index 949ac9fd4..94cd3ded0 100644 --- a/package/busybox/patches/610-syslog-remote-retry-connection.patch +++ b/package/busybox/patches/610-syslog-remote-retry-connection.patch @@ -1,34 +1,26 @@ --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c -@@ -98,6 +98,8 @@ struct globals { - GLOBALS - - #if ENABLE_FEATURE_REMOTE_LOG -+ len_and_sockaddr *remoteAddr; -+ int remoteFD; - llist_t *remoteHosts; - #endif - #if ENABLE_FEATURE_IPC_SYSLOG -@@ -554,6 +556,7 @@ static void do_syslogd(void) NORETURN; - static void do_syslogd(void) +@@ -555,6 +555,7 @@ static void do_syslogd(void) { int sock_fd; -+ int send_err = 0; #if ENABLE_FEATURE_REMOTE_LOG ++ int send_err = 0; llist_t *item; #endif -@@ -637,10 +640,23 @@ static void do_syslogd(void) + #if ENABLE_FEATURE_SYSLOGD_DUP +@@ -636,11 +637,23 @@ static void do_syslogd(void) + if (rh->remoteFD == -1) continue; } - /* Send message to remote logger, ignore possible error */ +- /* Send message to remote logger, ignore possible error */ - /* TODO: on some errors, close and set G.remoteFD to -1 - * so that DNS resolution and connect is retried? */ - sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT, - &(rh->remoteAddr->u.sa), rh->remoteAddr->len); ++ /* Send message to remote logger */ + if (sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT, -+ &G.remoteAddr->u.sa, G.remoteAddr->len) == -1 ) { ++ &(rh->remoteAddr->u.sa), rh->remoteAddr->len) == -1) + send_err = errno; -+ } + + /* On some errors, close and set G.remoteFD to -1 + * so that DNS resolution and connect is retried */ @@ -38,8 +30,8 @@ + case EISCONN: + case ENOTCONN: + case EPIPE: -+ close(G.remoteFD); -+ G.remoteFD = -1; ++ close(rh->remoteFD); ++ rh->remoteFD = -1; + break; + } } diff --git a/package/busybox/patches/803-id_getgrouplist.patch b/package/busybox/patches/803-id_getgrouplist.patch index 48aa57c04..dd2dee66f 100644 --- a/package/busybox/patches/803-id_getgrouplist.patch +++ b/package/busybox/patches/803-id_getgrouplist.patch @@ -31,7 +31,7 @@ Signed-off-by: Nicolas Thill /* I guess *n < 0 might indicate error. Anyway, * malloc'ing -1 bytes won't be good, so: */ //if (*n < 0) -@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char +@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char if (egid != rgid) status |= print_group(egid, " "); } @@ -39,7 +39,7 @@ Signed-off-by: Nicolas Thill /* We are supplying largish buffer, trying * to not run get_groups() twice. That might be slow * ("user database in remote SQL server" case) */ -@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char +@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char } if (ENABLE_FEATURE_CLEAN_UP) free(groups); diff --git a/package/busybox/patches/920-mktemp.patch b/package/busybox/patches/920-mktemp.patch deleted file mode 100644 index a7727ca81..000000000 --- a/package/busybox/patches/920-mktemp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/debianutils/mktemp.c -+++ b/debianutils/mktemp.c -@@ -50,7 +50,7 @@ int mktemp_main(int argc UNUSED_PARAM, c - opts = getopt32(argv, "dqtp:", &path); - - chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX"); -- if (chp[0] != '/' || (opts & 8)) -+ if (!strchr(chp, '/') || (opts & 8)) - chp = concat_path_file(path, chp); - - if (opts & 1) { /* -d */ diff --git a/package/busybox/patches/921-sed.patch b/package/busybox/patches/921-sed.patch deleted file mode 100644 index 7693d626f..000000000 --- a/package/busybox/patches/921-sed.patch +++ /dev/null @@ -1,64 +0,0 @@ ---- a/editors/sed.c -+++ b/editors/sed.c -@@ -61,6 +61,10 @@ - #include "libbb.h" - #include "xregex.h" - -+enum { -+ OPT_in_place = 1 << 0, -+}; -+ - /* Each sed command turns into one of these structures. */ - typedef struct sed_cmd_s { - /* Ordered by alignment requirements: currently 36 bytes on x86 */ -@@ -938,8 +942,11 @@ static void process_files(void) - - if (matched) { - /* once matched, "n,xxx" range is dead, disabling it */ -- if (sed_cmd->beg_line > 0) -+ if (sed_cmd->beg_line > 0 -+ && !(option_mask32 & OPT_in_place) /* but not for -i */ -+ ) { - sed_cmd->beg_line = -2; -+ } - sed_cmd->in_match = !( - /* has the ending line come, or is this a single address command? */ - (sed_cmd->end_line ? -@@ -1270,9 +1277,6 @@ static void add_cmd_block(char *cmdstr) - int sed_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int sed_main(int argc UNUSED_PARAM, char **argv) - { -- enum { -- OPT_in_place = 1 << 0, -- }; - unsigned opt; - llist_t *opt_e, *opt_f; - int status = EXIT_SUCCESS; -@@ -1292,6 +1296,7 @@ int sed_main(int argc UNUSED_PARAM, char - opt_e = opt_f = NULL; - opt_complementary = "e::f::" /* can occur multiple times */ - "nn"; /* count -n */ -+ /* -i must be first, to match OPT_in_place definition */ - opt = getopt32(argv, "irne:f:", &opt_e, &opt_f, - &G.be_quiet); /* counter for -n */ - //argc -= optind; ---- a/testsuite/sed.tests -+++ b/testsuite/sed.tests -@@ -270,11 +270,16 @@ testing "sed a cmd ended by double backs - | two \\ - ' - --# fisrt three lines are deleted; 4th line is matched and printed by "2,3" and by "4" ranges -+# first three lines are deleted; 4th line is matched and printed by "2,3" and by "4" ranges - testing "sed with N skipping lines past ranges on next cmds" \ - "sed -n '1{N;N;d};1p;2,3p;3p;4p'" \ - "4\n4\n" "" "1\n2\n3\n4\n" - -+testing "sed -i with address modifies all files, not only first" \ -+ "cp input input2; sed -i -e '1s/foo/bar/' input input2 && cat input input2; rm input2" \ -+ "bar\nbar\n" "foo\n" "" -+ -+ - # testing "description" "arguments" "result" "infile" "stdin" - - exit $FAILCOUNT diff --git a/package/busybox/patches/922-shell.patch b/package/busybox/patches/922-shell.patch deleted file mode 100644 index 4f0058e38..000000000 --- a/package/busybox/patches/922-shell.patch +++ /dev/null @@ -1,98 +0,0 @@ ---- a/shell/ash.c -+++ b/shell/ash.c -@@ -4515,6 +4515,7 @@ clear_traps(void) - INT_ON; - } - } -+ may_have_traps = 0; - } - - /* Lives far away from here, needed for forkchild */ ---- /dev/null -+++ b/shell/ash_test/ash-signals/signal7.right -@@ -0,0 +1 @@ -+Bug detected: 0 ---- /dev/null -+++ b/shell/ash_test/ash-signals/signal7.tests -@@ -0,0 +1,18 @@ -+bug() { -+ trap : exit -+ # Bug was causing sh to be run in subshell, -+ # as if this line is replaced with (sh -c ...; exit $?) & -+ # here: -+ sh -c 'echo REAL_CHILD=$$' & -+ echo PARENTS_IDEA_OF_CHILD=$! -+ wait # make sure bkgd shell completes -+} -+ -+bug | { -+while read varval; do -+ eval $varval -+done -+test x"$REAL_CHILD" != x"" \ -+&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" -+echo "Bug detected: $?" -+} ---- a/shell/hush.c -+++ b/shell/hush.c -@@ -3901,8 +3901,6 @@ static void insert_bg_job(struct pipe *p - - if (G_interactive_fd) - printf("[%d] %d %s\n", job->jobid, job->cmds[0].pid, job->cmdtext); -- /* Last command's pid goes to $! */ -- G.last_bg_pid = job->cmds[job->num_cmds - 1].pid; - G.last_jobid = job->jobid; - } - -@@ -4825,6 +4823,8 @@ static int run_list(struct pipe *pi) - if (G.run_list_level == 1) - insert_bg_job(pi); - #endif -+ /* Last command's pid goes to $! */ -+ G.last_bg_pid = pi->cmds[pi->num_cmds - 1].pid; - G.last_exitcode = rcode = EXIT_SUCCESS; - debug_printf_exec(": cmd&: exitcode EXIT_SUCCESS\n"); - } else { ---- /dev/null -+++ b/shell/hush_test/hush-trap/signal7.right -@@ -0,0 +1 @@ -+Bug detected: 0 ---- /dev/null -+++ b/shell/hush_test/hush-trap/signal7.tests -@@ -0,0 +1,18 @@ -+bug() { -+ trap : exit -+ # Bug was causing sh to be run in subshell, -+ # as if this line is replaced with (sh -c ...; exit $?) & -+ # here: -+ sh -c 'echo REAL_CHILD=$$' & -+ echo PARENTS_IDEA_OF_CHILD=$! -+ wait # make sure bkgd shell completes -+} -+ -+bug | { -+while read varval; do -+ eval $varval -+done -+test x"$REAL_CHILD" != x"" \ -+&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD" -+echo "Bug detected: $?" -+} ---- a/shell/shell_common.c -+++ b/shell/shell_common.c -@@ -428,9 +428,14 @@ shell_builtin_ulimit(char **argv) - val <<= l->factor_shift; - } - //bb_error_msg("opt %c val_str:'%s' val:%lld", opt_char, val_str, (long long)val); -+ /* from man bash: "If neither -H nor -S -+ * is specified, both the soft and hard -+ * limits are set. */ -+ if (!opts) -+ opts = OPT_hard + OPT_soft; - if (opts & OPT_hard) - limit.rlim_max = val; -- if ((opts & OPT_soft) || opts == 0) -+ if (opts & OPT_soft) - limit.rlim_cur = val; - //bb_error_msg("setrlimit(%d, %lld, %lld)", l->cmd, (long long)limit.rlim_cur, (long long)limit.rlim_max); - if (setrlimit(l->cmd, &limit) < 0) { -- cgit v1.2.3