busybox: update to v1.12.4 (partially closes: #4279)

SVN-Revision: 16053
This commit is contained in:
Nicolas Thill 2009-05-25 13:52:31 +00:00
parent 9e9ac96aeb
commit 9a16485900
40 changed files with 542 additions and 472 deletions

View file

@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.11.3
PKG_RELEASE:=6
PKG_VERSION:=1.12.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
http://distfiles.gentoo.org/distfiles/
PKG_MD5SUM:=4355ad8bb57ce3b39ad827566c1a6da3
PKG_MD5SUM:=5b8c427bf596732d6b6156672e6e093f
include $(INCLUDE_DIR)/package.mk

View file

@ -20,6 +20,15 @@ config BUSYBOX_CONFIG_DESKTOP
Select this only if you plan to use busybox on full-blown
desktop machine with common Linux distro, not on an embedded box.
config BUSYBOX_CONFIG_EXTRA_COMPAT
bool "Provide compatible behavior for rare corner cases (bigger code)"
default n
help
This option makes grep, sed etc handle rare corner cases
(embedded NUL bytes and such). This makes code bigger and uses
some GNU extensions in libc. You probably only need this option
if you plan to run busybox on desktop.
config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
bool "Assume that 1:1 char/glyph correspondence is not true"
default n
@ -169,11 +178,12 @@ config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
An example might help:
[SUID]
su = ssx root.0 # applet su can be run by anyone and runs with euid=0/egid=0
su = ssx root.0 # applet su can be run by anyone and runs with
# euid=0/egid=0
su = ssx # exactly the same
mount = sx- root.disk # applet mount can be run by root and members of group disk
# and runs with euid=0
mount = sx- root.disk # applet mount can be run by root and members
# of group disk and runs with euid=0
cp = --- # disable applet cp for everyone
@ -192,8 +202,9 @@ config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET
default n
depends on BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
help
/etc/busybox.conf should be readable by the user needing the SUID, check
this option to avoid users to be notified about missing permissions.
/etc/busybox.conf should be readable by the user needing the SUID,
check this option to avoid users to be notified about missing
permissions.
config BUSYBOX_CONFIG_SELINUX
bool "Support NSA Security Enhanced Linux"
@ -329,7 +340,7 @@ config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
config BUSYBOX_CONFIG_FEATURE_INDIVIDUAL
bool "Produce a binary for each applet, linked against libbusybox"
default n
depends on !BUSYBOX_CONFIG_STATIC && BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
help
If your CPU architecture doesn't allow for sharing text/rodata
sections of running binaries, but allows for runtime dynamic
@ -347,7 +358,7 @@ config BUSYBOX_CONFIG_FEATURE_INDIVIDUAL
config BUSYBOX_CONFIG_FEATURE_SHARED_BUSYBOX
bool "Produce additional busybox binary linked against libbusybox"
default n
depends on !BUSYBOX_CONFIG_STATIC && BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
help
Build busybox, dynamically linked against libbusybox.so.N.N.N.
@ -410,7 +421,7 @@ config BUSYBOX_CONFIG_DEBUG
Most people should answer N.
config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
bool "Disable compiler optimizations."
bool "Disable compiler optimizations"
default n
depends on BUSYBOX_CONFIG_DEBUG
help
@ -444,9 +455,10 @@ choice
want to properly set your environment, for example:
export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
The 'debug=' value is generated using the following command
dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
-p check-fence -p check-heap -p check-lists -p check-blank \
-p check-funcs -p realloc-copy -p allow-free-null
dmalloc -p log-stats -p log-non-free -p log-bad-space \
-p log-elapsed-time -p check-fence -p check-heap \
-p check-lists -p check-blank -p check-funcs -p realloc-copy \
-p allow-free-null
Electric-fence support:
-----------------------
@ -478,6 +490,9 @@ config BUSYBOX_CONFIG_INCLUDE_SUSv2
will be supported in head, tail, and fold. (Note: should
affect renice too.)
config BUSYBOX_CONFIG_PARSE
bool "Uniform config file parser debugging applet: parse"
endmenu
menu 'Installation Options'
@ -505,8 +520,8 @@ config BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
config BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS
bool "as hard-links"
help
Install applets as hard-links to the busybox binary. This might count
on a filesystem with few inodes.
Install applets as hard-links to the busybox binary. This might
count on a filesystem with few inodes.
config BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS
bool "as script wrappers"
@ -542,7 +557,8 @@ config BUSYBOX_CONFIG_INSTALL_SH_APPLET_HARDLINK
config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER
bool "as script wrapper"
help
Install /bin/sh applet as script wrapper that call the busybox binary.
Install /bin/sh applet as script wrapper that call the busybox
binary.
endchoice

View file

@ -5,6 +5,30 @@
menu "Archival Utilities"
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
bool "Make tar, rpm, modprobe etc understand .lzma data"
default n
help
Make tar, rpm, modprobe etc understand .lzma data.
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2
bool "Make tar, rpm, modprobe etc understand .bz2 data"
default y
help
Make tar, rpm, modprobe etc understand .bz2 data.
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
bool "Make tar, rpm, modprobe etc understand .gz data"
default y
help
Make tar, rpm, modprobe etc understand .gz data.
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z
bool "Make tar and gunzip understand .Z data"
default n
help
Make tar and gunzip understand .Z data.
config BUSYBOX_CONFIG_AR
bool "ar"
default n
@ -33,8 +57,8 @@ config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
default n
depends on BUSYBOX_CONFIG_AR
help
By default the ar format can only store the first 15 characters of the
filename, this option removes that limitation.
By default the ar format can only store the first 15 characters of
the filename, this option removes that limitation.
It supports the GNU ar long filename method which moves multiple long
filenames into a the data section of a new ar entry.
@ -53,7 +77,7 @@ config BUSYBOX_CONFIG_BUNZIP2
config BUSYBOX_CONFIG_BZIP2
bool "bzip2"
default n
default y
help
bzip2 is a compression utility using the Burrows-Wheeler block
sorting text compression algorithm, and Huffman coding. Compression
@ -68,15 +92,15 @@ config BUSYBOX_CONFIG_CPIO
bool "cpio"
default n
help
cpio is an archival utility program used to create, modify, and extract
contents from archives.
cpio is an archival utility program used to create, modify, and
extract contents from archives.
cpio has 110 bytes of overheads for every stored file.
This implementation of cpio can extract cpio archives created in the
"newc" or "crc" format, it cannot create or modify them.
Unless you have a specific application which requires cpio, you should
probably say N here.
Unless you have a specific application which requires cpio, you
should probably say N here.
config BUSYBOX_CONFIG_FEATURE_CPIO_O
bool "Support for archive creation"
@ -90,30 +114,33 @@ config BUSYBOX_CONFIG_DPKG
bool "dpkg"
default n
help
dpkg is a medium-level tool to install, build, remove and manage Debian packages.
dpkg is a medium-level tool to install, build, remove and manage
Debian packages.
This implementation of dpkg has a number of limitations, you should use the
official dpkg if possible.
This implementation of dpkg has a number of limitations,
you should use the official dpkg if possible.
config BUSYBOX_CONFIG_DPKG_DEB
bool "dpkg_deb"
default n
help
dpkg-deb packs, unpacks and provides information about Debian archives.
dpkg-deb packs, unpacks and provides information about Debian
archives.
This implementation of dpkg-deb cannot pack archives.
Unless you have a specific application which requires dpkg-deb, you should
probably say N here.
Unless you have a specific application which requires dpkg-deb,
say N here.
config BUSYBOX_CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
bool "Extract only (-x)"
default n
depends on BUSYBOX_CONFIG_DPKG_DEB
help
This reduces dpkg-deb to the equivalent of "ar -p <deb> data.tar.gz | tar -zx".
However it saves space as none of the extra dpkg-deb, ar or tar options are
needed, they are linked to internally.
This reduces dpkg-deb to the equivalent of
"ar -p <deb> data.tar.gz | tar -zx". However it saves space as none
of the extra dpkg-deb, ar or tar options are needed, they are linked
to internally.
config BUSYBOX_CONFIG_GUNZIP
bool "gunzip"
@ -123,15 +150,6 @@ config BUSYBOX_CONFIG_GUNZIP
You can use the `-t' option to test the integrity of
an archive, without decompressing it.
config BUSYBOX_CONFIG_FEATURE_GUNZIP_UNCOMPRESS
bool "Uncompress support"
default y
depends on BUSYBOX_CONFIG_GUNZIP
help
Enable if you want gunzip to have the ability to decompress
archives created by the program compress (not much
used anymore).
config BUSYBOX_CONFIG_GZIP
bool "gzip"
default y
@ -151,13 +169,6 @@ config BUSYBOX_CONFIG_RPM
help
Mini RPM applet - queries and extracts RPM packages.
config BUSYBOX_CONFIG_FEATURE_RPM_BZ2
bool "Enable handling of rpms with bzip2-compressed data inside"
default n
depends on BUSYBOX_CONFIG_RPM
help
Enable handling of rpms with bzip2-compressed data inside.
config BUSYBOX_CONFIG_TAR
bool "tar"
default y
@ -166,6 +177,8 @@ config BUSYBOX_CONFIG_TAR
create compressed archives. It's probably the most widely used
UNIX archive program.
if TAR
config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
bool "Enable archive creation"
default y
@ -174,45 +187,13 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
If you enable this option you'll be able to create
tar archives using the `-c' option.
config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
bool "Enable -z option"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option tar will be able to call gzip,
when creating or extracting tar gziped archives.
config BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
bool "Enable -j option to handle .tar.bz2 files"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option you'll be able to extract
archives compressed with bzip2.
config BUSYBOX_CONFIG_FEATURE_TAR_LZMA
bool "Enable -a option to handle .tar.lzma files"
default n
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option you'll be able to extract
archives compressed with lzma.
config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
bool "Enable -Z option"
default n
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option tar will be able to call uncompress,
when extracting .tar.Z archives.
config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
bool "Let tar autodetect gz/bz2 compresses tarballs"
bool "Autodetect gz/bz2 compressed tarballs"
default n
depends on BUSYBOX_CONFIG_FEATURE_TAR_GZIP || BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
depends on BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
help
With this option tar can automatically detect gzip/bzip2 compressed
tarballs. Currently it works only on seekable streams.
tarballs. Currently it works only on files (not pipes etc).
config BUSYBOX_CONFIG_FEATURE_TAR_FROM
bool "Enable -X (exclude from) and -T (include from) options)"
@ -237,8 +218,9 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
depends on BUSYBOX_CONFIG_TAR
help
This option is required to unpack archives created by some old
version of Sun's tar (it was calculating checksum using signed arithmetic).
It is said to be fixed in newer Sun tar, but "old" tarballs still exist.
version of Sun's tar (it was calculating checksum using signed
arithmetic). It is said to be fixed in newer Sun tar, but "old"
tarballs still exist.
config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
bool "Support for GNU tar extensions (long filenames)"
@ -264,6 +246,8 @@ config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
listings (-t) and preserving permissions when unpacking (-p).
+200 bytes.
endif #tar
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
default n
@ -304,41 +288,4 @@ config BUSYBOX_CONFIG_UNZIP
current directory. Use the `-d' option to extract to a
directory of your choice.
comment "Common options for cpio and tar"
depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
comment "Common options for dpkg and dpkg_deb"
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
config BUSYBOX_CONFIG_FEATURE_DEB_TAR_GZ
bool "gzip debian packages (normal)"
default n if BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
help
This is the default compression method inside the debian ar file.
If you want compatibility with standard .deb's you should say yes here.
config BUSYBOX_CONFIG_FEATURE_DEB_TAR_BZ2
bool "bzip2 debian packages"
default n
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
help
This allows dpkg and dpkg-deb to extract deb's that are compressed internally
with bzip2 instead of gzip.
You only want this if you are creating your own custom debian packages that
use an internal control.tar.bz2 or data.tar.bz2.
config BUSYBOX_CONFIG_FEATURE_DEB_TAR_LZMA
bool "lzma debian packages"
default n
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
help
This allows dpkg and dpkg-deb to extract deb's that are compressed
internally with lzma instead of gzip.
You only want this if you are creating your own custom debian
packages that use an internal control.tar.lzma or data.tar.lzma.
endmenu

View file

@ -95,6 +95,12 @@ config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
help
Support long options for the setconsole applet.
config BUSYBOX_CONFIG_SETFONT
bool "setfont"
default n
help
Allows to load console screen map. Useful for i18n.
config BUSYBOX_CONFIG_SETKEYCODES
bool "setkeycodes"
default n
@ -108,4 +114,10 @@ config BUSYBOX_CONFIG_SETLOGCONS
help
This program redirects the output console of kernel messages.
config BUSYBOX_CONFIG_SHOWKEY
bool "showkey"
default n
help
Shows keys pressed.
endmenu

View file

@ -117,7 +117,8 @@ config BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
print to standard error the number of records read and written
so far, then to resume copying.
$ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid
$ dd if=/dev/zero of=/dev/null&
$ pid=$! kill -USR1 $pid; sleep 1; kill $pid
10899206+0 records in 10899206+0 records out
config BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS
@ -509,18 +510,33 @@ config BUSYBOX_CONFIG_SHA1SUM
Compute and check SHA1 message digest
config BUSYBOX_CONFIG_SLEEP
bool "sleep (single integer arg with no suffix)"
bool "sleep"
default y
help
sleep is used to pause for a specified number of seconds,
sleep is used to pause for a specified number of seconds.
It comes in 3 versions:
- small: takes one integer parameter
- fancy: takes multiple integer arguments with suffixes:
sleep 1d 2h 3m 15s
- fancy with fractional numbers:
sleep 2.3s 4.5h sleeps for 16202.3 seconds
Last one is "the most compatible" with coreutils sleep,
but it adds around 1k of code.
config BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
bool "Enable multiple integer args and optional time suffixes"
bool "Enable multiple arguments and s/m/h/d suffixes"
default y
depends on BUSYBOX_CONFIG_SLEEP
help
Allow sleep to pause for specified minutes, hours, and days.
config BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP
bool "Enable fractional arguments"
default n
depends on BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
help
Allow for fractional numeric parameters.
config BUSYBOX_CONFIG_SORT
bool "sort"
default y
@ -738,7 +754,7 @@ config BUSYBOX_CONFIG_FEATURE_WC_LARGE
default n
depends on BUSYBOX_CONFIG_WC
help
Use "unsigned long long" in wc for count variables
Use "unsigned long long" in wc for count variables.
config BUSYBOX_CONFIG_WHO
bool "who"

View file

@ -26,8 +26,8 @@ config BUSYBOX_CONFIG_RUN_PARTS
It is useful to set up a directory like cron.daily, where you need to
execute all the scripts in that directory.
In this implementation of run-parts some features (such as report mode)
are not implemented.
In this implementation of run-parts some features (such as report
mode) are not implemented.
Unless you know that run-parts is used in some of your scripts
you can safely say N here.

View file

@ -101,7 +101,7 @@ config BUSYBOX_CONFIG_DELGROUP
Utility for deleting a group account.
config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
bool "Support for removing users from groups."
bool "Support for removing users from groups"
default n
depends on BUSYBOX_CONFIG_DELGROUP
help

View file

@ -168,7 +168,8 @@ config BUSYBOX_CONFIG_DEVFSD_FG_NP
depends on BUSYBOX_CONFIG_DEVFSD
help
-fg Run the daemon in the foreground.
-np Exit after parsing the configuration file. Do not poll for events.
-np Exit after parsing the configuration file.
Do not poll for events.
config BUSYBOX_CONFIG_DEVFSD_VERBOSE
bool "Increases logging (and size)"
@ -226,7 +227,8 @@ config BUSYBOX_CONFIG_INOTIFYD
bool "inotifyd"
default n
help
Simple inotify daemon. Reports filesystem changes. Requires kernel >= 2.6.13
Simple inotify daemon. Reports filesystem changes. Requires
kernel >= 2.6.13
config BUSYBOX_CONFIG_LAST
bool "last"
@ -340,7 +342,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
This is dangerous stuff, so you should probably say N.
config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
bool "perform device reset (DANGEROUS)"
bool "Perform device reset (DANGEROUS)"
default n
depends on BUSYBOX_CONFIG_HDPARM
help
@ -348,7 +350,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
This is dangerous stuff, so you should probably say N.
config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
bool "tristate device for hotswap (DANGEROUS)"
bool "Tristate device for hotswap (DANGEROUS)"
default n
depends on BUSYBOX_CONFIG_HDPARM
help
@ -357,7 +359,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
stuff, so you should probably say N.
config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
bool "get/set using_dma flag (DANGEROUS)"
bool "Get/set using_dma flag (DANGEROUS)"
default n
depends on BUSYBOX_CONFIG_HDPARM
help
@ -509,8 +511,9 @@ config BUSYBOX_CONFIG_TTYSIZE
default n
help
A replacement for "stty size". Unlike stty, can report only width,
only height, or both, in any order. It also does not complain on error,
but returns default 80x24. Usage in shell scripts: width=`ttysize w`.
only height, or both, in any order. It also does not complain on
error, but returns default 80x24.
Usage in shell scripts: width=`ttysize w`.
config BUSYBOX_CONFIG_WATCHDOG
bool "watchdog"

View file

@ -5,14 +5,64 @@
menu "Linux Module Utilities"
config BUSYBOX_CONFIG_MODPROBE_SMALL
bool "Simplified modutils"
default n
help
Simplified modutils.
With this option modprobe does not require modules.dep file
and does not use /etc/modules.conf file.
It scans module files in /lib/modules/`uname -r` and
determines dependencies and module alias names on the fly.
This may make module loading slower, most notably
when one needs to load module by alias (this requires
scanning through module _bodies_).
At the first attempt to load a module by alias modprobe
will try to generate modules.dep.bb file in order to speed up
future loads by alias. Failure to do so (read-only /lib/modules,
etc) is not reported, and future modprobes will be slow too.
NB: modules.dep.bb file format is not compatible
with modules.dep file as created/used by standard module tools.
Additional module parameters can be stored in
/etc/modules/$module_name files.
Apart from modprobe, other utilities are also provided:
- insmod is an alias to modprobe
- rmmod is an alias to modprobe -r
- depmod generates modules.dep.bb
As of 2008-07, this code is experimental. It is 14kb smaller
than "non-small" modutils.
config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE
bool "Accept module options on modprobe command line"
default n
depends on BUSYBOX_CONFIG_MODPROBE_SMALL
help
Allow insmod and modprobe take module options from command line.
N.B. Very bloaty.
config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
bool "Skip loading of already loaded modules"
default n
depends on BUSYBOX_CONFIG_MODPROBE_SMALL
help
Check if the module is already loaded.
N.B. It's racy.
config BUSYBOX_CONFIG_DEPMOD
bool "depmod"
default n
depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
help
depmod generates modules.dep (FIXME: elaborate)
config BUSYBOX_CONFIG_FEATURE_DEPMOD_PRUNE_FANCY
bool "fancy dependency pruning"
bool "Fancy dependency pruning"
default n
depends on BUSYBOX_CONFIG_DEPMOD
help
@ -26,7 +76,7 @@ config BUSYBOX_CONFIG_FEATURE_DEPMOD_PRUNE_FANCY
If unsure, say N.
config BUSYBOX_CONFIG_FEATURE_DEPMOD_ALIAS
bool "alias support"
bool "Alias support"
default n
depends on BUSYBOX_CONFIG_DEPMOD
help
@ -38,6 +88,7 @@ config BUSYBOX_CONFIG_FEATURE_DEPMOD_ALIAS
config BUSYBOX_CONFIG_INSMOD
bool "insmod"
default y
depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
help
insmod is used to load specified modules in the running kernel.
@ -93,12 +144,14 @@ config BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL
config BUSYBOX_CONFIG_RMMOD
bool "rmmod"
default y
depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
help
rmmod is used to unload specified modules from the kernel.
config BUSYBOX_CONFIG_LSMOD
bool "lsmod"
default y
depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
help
lsmod is used to display a list of loaded modules.
@ -113,6 +166,7 @@ config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
config BUSYBOX_CONFIG_MODPROBE
bool "modprobe"
default n
depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
help
Handle the loading of modules, and their dependencies on a high
level.
@ -196,7 +250,7 @@ config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
# Simulate indentation
string "Default directory containing modules"
default "/lib/modules"
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_DEPMOD
help
Directory that contains kernel modules.
Defaults to "/lib/modules"
@ -205,7 +259,7 @@ config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
# Simulate indentation
string "Default name of modules.dep"
default "modules.dep"
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_DEPMOD
help
Filename that contains kernel modules dependencies.
Defaults to "modules.dep"

View file

@ -66,12 +66,12 @@ config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
This adds about 600 bytes.
config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
bool "Support show"
bool "Support show, showmac and showstp"
default y
depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
help
Add support for option which prints the current config:
show
showmacs, showstp, show
config BUSYBOX_CONFIG_DNSD
bool "dnsd"
@ -558,7 +558,8 @@ config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
default n
depends on BUSYBOX_CONFIG_IPCALC
help
Adds the options hostname, prefix and silent to the output of "ipcalc".
Adds the options hostname, prefix and silent to the output of
"ipcalc".
config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
bool "Enable long options"
@ -638,6 +639,14 @@ config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
Add support for wide columns. Useful when displaying IPv6 addresses
(-W option).
config BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG
bool "Enable PID/Program name output"
default n
depends on BUSYBOX_CONFIG_NETSTAT
help
Add support for -p flag to print out PID and program name.
+700 bytes of code.
config BUSYBOX_CONFIG_NSLOOKUP
bool "nslookup"
default y
@ -694,7 +703,8 @@ config BUSYBOX_CONFIG_SLATTACH
bool "slattach"
default n
help
slattach is a small utility to attach network interfaces to serial lines.
slattach is a small utility to attach network interfaces to serial
lines.
config BUSYBOX_CONFIG_TELNET
bool "telnet"
@ -906,12 +916,14 @@ config BUSYBOX_CONFIG_TCPSVD
bool "tcpsvd"
default n
help
tcpsvd listens on a TCP port and runs a program for each new connection
tcpsvd listens on a TCP port and runs a program for each new
connection.
config BUSYBOX_CONFIG_UDPSVD
bool "udpsvd"
default n
help
udpsvd listens on an UDP port and runs a program for each new connection
udpsvd listens on an UDP port and runs a program for each new
connection.
endmenu

View file

@ -51,7 +51,7 @@ config BUSYBOX_CONFIG_ASH_BASH_COMPAT
default y
depends on BUSYBOX_CONFIG_ASH
help
Enable bash-conpatible extensions.
Enable bash-compatible extensions.
config BUSYBOX_CONFIG_ASH_JOB_CONTROL
bool "Job control"
@ -69,7 +69,7 @@ config BUSYBOX_CONFIG_ASH_READ_NCHARS
'read -s' will read without echoing the user's input.
config BUSYBOX_CONFIG_ASH_READ_TIMEOUT
bool "'read -t S' support."
bool "'read -t S' support"
default y
depends on BUSYBOX_CONFIG_ASH
help
@ -178,9 +178,11 @@ config BUSYBOX_CONFIG_HUSH
hush is a very small shell (just 18k) and it has fairly complete
Bourne shell grammar. It even handles all the normal flow control
options such as if/then/elif/else/fi, for/in/do/done, while loops,
etc.
case/esac.
It does not handle case/esac, select, function, here documents ( <<
It uses only vfork, so it can be used on uClinux systems.
It does not handle select, functions, here documents ( <<
word ), arithmetic expansion, aliases, brace expansion, tilde
expansion, &> and >& redirection of stdout+stderr, etc.
@ -232,6 +234,14 @@ config BUSYBOX_CONFIG_HUSH_LOOPS
depends on BUSYBOX_CONFIG_HUSH
help
Enable for, while and until loops in hush.
As of 2008-07, break and continue statements are not supported.
config BUSYBOX_CONFIG_HUSH_CASE
bool "Support case ... esac statement"
default n
depends on BUSYBOX_CONFIG_HUSH
help
Enable case ... esac statement in hush. +400 bytes.
config BUSYBOX_CONFIG_LASH
bool "lash"
@ -249,7 +259,7 @@ config BUSYBOX_CONFIG_MSH
shell to do. It is not always pedantically correct about Bourne
shell grammar (try running the shell testscript "tests/sh.testcases"
on it and compare vs bash) but for most things it works quite well.
It also uses only vfork, so it can be used on uClinux systems.
It uses only vfork, so it can be used on uClinux systems.
comment "Bourne Shell Options"
depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH

View file

@ -23,7 +23,8 @@ config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
depends on BUSYBOX_CONFIG_DMESG
help
If you wish to scrub the syslog level from the output, say 'Y' here.
The syslog level is a string prefixed to every line with the form "<#>".
The syslog level is a string prefixed to every line with the form
"<#>".
With this option you will see:
# dmesg
@ -188,8 +189,8 @@ config BUSYBOX_CONFIG_MKFS_MINIX
default n
help
The minix filesystem is a nice, small, compact, read-write filesystem
with little overhead. If you wish to be able to create minix filesystems
this utility will do the job for you.
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
@ -199,9 +200,9 @@ config BUSYBOX_CONFIG_FEATURE_MINIX2
default n
depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
help
If you wish to be able to create version 2 minix filesystems, enable this.
If you enabled 'mkfs_minix' then you almost certainly want to be using the
version 2 filesystem support.
If you wish to be able to create version 2 minix filesystems, enable
this. If you enabled 'mkfs_minix' then you almost certainly want to
be using the version 2 filesystem support.
config BUSYBOX_CONFIG_GETOPT
bool "getopt"
@ -266,7 +267,7 @@ config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
to use the FHS behavior, answer Y here, otherwise answer N for the
classic /etc/adjtime path.
http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
config BUSYBOX_CONFIG_IPCRM
bool "ipcrm"
@ -326,7 +327,8 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
default n
depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
help
Add support for regular expressions substitutions when renaming device.
Add support for regular expressions substitutions when renaming
device.
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
bool "Support command execution at device addition/removal"
@ -705,6 +707,12 @@ config BUSYBOX_CONFIG_RDATE
the RFC868 protocol, which is built into the inetd daemon on most
systems.
config BUSYBOX_CONFIG_RDEV
bool "rdev"
default n
help
Print the device node associated with the filesystem mounted at '/'.
config BUSYBOX_CONFIG_READPROFILE
bool "readprofile"
default n
@ -773,10 +781,10 @@ config BUSYBOX_CONFIG_UMOUNT
bool "umount"
default y
help
When you want to remove a mounted filesystem from its current mount point,
for example when you are shutting down the system, the 'umount' utility is
the tool to use. If you enabled the 'mount' utility, you almost certainly
also want to enable 'umount'.
When you want to remove a mounted filesystem from its current mount
point, for example when you are shutting down the system, the
'umount' utility is the tool to use. If you enabled the 'mount'
utility, you almost certainly also want to enable 'umount'.
config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
bool "Support option -a"
@ -794,10 +802,11 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
help
Enabling this feature allows automatic mounting of files (containing
filesystem images) via the linux kernel's loopback devices. The mount
command will detect you are trying to mount a file instead of a block
device, and transparently associate the file with a loopback device.
The umount command will also free that loopback device.
filesystem images) via the linux kernel's loopback devices.
The mount command will detect you are trying to mount a file instead
of a block device, and transparently associate the file with a
loopback device. The umount command will also free that loopback
device.
You can still use the 'losetup' utility (to manually associate files
with loop devices) if you need to do something advanced, such as

View file

@ -1,6 +1,6 @@
--- a/init/init.c
+++ b/init/init.c
@@ -505,12 +505,11 @@ static void run_actions(int action_type)
@@ -498,12 +498,11 @@ static void run_actions(int action_type)
for (a = init_action_list; a; a = tmp) {
tmp = a->next;
if (a->action_type & action_type) {

View file

@ -0,0 +1,37 @@
--- a/networking/brctl.c
+++ b/networking/brctl.c
@@ -90,7 +90,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
"setageing\0" "setfd\0" "sethello\0" "setmaxage\0"
"setpathcost\0" "setportprio\0" "setbridgeprio\0"
)
- USE_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
+ USE_FEATURE_BRCTL_SHOW("show\0");
enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif
USE_FEATURE_BRCTL_FANCY(,
@@ -98,7 +98,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage,
ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio
)
- USE_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
+ USE_FEATURE_BRCTL_SHOW(, ARG_show)
};
int fd;
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -66,12 +66,12 @@ config FEATURE_BRCTL_FANCY
This adds about 600 bytes.
config FEATURE_BRCTL_SHOW
- bool "Support show, showmac and showstp"
+ bool "Support show"
default n
depends on BRCTL && FEATURE_BRCTL_FANCY
help
Add support for option which prints the current config:
- showmacs, showstp, show
+ show
config DNSD
bool "dnsd"

View file

@ -1,6 +1,6 @@
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -437,7 +437,7 @@ int wget_main(int argc ATTRIBUTE_UNUSED,
@@ -437,7 +437,7 @@ int wget_main(int argc UNUSED_PARAM, cha
"directory-prefix\0" Required_argument "P"
"proxy\0" Required_argument "Y"
"user-agent\0" Required_argument "U"

View file

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -352,7 +352,7 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSE
@@ -353,7 +353,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
switch (state) {
case INIT_SELECTING:
@ -9,7 +9,7 @@
if (packet_num == 0)
xid = random_xid();
@@ -382,7 +382,7 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSE
@@ -383,7 +383,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
continue;
case RENEW_REQUESTED:
case REQUESTING:

View file

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -319,6 +319,12 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSE
@@ -320,6 +320,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
for (;;) {
unsigned timestamp_before_wait;

View file

@ -1,9 +1,9 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11909,8 +11909,17 @@ exportcmd(int argc ATTRIBUTE_UNUSED, cha
@@ -12018,8 +12018,17 @@ exportcmd(int argc UNUSED_PARAM, char **
const char *p;
char **aptr;
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
+ int mask = ~0;
+ int nopt;
+ while ((nopt = nextopt("np"))) {
@ -19,7 +19,7 @@
aptr = argptr;
name = *aptr;
if (name) {
@@ -11922,10 +11931,12 @@ exportcmd(int argc ATTRIBUTE_UNUSED, cha
@@ -12031,10 +12040,12 @@ exportcmd(int argc UNUSED_PARAM, char **
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;

View file

@ -1,6 +1,6 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -257,6 +257,7 @@ USE_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_
@@ -261,6 +261,7 @@ USE_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_
USE_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_NEVER))
USE_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
@ -10,7 +10,7 @@
USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
--- a/include/usage.h
+++ b/include/usage.h
@@ -2815,6 +2815,9 @@
@@ -2816,6 +2816,9 @@
#endif
@ -18,11 +18,11 @@
+#define netmsg_full_usage ""
+
#define netstat_trivial_usage \
"[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
"[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")USE_FEATURE_NETSTAT_PRG("p")"]"
#define netstat_full_usage "\n\n" \
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -602,6 +602,12 @@ config NC
@@ -603,6 +603,12 @@ config NC
A simple Unix utility which reads and writes data across network
connections.

View file

@ -3,7 +3,7 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1697,21 +1697,32 @@ static int check_user_passwd(const char
@@ -1705,21 +1705,32 @@ static int check_user_passwd(const char
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
char *md5_passwd;

View file

@ -1,8 +1,8 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -220,6 +220,7 @@ USE_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN
@@ -222,6 +222,7 @@ USE_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN
USE_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
USE_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_NEVER))
+USE_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
@ -10,7 +10,7 @@
USE_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER, logname))
--- a/include/usage.h
+++ b/include/usage.h
@@ -2138,6 +2138,9 @@
@@ -2132,6 +2132,9 @@
#define loadkmap_example_usage \
"$ loadkmap < /etc/i18n/lang-keymap\n"
@ -22,7 +22,7 @@
#define logger_full_usage "\n\n" \
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -364,6 +364,12 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
@@ -366,6 +366,12 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
Enables the 'hdparm -d' option to get/set using_dma flag.
This is dangerous stuff, so you should probably say N.

View file

@ -1,6 +1,6 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -1558,7 +1558,8 @@
@@ -1552,7 +1552,8 @@
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
" [-h home]" \
@ -10,7 +10,7 @@
#define httpd_full_usage "\n\n" \
"Listen for incoming HTTP requests\n" \
"\nOptions:" \
@@ -1576,6 +1577,8 @@
@@ -1570,6 +1571,8 @@
"\n -h HOME Home directory (default .)" \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
@ -21,7 +21,7 @@
USE_GETOPT_LONG( \
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -247,6 +247,8 @@ struct globals {
@@ -248,6 +248,8 @@ struct globals {
const char *found_mime_type;
const char *found_moved_temporarily;
@ -30,7 +30,7 @@
Htaccess_IP *ip_a_d; /* config allow/deny lines */
USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
@@ -292,6 +294,8 @@ struct globals {
@@ -293,6 +295,8 @@ struct globals {
#define index_page (G.index_page )
#define found_mime_type (G.found_mime_type )
#define found_moved_temporarily (G.found_moved_temporarily)
@ -39,7 +39,7 @@
#define last_mod (G.last_mod )
#define ip_a_d (G.ip_a_d )
#define g_realm (G.g_realm )
@@ -991,8 +995,11 @@ static void send_headers(int responseNum
@@ -999,8 +1003,11 @@ static void send_headers(int responseNum
}
#endif
if (responseNum == HTTP_MOVED_TEMPORARILY) {
@ -52,7 +52,7 @@
(g_query ? "?" : ""),
(g_query ? g_query : ""));
}
@@ -1923,8 +1930,12 @@ static void handle_incoming_and_exit(con
@@ -1931,8 +1938,12 @@ static void handle_incoming_and_exit(con
} while (*++tptr);
*++urlp = '\0'; /* terminate after last character */
@ -66,7 +66,7 @@
if (is_directory(urlcopy + 1, 1, &sb)) {
found_moved_temporarily = urlcopy;
}
@@ -2274,7 +2285,9 @@ static void sighup_handler(int sig)
@@ -2281,7 +2292,9 @@ static void sighup_handler(int sig)
#endif
enum {
@ -77,7 +77,7 @@
d_opt_decode_url,
h_opt_home_httpd,
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
@@ -2323,12 +2336,13 @@ int httpd_main(int argc ATTRIBUTE_UNUSED
@@ -2330,12 +2343,13 @@ int httpd_main(int argc UNUSED_PARAM, ch
/* We do not "absolutize" path given by -h (home) opt.
* If user gives relative path in -h,
* $SCRIPT_FILENAME will not be set. */

View file

@ -1,6 +1,6 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1247,10 +1247,10 @@ static NOINLINE void cgi_io_loop_and_exi
@@ -1255,10 +1255,10 @@ static NOINLINE void cgi_io_loop_and_exi
if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
break;
}

View file

@ -1,6 +1,6 @@
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -82,6 +82,8 @@ int uniq_main(int argc ATTRIBUTE_UNUSED,
@@ -82,6 +82,8 @@ int uniq_main(int argc UNUSED_PARAM, cha
if (!s0 || strncmp(e0, e1, max_chars)) {
break;

View file

@ -1,6 +1,6 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1808,6 +1808,7 @@ static void handle_incoming_and_exit(con
@@ -1816,6 +1816,7 @@ static void handle_incoming_and_exit(con
char *header_ptr = header_ptr;
Htaccess_Proxy *proxy_entry;
#endif

View file

@ -1,6 +1,6 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -255,6 +255,8 @@ struct globals {
@@ -256,6 +256,8 @@ struct globals {
USE_FEATURE_HTTPD_BASIC_AUTH(char *remoteuser;)
USE_FEATURE_HTTPD_CGI(char *referer;)
USE_FEATURE_HTTPD_CGI(char *user_agent;)
@ -9,7 +9,7 @@
off_t file_size; /* -1 - unknown */
#if ENABLE_FEATURE_HTTPD_RANGES
@@ -302,6 +304,8 @@ struct globals {
@@ -303,6 +305,8 @@ struct globals {
#define remoteuser (G.remoteuser )
#define referer (G.referer )
#define user_agent (G.user_agent )
@ -18,7 +18,7 @@
#define file_size (G.file_size )
#if ENABLE_FEATURE_HTTPD_RANGES
#define range_start (G.range_start )
@@ -1383,6 +1387,10 @@ static void send_cgi_and_exit(
@@ -1391,6 +1395,10 @@ static void send_cgi_and_exit(
}
}
setenv1("HTTP_USER_AGENT", user_agent);
@ -29,7 +29,7 @@
if (post_len)
putenv(xasprintf("CONTENT_LENGTH=%d", post_len));
if (cookie)
@@ -2020,6 +2028,10 @@ static void handle_incoming_and_exit(con
@@ -2028,6 +2036,10 @@ static void handle_incoming_and_exit(con
referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
} else if (STRNCASECMP(iobuf, "User-Agent:") == 0) {
user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));

View file

@ -27,11 +27,11 @@
+int insmod_main_26(int argc, char **argv);
#endif
+int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+
+static char *g_filename = NULL;
+#define _PATH_MODULES "/lib/modules"
+
+static int check_module_name_match(const char *filename, struct stat *statbuf,
+static int FAST_FUNC check_module_name_match(const char *filename, struct stat *statbuf,
+ void *userdata, int depth)
+{
+ char *fullname = (char *) userdata;
@ -112,7 +112,7 @@
+
+done:
+ free(filename);
+
+ return ret;
+}
+
@ -164,9 +164,9 @@
-/*======================================================================*/
-
-
-static int check_module_name_match(const char *filename,
- struct stat *statbuf ATTRIBUTE_UNUSED,
- void *userdata, int depth ATTRIBUTE_UNUSED)
-static int FAST_FUNC check_module_name_match(const char *filename,
- struct stat *statbuf UNUSED_PARAM,
- void *userdata, int depth UNUSED_PARAM)
-{
- char *fullname = (char *) userdata;
- char *tmp;
@ -238,7 +238,7 @@
break;
#elif defined(__microblaze__)
@@ -1759,7 +1823,7 @@ static int arch_list_add(ElfW(RelM) *rel
@@ -1764,7 +1828,7 @@ static int arch_list_add(ElfW(RelM) *rel
#if defined(USE_SINGLE)
@ -247,7 +247,7 @@
int offset, int size)
{
if (single->allocated == 0) {
@@ -1907,7 +1971,7 @@ static void arch_create_got(struct obj_f
@@ -1912,7 +1976,7 @@ static void arch_create_got(struct obj_f
#if defined(USE_GOT_ENTRIES)
if (got_allocate) {
got_offset += arch_single_init(
@ -256,7 +256,7 @@
got_offset, GOT_ENTRY_SIZE);
got_needed = 1;
@@ -1921,7 +1985,7 @@ static void arch_create_got(struct obj_f
@@ -1926,7 +1990,7 @@ static void arch_create_got(struct obj_f
plt_offset, PLT_ENTRY_SIZE);
#else
plt_offset += arch_single_init(
@ -265,7 +265,7 @@
plt_offset, PLT_ENTRY_SIZE);
#endif
plt_needed = 1;
@@ -1959,8 +2023,7 @@ static unsigned long obj_elf_hash_n(cons
@@ -1964,8 +2028,7 @@ static unsigned long obj_elf_hash_n(cons
while (n > 0) {
ch = *name++;
h = (h << 4) + ch;
@ -275,7 +275,7 @@
h ^= g >> 24;
h &= ~g;
}
@@ -2039,7 +2102,7 @@ obj_add_symbol(struct obj_file *f, const
@@ -2044,7 +2107,7 @@ obj_add_symbol(struct obj_file *f, const
int n_type = ELF_ST_TYPE(info);
int n_binding = ELF_ST_BIND(info);
@ -284,7 +284,7 @@
if (f->symbol_cmp(sym->name, name) == 0) {
int o_secidx = sym->secidx;
int o_info = sym->info;
@@ -2098,14 +2161,14 @@ obj_add_symbol(struct obj_file *f, const
@@ -2103,14 +2166,14 @@ obj_add_symbol(struct obj_file *f, const
return sym;
}
}
@ -301,7 +301,7 @@
if (symidx >= f->local_symtab_size)
bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
name, (long) symidx, (long) f->local_symtab_size);
@@ -3228,7 +3291,7 @@ static int obj_relocate(struct obj_file
@@ -3234,7 +3297,7 @@ static int obj_relocate(struct obj_file
/* Do it! */
switch (arch_apply_relocation
@ -310,12 +310,12 @@
) {
case obj_reloc_ok:
break;
@@ -3307,11 +3370,11 @@ static int obj_create_image(struct obj_f
@@ -3313,11 +3376,11 @@ static int obj_create_image(struct obj_f
/*======================================================================*/
-static struct obj_file *obj_load(FILE * fp, int loadprogbits ATTRIBUTE_UNUSED)
+static struct obj_file *obj_load(FILE * fp, int loadprogbits)
-static struct obj_file *obj_load(FILE *fp, int loadprogbits UNUSED_PARAM)
+static struct obj_file *obj_load(FILE *fp, int loadprogbits)
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
@ -324,7 +324,7 @@
char *shstrtab;
/* Read the file header. */
@@ -3583,7 +3646,7 @@ static int obj_gpl_license(struct obj_fi
@@ -3591,7 +3654,7 @@ static int obj_gpl_license(struct obj_fi
while (ptr < endptr) {
value = strchr(ptr, '=');
if (value && strncmp(ptr, "license", value-ptr) == 0) {
@ -333,7 +333,7 @@
if (license)
*license = value+1;
for (i = 0; i < ARRAY_SIZE(gpl_licenses); ++i) {
@@ -3687,9 +3750,6 @@ static void check_tainted_module(struct
@@ -3695,9 +3758,6 @@ static void check_tainted_module(struct
* start of some sections. this info is used by ksymoops to do better
* debugging.
*/
@ -343,7 +343,7 @@
static int
get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
{
@@ -3722,8 +3782,7 @@ add_ksymoops_symbols(struct obj_file *f,
@@ -3730,8 +3790,7 @@ add_ksymoops_symbols(struct obj_file *f,
struct obj_symbol *sym;
char *name, *absolute_filename;
char str[STRVERSIONLEN];
@ -353,7 +353,7 @@
struct stat statbuf;
/* WARNING: was using realpath, but replaced by readlink to stop using
@@ -3910,145 +3969,57 @@ static void print_load_map(struct obj_fi
@@ -3922,145 +3981,57 @@ static void print_load_map(struct obj_fi
void print_load_map(struct obj_file *f);
#endif
@ -408,7 +408,7 @@
+ if (arg1 == NULL)
bb_show_usage();
- }
-
- /* Grab the module name */
- tmp1 = xstrdup(arg1);
- tmp = basename(tmp1);
@ -419,7 +419,7 @@
- k_version = myuname.release[2] - '0';
- }
- }
-
-#if ENABLE_FEATURE_2_6_MODULES
- if (k_version > 4 && len > 3 && tmp[len - 3] == '.'
- && tmp[len - 2] == 'k' && tmp[len - 1] == 'o'
@ -453,7 +453,7 @@
-
- /* Get a filedesc for the module. Check that we have a complete path */
- if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
- || (fp = fopen(arg1, "r")) == NULL
- || (fp = fopen_for_read(arg1)) == NULL
- ) {
- /* Hmm. Could not open it. First search under /lib/modules/`uname -r`,
- * but do not error out yet if we fail to find it... */
@ -477,7 +477,7 @@
- }
-
- /* Check if we have found anything yet */
- if (!m_filename || ((fp = fopen(m_filename, "r")) == NULL)) {
- if (!m_filename || ((fp = fopen_for_read(m_filename)) == NULL)) {
- int r;
- char *module_dir;
-
@ -494,7 +494,7 @@
- bb_error_msg_and_die("%s: module not found", m_fullName);
- free(module_dir);
- if (m_filename == NULL
- || ((fp = fopen(m_filename, "r")) == NULL)
- || ((fp = fopen_for_read(m_filename)) == NULL)
- ) {
- bb_error_msg_and_die("%s: module not found", m_fullName);
- }
@ -503,16 +503,16 @@
}
- } else
- m_filename = xstrdup(arg1);
-
- if (flag_verbose)
- printf("Using %s\n", m_filename);
-
-#if ENABLE_FEATURE_2_6_MODULES
- if (k_version > 4) {
- argv[optind] = m_filename;
- optind--;
- return insmod_ng_main(argc - optind, argv + optind);
+ fp = fopen(g_filename, "r");
+ fp = fopen_for_read(g_filename);
+ if (!fp) {
+ ret = errno;
+ goto out;
@ -521,7 +521,7 @@
f = obj_load(fp, LOADBITS);
@@ -4075,7 +4046,7 @@ int insmod_main(int argc, char **argv)
@@ -4087,7 +4058,7 @@ int insmod_main(int argc, char **argv)
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s",
flag_force_load ? "warning: " : "",
@ -530,7 +530,7 @@
if (!flag_force_load)
goto out;
}
@@ -4117,7 +4088,7 @@ int insmod_main(int argc, char **argv)
@@ -4129,7 +4100,7 @@ int insmod_main(int argc, char **argv)
hide_special_symbols(f);
#if ENABLE_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
@ -539,7 +539,7 @@
#endif /* FEATURE_INSMOD_KSYMOOPS_SYMBOLS */
new_create_module_ksymtab(f);
@@ -4126,7 +4097,7 @@ int insmod_main(int argc, char **argv)
@@ -4138,7 +4109,7 @@ int insmod_main(int argc, char **argv)
m_size = obj_load_size(f);
m_addr = create_module(m_name, m_size);
@ -548,7 +548,7 @@
case EEXIST:
bb_error_msg_and_die("a module named %s already exists", m_name);
case ENOMEM:
@@ -4142,36 +4113,37 @@ int insmod_main(int argc, char **argv)
@@ -4154,36 +4125,37 @@ int insmod_main(int argc, char **argv)
* now we can load them directly into the kernel memory
*/
if (!obj_load_progbits(fp, f, (char*)m_addr)) {
@ -594,7 +594,7 @@
}
#endif /* ENABLE_FEATURE_2_4_MODULES */
@@ -4183,15 +4155,8 @@ int insmod_main(int argc, char **argv)
@@ -4195,15 +4167,8 @@ int insmod_main(int argc, char **argv)
#if ENABLE_FEATURE_2_6_MODULES
#include <sys/mman.h>
@ -610,15 +610,15 @@
/* We use error numbers in a loose translation... */
static const char *moderror(int err)
@@ -4210,22 +4175,32 @@ static const char *moderror(int err)
@@ -4222,22 +4187,32 @@ static const char *moderror(int err)
}
}
-#if !ENABLE_FEATURE_2_4_MODULES
-int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int insmod_main(int argc ATTRIBUTE_UNUSED, char **argv)
-int insmod_main(int argc UNUSED_PARAM, char **argv)
-#else
-static int insmod_ng_main(int argc ATTRIBUTE_UNUSED, char **argv)
-static int insmod_ng_main(int argc UNUSED_PARAM, char **argv)
-#endif
+int insmod_main_26(int argc, char **argv)
{
@ -651,7 +651,7 @@
/* Rest is options */
options = xzalloc(1);
optlen = 0;
@@ -4235,41 +4210,47 @@ static int insmod_ng_main(int argc ATTRI
@@ -4247,41 +4222,47 @@ static int insmod_ng_main(int argc UNUSE
optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv);
}
@ -683,7 +683,7 @@
- }
-#else
len = MAXINT(ssize_t);
- map = xmalloc_open_read_close(filename, &len);
- map = xmalloc_xopen_read_close(filename, &len);
-#endif
+ map = xmalloc_open_read_close(g_filename, &len);
+ ret = syscall(__NR_init_module, map, len, options);

View file

@ -1,6 +1,6 @@
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3313,7 +3313,7 @@ static void do_cmd(char c)
@@ -3317,7 +3317,7 @@ static void do_cmd(char c)
buf[1] = '\0';
q = get_input_line(buf); // get input line- use "status line"
if (q[0] && !q[1]) {
@ -9,7 +9,7 @@
last_search_pattern[0] = c;
goto dc3; // if no pat re-use old pat
}
@@ -3329,6 +3329,10 @@ static void do_cmd(char c)
@@ -3333,6 +3333,10 @@ static void do_cmd(char c)
if (cmdcnt-- > 1) {
do_cmd(c);
} // repeat cnt
@ -20,16 +20,3 @@
dir = BACK; // assume BACKWARD search
p = dot - 1;
if (last_search_pattern[0] == '?') {
@@ -3348,10 +3352,8 @@ static void do_cmd(char c)
msg = "No previous regular expression";
goto dc2;
}
- if (last_search_pattern[0] == '/') {
- dir = FORWARD; // assume FORWARD search
- p = dot + 1;
- }
+ dir = FORWARD; // assume FORWARD search
+ p = dot + 1;
if (last_search_pattern[0] == '?') {
dir = BACK;
p = dot - 1;

View file

@ -15,7 +15,7 @@
} func;
/* I/O stream */
@@ -1395,7 +1400,8 @@ static void parse_program(char *p)
@@ -1400,7 +1405,8 @@ static void parse_program(char *p)
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
@ -25,7 +25,7 @@
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
@@ -1404,7 +1410,7 @@ static void parse_program(char *p)
@@ -1409,7 +1415,7 @@ static void parse_program(char *p)
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
@ -34,7 +34,7 @@
chain_group();
clear_array(ahash);
@@ -2367,7 +2373,8 @@ static var *evaluate(node *op, var *res)
@@ -2374,7 +2380,8 @@ static var *evaluate(node *op, var *res)
break;
case XC( OC_FUNC ):
@ -44,7 +44,7 @@
syntax_error(EMSG_UNDEF_FUNC);
X.v = R.v = nvalloc(op->r.f->nargs+1);
@@ -2384,7 +2391,10 @@ static var *evaluate(node *op, var *res)
@@ -2391,7 +2398,10 @@ static var *evaluate(node *op, var *res)
fnargs = X.v;
L.s = g_progname;
@ -56,7 +56,7 @@
g_progname = L.s;
nvfree(fnargs);
@@ -2747,6 +2757,143 @@ static rstream *next_input_file(void)
@@ -2754,6 +2764,143 @@ static rstream *next_input_file(void)
#undef files_happen
}
@ -200,7 +200,7 @@
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int awk_main(int argc, char **argv)
{
@@ -2812,6 +2959,9 @@ int awk_main(int argc, char **argv)
@@ -2819,6 +2966,9 @@ int awk_main(int argc, char **argv)
*s1 = '=';
}
}

View file

@ -1,36 +0,0 @@
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -2041,27 +2041,27 @@ static var *exec_builtin(node *op, var *
break;
case B_an:
- setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1]));
+ setvar_i(res, (unsigned long)getvar_i(av[0]) & (unsigned long)getvar_i(av[1]));
break;
case B_co:
- setvar_i(res, ~(long)getvar_i(av[0]));
+ setvar_i(res, ~(unsigned long)getvar_i(av[0]));
break;
case B_ls:
- setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1]));
+ setvar_i(res, (unsigned long)getvar_i(av[0]) << (unsigned long)getvar_i(av[1]));
break;
case B_or:
- setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1]));
+ setvar_i(res, (unsigned long)getvar_i(av[0]) | (unsigned long)getvar_i(av[1]));
break;
case B_rs:
- setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1])));
+ setvar_i(res, (unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1]));
break;
case B_xo:
- setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1]));
+ setvar_i(res, (unsigned long)getvar_i(av[0]) ^ (unsigned long)getvar_i(av[1]));
break;
case B_lo:

View file

@ -9,7 +9,7 @@
#endif
/* Use internal number parsing and not the "exact" conversion. */
@@ -155,6 +155,7 @@ int brctl_main(int argc ATTRIBUTE_UNUSED
@@ -155,6 +155,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
printf(bi.stp_enabled ? "\tyes" : "\tno");
/* print interface list */
@ -17,7 +17,7 @@
arm_ioctl(args, BRCTL_GET_PORT_LIST,
(unsigned long) ifidx, MAX_PORTS);
xioctl(fd, SIOCDEVPRIVATE, &ifr);
@@ -183,9 +184,19 @@ int brctl_main(int argc ATTRIBUTE_UNUSED
@@ -183,9 +184,19 @@ int brctl_main(int argc UNUSED_PARAM, ch
br = *argv++;
if (key == ARG_addbr || key == ARG_delbr) { /* addbr or delbr */
@ -40,7 +40,7 @@
goto done;
}
@@ -194,14 +205,27 @@ int brctl_main(int argc ATTRIBUTE_UNUSED
@@ -194,14 +205,27 @@ int brctl_main(int argc UNUSED_PARAM, ch
strncpy(ifr.ifr_name, br, IFNAMSIZ);
if (key == ARG_addif || key == ARG_delif) { /* addif or delif */

View file

@ -1,11 +1,14 @@
config BUSYBOX_CONFIG_FEATURE_DEVFS
bool
default y if LINUX_2_4
default n if LINUX_2_6
config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
bool
default y if LINUX_2_4
default n if LINUX_2_6
config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
bool
default n if LINUX_2_4
default y if LINUX_2_6