mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
Upgrade busybox to 1.7.2
- clean up insmod crap - add some lineno/programname fixes for awx - clean up awk getopt stuff - remove unnecessary patches git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9130 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -9,13 +9,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=busybox
|
PKG_NAME:=busybox
|
||||||
PKG_VERSION:=1.4.2
|
PKG_VERSION:=1.7.2
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
|
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
|
||||||
http://distfiles.gentoo.org/distfiles/
|
http://distfiles.gentoo.org/distfiles/
|
||||||
PKG_MD5SUM:=b4c61fb15642be9dde20e8493788c585
|
PKG_MD5SUM:=c91ec9756e2000073a9dd8fa9fc3f89e
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
|||||||
@@ -100,8 +100,7 @@ config BUSYBOX_CONFIG_FEATURE_INSTALLER
|
|||||||
help
|
help
|
||||||
Enable 'busybox --install [-s]' support. This will allow you to use
|
Enable 'busybox --install [-s]' support. This will allow you to use
|
||||||
busybox at runtime to create hard links or symlinks for all the
|
busybox at runtime to create hard links or symlinks for all the
|
||||||
applets that are compiled into busybox. This feature requires the
|
applets that are compiled into busybox.
|
||||||
/proc filesystem.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_LOCALE_SUPPORT
|
config BUSYBOX_CONFIG_LOCALE_SUPPORT
|
||||||
bool "Enable locale support (system needs locale for this to work)"
|
bool "Enable locale support (system needs locale for this to work)"
|
||||||
@@ -140,6 +139,13 @@ config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
|
|||||||
Don't enable this unless you have a really good reason to clean
|
Don't enable this unless you have a really good reason to clean
|
||||||
things up manually.
|
things up manually.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_PIDFILE
|
||||||
|
bool "Support writing pidfiles"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option makes some applets (e.g. crond, syslogd, inetd) write
|
||||||
|
a pidfile in /var/run. Some applications rely on them.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SUID
|
config BUSYBOX_CONFIG_FEATURE_SUID
|
||||||
bool "Support for SUID/SGID handling"
|
bool "Support for SUID/SGID handling"
|
||||||
default y
|
default y
|
||||||
@@ -155,13 +161,6 @@ config BUSYBOX_CONFIG_FEATURE_SUID
|
|||||||
are login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
|
are login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
|
||||||
and vlock.
|
and vlock.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SYSLOG
|
|
||||||
bool "Support for syslog"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
This option is auto-selected when you select any applet which may
|
|
||||||
send its output to syslog. You do not need to select it manually.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
|
config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
|
||||||
bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
|
bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
|
||||||
default n if BUSYBOX_CONFIG_FEATURE_SUID
|
default n if BUSYBOX_CONFIG_FEATURE_SUID
|
||||||
@@ -202,14 +201,6 @@ config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET
|
|||||||
/etc/busybox.conf should be readable by the user needing the SUID, check
|
/etc/busybox.conf should be readable by the user needing the SUID, check
|
||||||
this option to avoid users to be notified about missing permissions.
|
this option to avoid users to be notified about missing permissions.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
|
||||||
bool "RPC support"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Select this if you have rpc support.
|
|
||||||
This automatically turns off all configuration options that rely
|
|
||||||
on RPC.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_SELINUX
|
config BUSYBOX_CONFIG_SELINUX
|
||||||
bool "Support NSA Security Enhanced Linux"
|
bool "Support NSA Security Enhanced Linux"
|
||||||
default n
|
default n
|
||||||
@@ -230,6 +221,20 @@ config BUSYBOX_CONFIG_SELINUX
|
|||||||
|
|
||||||
Most people will leave this set to 'N'.
|
Most people will leave this set to 'N'.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
|
||||||
|
bool "exec prefers applets"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This is an experimental option which directs applets about to
|
||||||
|
call 'exec' to try and find an applicable busybox applet before
|
||||||
|
searching the PATH. This is typically done by exec'ing
|
||||||
|
/proc/self/exe.
|
||||||
|
This may affect shell, find -exec, xargs and similar applets.
|
||||||
|
They will use applets even if /bin/<applet> -> busybox link
|
||||||
|
is missing (or is not a link to busybox). However, this causes
|
||||||
|
problems in chroot jails without mounted /proc and with ps/top
|
||||||
|
(command name can be shown as 'exe' for applets started this way).
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
|
config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
|
||||||
string "Path to BusyBox executable"
|
string "Path to BusyBox executable"
|
||||||
default "/proc/self/exe"
|
default "/proc/self/exe"
|
||||||
@@ -240,6 +245,22 @@ config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
|
|||||||
executable. If you haven't got /proc, set this to wherever you
|
executable. If you haven't got /proc, set this to wherever you
|
||||||
want to run BusyBox from.
|
want to run BusyBox from.
|
||||||
|
|
||||||
|
# These are auto-selected by other options
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_SYSLOG
|
||||||
|
bool "Support for logging to syslog"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option is auto-selected when you select any applet which may
|
||||||
|
send its output to syslog. You do not need to select it manually.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
||||||
|
bool "RPC support"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This is automatically selected if any of enabled applets need it.
|
||||||
|
You do not need to select it manually.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu 'Build Options'
|
menu 'Build Options'
|
||||||
@@ -298,7 +319,7 @@ config BUSYBOX_CONFIG_FEATURE_SHARED_BUSYBOX
|
|||||||
You need to have a working dynamic linker to use this variant.
|
You need to have a working dynamic linker to use this variant.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_LFS
|
config BUSYBOX_CONFIG_LFS
|
||||||
bool "Support large files over 2 GB"
|
bool
|
||||||
default y
|
default y
|
||||||
select BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
|
select BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
|
||||||
help
|
help
|
||||||
@@ -343,21 +364,29 @@ config BUSYBOX_CONFIG_DEBUG
|
|||||||
|
|
||||||
Most people should answer N.
|
Most people should answer N.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
|
config BUSYBOX_CONFIG_WERROR
|
||||||
bool "Disable compiler optimizations."
|
bool "Abort compilation on any warning"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_DEBUG
|
|
||||||
help
|
help
|
||||||
The compiler's optimization of source code can eliminate and reorder
|
Selecting this will add -Werror to gcc command line.
|
||||||
code, resulting in an executable that's hard to understand when
|
|
||||||
stepping through it with a debugger. This switches it off, resulting
|
Most people should answer N.
|
||||||
in a much bigger executable that more closely matches the source
|
|
||||||
code.
|
# Seems to be unused
|
||||||
|
#config DEBUG_PESSIMIZE
|
||||||
|
# bool "Disable compiler optimizations."
|
||||||
|
# default n
|
||||||
|
# depends on DEBUG
|
||||||
|
# help
|
||||||
|
# The compiler's optimization of source code can eliminate and reorder
|
||||||
|
# code, resulting in an executable that's hard to understand when
|
||||||
|
# stepping through it with a debugger. This switches it off, resulting
|
||||||
|
# in a much bigger executable that more closely matches the source
|
||||||
|
# code.
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Additional debugging library"
|
prompt "Additional debugging library"
|
||||||
default BUSYBOX_CONFIG_NO_DEBUG_LIB
|
default BUSYBOX_CONFIG_NO_DEBUG_LIB
|
||||||
depends on BUSYBOX_CONFIG_DEBUG
|
|
||||||
help
|
help
|
||||||
Using an additional debugging library will make BusyBox become
|
Using an additional debugging library will make BusyBox become
|
||||||
considerable larger and will cause it to run more slowly. You
|
considerable larger and will cause it to run more slowly. You
|
||||||
@@ -436,12 +465,11 @@ config BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS
|
|||||||
on a filesystem with few inodes.
|
on a filesystem with few inodes.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
|
config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
|
||||||
bool
|
bool "not installed"
|
||||||
prompt "not installed"
|
depends on BUSYBOX_CONFIG_FEATURE_INSTALLER || BUSYBOX_CONFIG_FEATURE_SH_STANDALONE || BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_INSTALLER || BUSYBOX_CONFIG_FEATURE_SH_STANDALONE_SHELL
|
|
||||||
help
|
help
|
||||||
Do not install applet links. Useful when using the -install feature
|
Do not install applet links. Useful when using the -install feature
|
||||||
or a standalone shell for rescue pruposes.
|
or a standalone shell for rescue purposes.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
@@ -476,3 +504,5 @@ source package/busybox/config/procps/Config.in
|
|||||||
source package/busybox/config/shell/Config.in
|
source package/busybox/config/shell/Config.in
|
||||||
source package/busybox/config/sysklogd/Config.in
|
source package/busybox/config/sysklogd/Config.in
|
||||||
source package/busybox/config/runit/Config.in
|
source package/busybox/config/runit/Config.in
|
||||||
|
source package/busybox/config/selinux/Config.in
|
||||||
|
source package/busybox/config/ipsvd/Config.in
|
||||||
|
|||||||
@@ -142,6 +142,13 @@ config BUSYBOX_CONFIG_RPM
|
|||||||
help
|
help
|
||||||
Mini RPM applet - queries and extracts RPM packages.
|
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
|
config BUSYBOX_CONFIG_TAR
|
||||||
bool "tar"
|
bool "tar"
|
||||||
default y
|
default y
|
||||||
@@ -207,6 +214,15 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
|
|||||||
the old GNU format; help to kill this old format by
|
the old GNU format; help to kill this old format by
|
||||||
repacking your ancient archives with the new format.
|
repacking your ancient archives with the new format.
|
||||||
|
|
||||||
|
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
|
||||||
|
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.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
|
config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
|
||||||
bool "Enable support for some GNU tar extensions"
|
bool "Enable support for some GNU tar extensions"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ config BUSYBOX_CONFIG_SETCONSOLE
|
|||||||
config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
|
config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
|
||||||
bool "Enable long options"
|
bool "Enable long options"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_SET_CONSOLE && BUSYBOX_CONFIG_GETOPT_LONG
|
depends on BUSYBOX_CONFIG_SETCONSOLE && BUSYBOX_CONFIG_GETOPT_LONG
|
||||||
help
|
help
|
||||||
Support long options for the setconsole applet.
|
Support long options for the setconsole applet.
|
||||||
|
|
||||||
|
|||||||
@@ -65,13 +65,6 @@ config BUSYBOX_CONFIG_CKSUM
|
|||||||
help
|
help
|
||||||
cksum is used to calculate the CRC32 checksum of a file.
|
cksum is used to calculate the CRC32 checksum of a file.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_CMP
|
|
||||||
bool "cmp"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
cmp is used to compare two files and returns the result
|
|
||||||
to standard output.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_COMM
|
config BUSYBOX_CONFIG_COMM
|
||||||
bool "comm"
|
bool "comm"
|
||||||
default n
|
default n
|
||||||
@@ -142,38 +135,6 @@ config BUSYBOX_CONFIG_DF
|
|||||||
df reports the amount of disk space used and available
|
df reports the amount of disk space used and available
|
||||||
on filesystems.
|
on filesystems.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_DIFF
|
|
||||||
bool "diff"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
diff compares two files or directories and outputs the
|
|
||||||
differences between them in a form that can be given to
|
|
||||||
the patch command.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_DIFF_BINARY
|
|
||||||
bool "Enable checks for binary files"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_DIFF
|
|
||||||
help
|
|
||||||
This option enables support for checking for binary files
|
|
||||||
before a comparison is carried out.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
|
|
||||||
bool "Enable directory support"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_DIFF
|
|
||||||
help
|
|
||||||
This option enables support for directory and subdirectory
|
|
||||||
comparison.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_DIFF_MINIMAL
|
|
||||||
bool "Enable -d option to find smaller sets of changes"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_DIFF
|
|
||||||
help
|
|
||||||
Enabling this option allows the use of -d to make diff
|
|
||||||
try hard to find the smallest possible set of changes.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_DIRNAME
|
config BUSYBOX_CONFIG_DIRNAME
|
||||||
bool "dirname"
|
bool "dirname"
|
||||||
default y
|
default y
|
||||||
@@ -239,6 +200,19 @@ config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
|
|||||||
help
|
help
|
||||||
Support long options for the env applet.
|
Support long options for the env applet.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_EXPAND
|
||||||
|
bool "expand"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
By default, convert all tabs to spaces.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EXPAND_LONG_OPTIONS
|
||||||
|
bool "Enable long options"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_EXPAND && BUSYBOX_CONFIG_GETOPT_LONG
|
||||||
|
help
|
||||||
|
Support long options for the expand applet.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_EXPR
|
config BUSYBOX_CONFIG_EXPR
|
||||||
bool "expr"
|
bool "expr"
|
||||||
default y
|
default y
|
||||||
@@ -474,6 +448,20 @@ config BUSYBOX_CONFIG_PWD
|
|||||||
help
|
help
|
||||||
pwd is used to print the current directory.
|
pwd is used to print the current directory.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_READLINK
|
||||||
|
bool "readlink"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This program reads a symbolic link and returns the name
|
||||||
|
of the file it points to
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
|
||||||
|
bool "Enable canonicalization by following all symlinks (-f)"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_READLINK
|
||||||
|
help
|
||||||
|
Enable the readlink option (-f).
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_REALPATH
|
config BUSYBOX_CONFIG_REALPATH
|
||||||
bool "realpath"
|
bool "realpath"
|
||||||
default n
|
default n
|
||||||
@@ -536,6 +524,21 @@ config BUSYBOX_CONFIG_FEATURE_SORT_BIG
|
|||||||
The SuSv3 sort standard is available at:
|
The SuSv3 sort standard is available at:
|
||||||
http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
|
http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_SPLIT
|
||||||
|
bool "split"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
split a file into pieces.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
|
||||||
|
bool "fancy extensions"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SPLIT
|
||||||
|
help
|
||||||
|
Add support for features not required by SUSv3.
|
||||||
|
Supports additional suffixes 'b' for 512 bytes,
|
||||||
|
'g' for 1GiB for the -b option.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_STAT
|
config BUSYBOX_CONFIG_STAT
|
||||||
bool "stat"
|
bool "stat"
|
||||||
default n
|
default n
|
||||||
@@ -665,6 +668,19 @@ config BUSYBOX_CONFIG_UNAME
|
|||||||
help
|
help
|
||||||
uname is used to print system information.
|
uname is used to print system information.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_UNEXPAND
|
||||||
|
bool "unexpand"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
By default, convert only leading sequences of blanks to tabs.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS
|
||||||
|
bool "Enable long options"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_UNEXPAND && BUSYBOX_CONFIG_GETOPT_LONG
|
||||||
|
help
|
||||||
|
Support long options for the unexpand applet.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_UNIQ
|
config BUSYBOX_CONFIG_UNIQ
|
||||||
bool "uniq"
|
bool "uniq"
|
||||||
default y
|
default y
|
||||||
@@ -689,14 +705,6 @@ config BUSYBOX_CONFIG_UUENCODE
|
|||||||
help
|
help
|
||||||
uuencode is used to uuencode a file.
|
uuencode is used to uuencode a file.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_WATCH
|
|
||||||
bool "watch"
|
|
||||||
default n
|
|
||||||
select BUSYBOX_CONFIG_DATE
|
|
||||||
help
|
|
||||||
watch is used to execute a program periodically, showing
|
|
||||||
output to the screen.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_WC
|
config BUSYBOX_CONFIG_WC
|
||||||
bool "wc"
|
bool "wc"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -17,20 +17,6 @@ config BUSYBOX_CONFIG_PIPE_PROGRESS
|
|||||||
help
|
help
|
||||||
Display a dot to indicate pipe activity.
|
Display a dot to indicate pipe activity.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_READLINK
|
|
||||||
bool "readlink"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
This program reads a symbolic link and returns the name
|
|
||||||
of the file it points to
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
|
|
||||||
bool "Enable canonicalization by following all symlinks (-f)"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_READLINK
|
|
||||||
help
|
|
||||||
Enable the readlink option (-f).
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_RUN_PARTS
|
config BUSYBOX_CONFIG_RUN_PARTS
|
||||||
bool "run-parts"
|
bool "run-parts"
|
||||||
default n
|
default n
|
||||||
@@ -53,6 +39,15 @@ config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
|
|||||||
help
|
help
|
||||||
Support long options for the run-parts applet.
|
Support long options for the run-parts applet.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_FANCY
|
||||||
|
bool "Support additional arguments"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_RUN_PARTS
|
||||||
|
help
|
||||||
|
Support additional options:
|
||||||
|
-l --list print the names of the all matching files (not
|
||||||
|
limited to executables), but don't actually run them.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_START_STOP_DAEMON
|
config BUSYBOX_CONFIG_START_STOP_DAEMON
|
||||||
bool "start-stop-daemon"
|
bool "start-stop-daemon"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -27,6 +27,45 @@ config BUSYBOX_CONFIG_FEATURE_AWK_MATH
|
|||||||
Enable math functions of the Awk programming language.
|
Enable math functions of the Awk programming language.
|
||||||
NOTE: This will require libm to be present for linking.
|
NOTE: This will require libm to be present for linking.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_CMP
|
||||||
|
bool "cmp"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
cmp is used to compare two files and returns the result
|
||||||
|
to standard output.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_DIFF
|
||||||
|
bool "diff"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
diff compares two files or directories and outputs the
|
||||||
|
differences between them in a form that can be given to
|
||||||
|
the patch command.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_DIFF_BINARY
|
||||||
|
bool "Enable checks for binary files"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_DIFF
|
||||||
|
help
|
||||||
|
This option enables support for checking for binary files
|
||||||
|
before a comparison is carried out.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
|
||||||
|
bool "Enable directory support"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_DIFF
|
||||||
|
help
|
||||||
|
This option enables support for directory and subdirectory
|
||||||
|
comparison.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_DIFF_MINIMAL
|
||||||
|
bool "Enable -d option to find smaller sets of changes"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_DIFF
|
||||||
|
help
|
||||||
|
Enabling this option allows the use of -d to make diff
|
||||||
|
try hard to find the smallest possible set of changes.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_ED
|
config BUSYBOX_CONFIG_ED
|
||||||
bool "ed"
|
bool "ed"
|
||||||
default n
|
default n
|
||||||
@@ -57,6 +96,16 @@ config BUSYBOX_CONFIG_VI
|
|||||||
learning curve. If you are not already comfortable with 'vi'
|
learning curve. If you are not already comfortable with 'vi'
|
||||||
you may wish to use something else.
|
you may wish to use something else.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
|
||||||
|
int "Maximum line length in vi"
|
||||||
|
range 256 16384
|
||||||
|
default 1024
|
||||||
|
depends on BUSYBOX_CONFIG_VI
|
||||||
|
help
|
||||||
|
vi uses on-stack buffers for intermediate line buffers.
|
||||||
|
You may want to decrease this parameter if your target machine
|
||||||
|
benefits from smaller stack usage.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_VI_COLON
|
config BUSYBOX_CONFIG_FEATURE_VI_COLON
|
||||||
bool "Enable \":\" colon commands (no \"ex\" mode)"
|
bool "Enable \":\" colon commands (no \"ex\" mode)"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
|
|||||||
files, in days.
|
files, in days.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
|
config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
|
||||||
bool "Enable modified time matching (-min) option"
|
bool "Enable modified time matching (-mmin) option"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_FIND
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
help
|
help
|
||||||
@@ -57,8 +57,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
|
|||||||
default y
|
default y
|
||||||
depends on BUSYBOX_CONFIG_FIND
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
help
|
help
|
||||||
This option will allow find to restrict searches to a single
|
This option allows find to restrict searches to a single filesystem.
|
||||||
filesystem.
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_MAXDEPTH
|
||||||
|
bool "Enable -maxdepth N option"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
This option enables -maxdepth N option.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
|
config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
|
||||||
bool "Enable -newer option for comparing file mtimes"
|
bool "Enable -newer option for comparing file mtimes"
|
||||||
@@ -83,6 +89,88 @@ config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
|
|||||||
Support the 'find -exec' option for executing commands based upon
|
Support the 'find -exec' option for executing commands based upon
|
||||||
the files matched.
|
the files matched.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_USER
|
||||||
|
bool "Enable username/uid matching (-user) option"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Support the 'find -user' option for searching by username or uid.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_GROUP
|
||||||
|
bool "Enable group/gid matching (-group) option"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Support the 'find -group' option for searching by group name or gid.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_NOT
|
||||||
|
bool "Enable the 'not' (!) operator"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Support the '!' operator to invert the test results.
|
||||||
|
If 'Enable full-blown desktop' is enabled, then will also support
|
||||||
|
the non-POSIX notation '-not'.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
|
||||||
|
bool "Enable the -depth option"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Process each directory's contents before the directory itself.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
|
||||||
|
bool "Enable parens in options"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Enable usage of parens '(' to specify logical order of arguments.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_SIZE
|
||||||
|
bool "Enable (-size) option allowing matching for file size"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
Support the 'find -size' option for searching by file size.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
|
||||||
|
bool "Enable (-prune) option allowing to exclude subdirectories"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
If the file is a directory, dont descend into it. Useful for
|
||||||
|
exclusion .svn and CVS directories.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
|
||||||
|
bool "Enable -delete option allowing to delete files"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
|
||||||
|
help
|
||||||
|
Support the 'find -delete' option for deleting files and direcotries.
|
||||||
|
WARNING: This option can do much harm if used wrong. Busybox will not
|
||||||
|
try to protect the user from doing stupid things. Use with care.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_PATH
|
||||||
|
bool "Enable -path option allowing to match pathname patterns"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
The -path option matches whole pathname instead of just filename.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
|
||||||
|
bool "Enable -regex: match pathname to regex"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FIND
|
||||||
|
help
|
||||||
|
The -regex option matches whole pathname against regular expression.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
|
||||||
|
bool "Enable (-context) option for matching security context"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Support the 'find -context' option for matching security context.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_GREP
|
config BUSYBOX_CONFIG_GREP
|
||||||
bool "grep"
|
bool "grep"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
|
|||||||
behavour, but is often what you want in an embedded system where
|
behavour, but is often what you want in an embedded system where
|
||||||
the console is only accessed during development or for maintenance.
|
the console is only accessed during development or for maintenance.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
|
||||||
|
bool "Enable init to write to syslog"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_INIT
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET
|
config BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET
|
||||||
bool "Be _extra_ quiet on boot"
|
bool "Be _extra_ quiet on boot"
|
||||||
default n
|
default n
|
||||||
|
|||||||
20
package/busybox/config/ipsvd/Config.in
Normal file
20
package/busybox/config/ipsvd/Config.in
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see scripts/kbuild/config-language.txt.
|
||||||
|
#
|
||||||
|
|
||||||
|
menu "ipsvd utilities"
|
||||||
|
|
||||||
|
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_UDPSVD
|
||||||
|
bool "udpsvd"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
udpsvd listens on a udp port and runs a program for each new connection
|
||||||
|
|
||||||
|
endmenu
|
||||||
@@ -26,4 +26,105 @@ config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
|
|||||||
2 3.0 5088
|
2 3.0 5088
|
||||||
3 (smallest) 5.1 4912
|
3 (smallest) 5.1 4912
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_FAST_TOP
|
||||||
|
bool "Faster /proc scanning code (+100 bytes)"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
|
||||||
|
but code size is slightly bigger.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
|
||||||
|
bool "Support for /etc/networks"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enable support for network names in /etc/networks. This is
|
||||||
|
a rarely used feature which allows you to use names
|
||||||
|
instead of IP/mask pairs in route command.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
bool "Command line editing"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable line editing (mainly for shell command line).
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
|
||||||
|
int "Maximum length of input"
|
||||||
|
range 128 8192
|
||||||
|
default 512
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Line editing code uses on-stack buffers for storage.
|
||||||
|
You may want to decrease this parameter if your target machine
|
||||||
|
benefits from smaller stack usage.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_KEYS
|
||||||
|
bool "Additional editing keys"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Enable additonal editing keys (Ctrl-E, Ctrl-U etc).
|
||||||
|
Arrow keys, Home/End/Delete and Ctrl-W work even without this option.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_VI
|
||||||
|
bool "vi-style line editing commands"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Enable vi-style line editing. In shells, this mode can be
|
||||||
|
turned on and off with "set -o vi" and "set +o vi".
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY
|
||||||
|
int "History size"
|
||||||
|
range 0 99999
|
||||||
|
default 256
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Specify command history size.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
|
||||||
|
bool "History saving"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_ASH && BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Enable history saving in ash shell.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
|
||||||
|
bool "Tab completion"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Enable tab completion.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_USERNAME_COMPLETION
|
||||||
|
bool "Username completion"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
|
||||||
|
help
|
||||||
|
Enable username completion.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
|
||||||
|
bool "Fancy shell prompts"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_EDITING
|
||||||
|
help
|
||||||
|
Setting this option allows for prompts to use things like \w and
|
||||||
|
\$ and escape codes.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
|
||||||
|
bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
|
||||||
|
time intervals (time, ping, traceroute etc need this).
|
||||||
|
Probably requires Linux 2.6+. If not selected, gettimeofday
|
||||||
|
will be used instead (which gives wrong results if date/time
|
||||||
|
is reset).
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR
|
||||||
|
bool "Use ioctl names rather than hex values in error messages"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Use ioctl names rather than hex values in error messages
|
||||||
|
(e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
|
||||||
|
saves about 1400 bytes.
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@@ -59,12 +59,29 @@ config BUSYBOX_CONFIG_ADDGROUP
|
|||||||
help
|
help
|
||||||
Utility for creating a new group account.
|
Utility for creating a new group account.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
|
||||||
|
bool "Support for adding users to groups"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_ADDGROUP
|
||||||
|
help
|
||||||
|
If called with two non-option arguments,
|
||||||
|
addgroup will add an existing user to an
|
||||||
|
existing group.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_DELGROUP
|
config BUSYBOX_CONFIG_DELGROUP
|
||||||
bool "delgroup"
|
bool "delgroup"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Utility for deleting a group account.
|
Utility for deleting a group account.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
|
||||||
|
bool "Support for removing users from groups."
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_DELGROUP
|
||||||
|
help
|
||||||
|
If called with two non-option arguments, deluser
|
||||||
|
or delgroup will remove an user from a specified group.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_ADDUSER
|
config BUSYBOX_CONFIG_ADDUSER
|
||||||
bool "adduser"
|
bool "adduser"
|
||||||
default n
|
default n
|
||||||
@@ -111,6 +128,13 @@ config BUSYBOX_CONFIG_LOGIN
|
|||||||
Note that Busybox binary must be setuid root for this applet to
|
Note that Busybox binary must be setuid root for this applet to
|
||||||
work properly.
|
work properly.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_PAM
|
||||||
|
bool "Support for PAM (Pluggable Authentication Modules)"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_LOGIN
|
||||||
|
help
|
||||||
|
Use PAM in login(1) instead of direct access to password database.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_LOGIN_SCRIPTS
|
config BUSYBOX_CONFIG_LOGIN_SCRIPTS
|
||||||
bool "Support for login scripts"
|
bool "Support for login scripts"
|
||||||
depends on BUSYBOX_CONFIG_LOGIN
|
depends on BUSYBOX_CONFIG_LOGIN
|
||||||
@@ -119,6 +143,14 @@ config BUSYBOX_CONFIG_LOGIN_SCRIPTS
|
|||||||
Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
|
Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
|
||||||
just prior to switching from root to logged-in user.
|
just prior to switching from root to logged-in user.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_NOLOGIN
|
||||||
|
bool "Support for /etc/nologin"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_LOGIN
|
||||||
|
help
|
||||||
|
The file /etc/nologin is used by (some versions of) login(1).
|
||||||
|
If it exists, non-root logins are prohibited.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SECURETTY
|
config BUSYBOX_CONFIG_FEATURE_SECURETTY
|
||||||
bool "Support for /etc/securetty"
|
bool "Support for /etc/securetty"
|
||||||
default n
|
default n
|
||||||
@@ -149,6 +181,20 @@ config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
|
|||||||
help
|
help
|
||||||
With this option passwd will refuse new passwords which are "weak".
|
With this option passwd will refuse new passwords which are "weak".
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_CRYPTPW
|
||||||
|
bool "cryptpw"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Applet for crypting a string.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_CHPASSWD
|
||||||
|
bool "chpasswd"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
chpasswd reads a file of user name and password pairs from
|
||||||
|
standard input and uses this information to update a group of
|
||||||
|
existing users.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_SU
|
config BUSYBOX_CONFIG_SU
|
||||||
bool "su"
|
bool "su"
|
||||||
default n
|
default n
|
||||||
|
|||||||
@@ -19,6 +19,13 @@ config BUSYBOX_CONFIG_BBCONFIG
|
|||||||
The bbconfig applet will print the config file with which
|
The bbconfig applet will print the config file with which
|
||||||
busybox was built.
|
busybox was built.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_CHRT
|
||||||
|
bool "chrt"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
manipulate real-time attributes of a process.
|
||||||
|
This requires sched_{g,s}etparam support in your libc.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_CROND
|
config BUSYBOX_CONFIG_CROND
|
||||||
bool "crond"
|
bool "crond"
|
||||||
default y
|
default y
|
||||||
@@ -264,7 +271,7 @@ config BUSYBOX_CONFIG_MAKEDEVS
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Choose makedevs behaviour"
|
prompt "Choose makedevs behaviour"
|
||||||
depends BUSYBOX_CONFIG_MAKEDEVS
|
depends on BUSYBOX_CONFIG_MAKEDEVS
|
||||||
default BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
|
default BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_LEAF
|
config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_LEAF
|
||||||
@@ -289,12 +296,6 @@ config BUSYBOX_CONFIG_MT
|
|||||||
to advance or rewind a tape past a specified number of archive
|
to advance or rewind a tape past a specified number of archive
|
||||||
files on the tape.
|
files on the tape.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_NMETER
|
|
||||||
bool "nmeter"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
nmeter prints various system parameters continuously.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_RAIDAUTORUN
|
config BUSYBOX_CONFIG_RAIDAUTORUN
|
||||||
bool "raidautorun"
|
bool "raidautorun"
|
||||||
default n
|
default n
|
||||||
@@ -305,7 +306,7 @@ config BUSYBOX_CONFIG_RAIDAUTORUN
|
|||||||
config BUSYBOX_CONFIG_READAHEAD
|
config BUSYBOX_CONFIG_READAHEAD
|
||||||
bool "readahead"
|
bool "readahead"
|
||||||
default n
|
default n
|
||||||
depends on LFS
|
depends on BUSYBOX_CONFIG_LFS
|
||||||
help
|
help
|
||||||
Preload the files listed on the command line into RAM cache so that
|
Preload the files listed on the command line into RAM cache so that
|
||||||
subsequent reads on these files will not block on disk I/O.
|
subsequent reads on these files will not block on disk I/O.
|
||||||
@@ -371,6 +372,14 @@ config BUSYBOX_CONFIG_TIME
|
|||||||
When the command finishes, time writes a message to standard output
|
When the command finishes, time writes a message to standard output
|
||||||
giving timing statistics about this program run.
|
giving timing statistics about this program run.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_TTYSIZE
|
||||||
|
bool "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`.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_WATCHDOG
|
config BUSYBOX_CONFIG_WATCHDOG
|
||||||
bool "watchdog"
|
bool "watchdog"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
|
|||||||
config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
|
config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
|
||||||
# Simulate indentation
|
# Simulate indentation
|
||||||
bool "Support version 2.2.x to 2.4.x Linux kernels"
|
bool "Support version 2.2.x to 2.4.x Linux kernels"
|
||||||
default y
|
default n
|
||||||
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE
|
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE
|
||||||
help
|
help
|
||||||
Support module loading for 2.2.x and 2.4.x Linux kernels.
|
Support module loading for 2.2.x and 2.4.x Linux kernels.
|
||||||
|
|||||||
@@ -12,17 +12,25 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
|
|||||||
Enable IPv6 support in busybox.
|
Enable IPv6 support in busybox.
|
||||||
This adds IPv6 support in the networking applets.
|
This adds IPv6 support in the networking applets.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
|
||||||
|
bool "Verbose resolution errors"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable if you are not satisfied with simplistic
|
||||||
|
"can't resolve 'hostname.com'" and want to know more.
|
||||||
|
This may increase size of your executable a bit.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_ARP
|
config BUSYBOX_CONFIG_ARP
|
||||||
bool "arp"
|
bool "arp"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Manipulate the system ARP cache
|
Manipulate the system ARP cache.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_ARPING
|
config BUSYBOX_CONFIG_ARPING
|
||||||
bool "arping"
|
bool "arping"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Ping hosts by ARP packets
|
Ping hosts by ARP packets.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_DNSD
|
config BUSYBOX_CONFIG_DNSD
|
||||||
bool "dnsd"
|
bool "dnsd"
|
||||||
@@ -67,7 +75,7 @@ config BUSYBOX_CONFIG_HOSTNAME
|
|||||||
bool "hostname"
|
bool "hostname"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Show or set the system's host name
|
Show or set the system's host name.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_HTTPD
|
config BUSYBOX_CONFIG_HTTPD
|
||||||
bool "httpd"
|
bool "httpd"
|
||||||
@@ -75,6 +83,14 @@ config BUSYBOX_CONFIG_HTTPD
|
|||||||
help
|
help
|
||||||
Serve web pages via an HTTP server.
|
Serve web pages via an HTTP server.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE
|
||||||
|
bool "Use sendfile system call"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_HTTPD
|
||||||
|
help
|
||||||
|
When enabled, httpd will use the kernel sendfile() function
|
||||||
|
instead of read/write loop.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
|
config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
|
||||||
bool "Support reloading the global config file using hup signal"
|
bool "Support reloading the global config file using hup signal"
|
||||||
default y
|
default y
|
||||||
@@ -132,7 +148,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
|
|||||||
help
|
help
|
||||||
This option enables support for running scripts through an
|
This option enables support for running scripts through an
|
||||||
interpreter. Turn this on if you want PHP scripts to work
|
interpreter. Turn this on if you want PHP scripts to work
|
||||||
properly. You need to supply an addition line in your httpd
|
properly. You need to supply an additional line in your httpd
|
||||||
config file:
|
config file:
|
||||||
*.php:/path/to/your/php
|
*.php:/path/to/your/php
|
||||||
|
|
||||||
@@ -154,6 +170,19 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR
|
|||||||
For example, httpd -e "<Hello World>" as
|
For example, httpd -e "<Hello World>" as
|
||||||
"<Hello World>".
|
"<Hello World>".
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
|
||||||
|
bool "Enable support for custom error pages"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_HTTPD
|
||||||
|
help
|
||||||
|
This option allows you to define custom error pages in
|
||||||
|
the configuration file instead of the default HTTP status
|
||||||
|
error pages. For instance, if you add the line:
|
||||||
|
E404:/path/e404.html
|
||||||
|
in the config file, the server will respond the specified
|
||||||
|
'/path/e404.html' file instead of the terse '404 NOT FOUND'
|
||||||
|
message.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_IFCONFIG
|
config BUSYBOX_CONFIG_IFCONFIG
|
||||||
bool "ifconfig"
|
bool "ifconfig"
|
||||||
default y
|
default y
|
||||||
@@ -204,7 +233,6 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
|
|||||||
config BUSYBOX_CONFIG_IFUPDOWN
|
config BUSYBOX_CONFIG_IFUPDOWN
|
||||||
bool "ifupdown"
|
bool "ifupdown"
|
||||||
default n
|
default n
|
||||||
select BUSYBOX_CONFIG_RUN_PARTS
|
|
||||||
help
|
help
|
||||||
Activate or deactivate the specified interfaces. This applet makes
|
Activate or deactivate the specified interfaces. This applet makes
|
||||||
use of either "ifconfig" and "route" or the "ip" command to actually
|
use of either "ifconfig" and "route" or the "ip" command to actually
|
||||||
@@ -215,8 +243,18 @@ config BUSYBOX_CONFIG_IFUPDOWN
|
|||||||
against my better judgement (since this will surely result in plenty
|
against my better judgement (since this will surely result in plenty
|
||||||
of support questions on the mailing list), I do not force you to
|
of support questions on the mailing list), I do not force you to
|
||||||
enable these additional options. It is up to you to supply either
|
enable these additional options. It is up to you to supply either
|
||||||
"ifconfig" and "route" or the "ip" command, either via busybox or via
|
"ifconfig", "route" and "run-parts" or the "ip" command, either
|
||||||
standalone utilities.
|
via busybox or via standalone utilities.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_IFUPDOWN_IFSTATE_PATH
|
||||||
|
string "Absolute path to ifstate file"
|
||||||
|
default "/var/run/ifstate"
|
||||||
|
help
|
||||||
|
ifupdown keeps state information in a file called ifstate.
|
||||||
|
Typically it is located in /var/run/ifstate, however
|
||||||
|
some distributions tend to put it in other places
|
||||||
|
(debian, for example, uses /etc/network/run/ifstate).
|
||||||
|
This config option defines location of ifstate.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
|
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
|
||||||
bool "Use ip applet"
|
bool "Use ip applet"
|
||||||
@@ -259,7 +297,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
|
|||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_IFUPDOWN
|
depends on BUSYBOX_CONFIG_IFUPDOWN
|
||||||
help
|
help
|
||||||
If you want busybox to talk IPv4, leave this on.
|
If you want ifup/ifdown to talk IPv4, leave this on.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
|
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
|
||||||
bool "Enable support for IPv6"
|
bool "Enable support for IPv6"
|
||||||
@@ -268,13 +306,14 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
|
|||||||
help
|
help
|
||||||
If you need support for IPv6, turn this option on.
|
If you need support for IPv6, turn this option on.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPX
|
### UNUSED
|
||||||
bool "Enable support for IPX"
|
### config FEATURE_IFUPDOWN_IPX
|
||||||
default n
|
### bool "Enable support for IPX"
|
||||||
depends on BUSYBOX_CONFIG_IFUPDOWN
|
### default n
|
||||||
help
|
### depends on IFUPDOWN
|
||||||
If this option is selected you can use busybox to work with IPX
|
### help
|
||||||
networks.
|
### If this option is selected you can use busybox to work with IPX
|
||||||
|
### networks.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
|
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
|
||||||
bool "Enable mapping support"
|
bool "Enable mapping support"
|
||||||
@@ -284,6 +323,16 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
|
|||||||
This enables support for the "mapping" stanza, unless you have
|
This enables support for the "mapping" stanza, unless you have
|
||||||
a weird network setup you don't need it.
|
a weird network setup you don't need it.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
|
||||||
|
bool "Enable support for external dhcp clients"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_IFUPDOWN
|
||||||
|
help
|
||||||
|
This enables support for the external dhcp clients. Clients are
|
||||||
|
tried in the following order: dhcpcd, dhclient, pump and udhcpc.
|
||||||
|
Otherwise, if udhcpc applet is enabled, it is used.
|
||||||
|
Otherwise, ifup/ifdown will have no support for DHCP.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_INETD
|
config BUSYBOX_CONFIG_INETD
|
||||||
bool "inetd"
|
bool "inetd"
|
||||||
default n
|
default n
|
||||||
@@ -330,7 +379,7 @@ config BUSYBOX_CONFIG_FEATURE_INETD_RPC
|
|||||||
bool "Support RPC services"
|
bool "Support RPC services"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_INETD
|
depends on BUSYBOX_CONFIG_INETD
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
||||||
help
|
help
|
||||||
Support Sun-RPC based services
|
Support Sun-RPC based services
|
||||||
|
|
||||||
@@ -387,6 +436,7 @@ config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
|
|||||||
ip link -> iplink
|
ip link -> iplink
|
||||||
ip route -> iproute
|
ip route -> iproute
|
||||||
ip tunnel -> iptunnel
|
ip tunnel -> iptunnel
|
||||||
|
ip rule -> iprule
|
||||||
|
|
||||||
Say N unless you desparately need the short form of the ip
|
Say N unless you desparately need the short form of the ip
|
||||||
object commands.
|
object commands.
|
||||||
@@ -466,7 +516,7 @@ config BUSYBOX_CONFIG_NETMSG
|
|||||||
simple program for sending udp broadcast messages
|
simple program for sending udp broadcast messages
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_NC_SERVER
|
config BUSYBOX_CONFIG_NC_SERVER
|
||||||
bool "Netcat server options (-lp)"
|
bool "Netcat server options (-l)"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_NC
|
depends on BUSYBOX_CONFIG_NC
|
||||||
help
|
help
|
||||||
@@ -487,6 +537,14 @@ config BUSYBOX_CONFIG_NETSTAT
|
|||||||
help
|
help
|
||||||
netstat prints information about the Linux networking subsystem.
|
netstat prints information about the Linux networking subsystem.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
|
||||||
|
bool " Enable wide netstat output"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_NETSTAT
|
||||||
|
help
|
||||||
|
Add support for wide columns. Useful when displaying IPv6 addresses
|
||||||
|
(-W option).
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_NSLOOKUP
|
config BUSYBOX_CONFIG_NSLOOKUP
|
||||||
bool "nslookup"
|
bool "nslookup"
|
||||||
default y
|
default y
|
||||||
@@ -500,6 +558,19 @@ config BUSYBOX_CONFIG_PING
|
|||||||
ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
|
ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
|
||||||
elicit an ICMP ECHO_RESPONSE from a host or gateway.
|
elicit an ICMP ECHO_RESPONSE from a host or gateway.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_PING6
|
||||||
|
bool "ping6"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_IPV6 && BUSYBOX_CONFIG_PING
|
||||||
|
help
|
||||||
|
This will give you a ping that can talk IPv6.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_PSCAN
|
||||||
|
bool "pscan"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Simple network port scanner.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_FANCY_PING
|
config BUSYBOX_CONFIG_FEATURE_FANCY_PING
|
||||||
bool "Enable fancy ping output"
|
bool "Enable fancy ping output"
|
||||||
default y
|
default y
|
||||||
@@ -508,27 +579,18 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_PING
|
|||||||
Make the output from the ping applet include statistics, and at the
|
Make the output from the ping applet include statistics, and at the
|
||||||
same time provide full support for ICMP packets.
|
same time provide full support for ICMP packets.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_PING6
|
|
||||||
bool "ping6"
|
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_IPV6
|
|
||||||
help
|
|
||||||
This will give you a ping that can talk IPv6.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_FANCY_PING6
|
|
||||||
bool "Enable fancy ping6 output"
|
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_PING6
|
|
||||||
help
|
|
||||||
Make the output from the ping6 applet include statistics, and at the
|
|
||||||
same time provide full support for ICMP packets.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_ROUTE
|
config BUSYBOX_CONFIG_ROUTE
|
||||||
bool "route"
|
bool "route"
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Route displays or manipulates the kernel's IP routing tables.
|
Route displays or manipulates the kernel's IP routing tables.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_SLATTACH
|
||||||
|
bool "slattach"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
slattach is a small utility to attach network interfaces to serial lines.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_TELNET
|
config BUSYBOX_CONFIG_TELNET
|
||||||
bool "telnet"
|
bool "telnet"
|
||||||
default y
|
default y
|
||||||
@@ -703,13 +765,6 @@ config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
|
|||||||
help
|
help
|
||||||
Support authenticated HTTP transfers.
|
Support authenticated HTTP transfers.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_WGET_IP6_LITERAL
|
|
||||||
bool "Enable IPv6 literal addresses"
|
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_FEATURE_IPV6
|
|
||||||
help
|
|
||||||
Support IPv6 address literal notation in URLs.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
|
config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
|
||||||
bool "Enable long options"
|
bool "Enable long options"
|
||||||
default y
|
default y
|
||||||
|
|||||||
@@ -32,6 +32,16 @@ config BUSYBOX_CONFIG_APP_DUMPLEASES
|
|||||||
|
|
||||||
See http://udhcp.busybox.net for further details.
|
See http://udhcp.busybox.net for further details.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
|
||||||
|
bool "Rewrite the lease file at every new acknowledge"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_APP_UDHCPD
|
||||||
|
help
|
||||||
|
If selected, udhcpd will write a new file with leases every
|
||||||
|
time a new lease has been accepted, thus eleminating the need
|
||||||
|
to send SIGUSR1 for the initial writing, or updating. Any timed
|
||||||
|
rewriting remains undisturbed
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_APP_UDHCPC
|
config BUSYBOX_CONFIG_APP_UDHCPC
|
||||||
bool "udhcp Client (udhcpc)"
|
bool "udhcp Client (udhcpc)"
|
||||||
default y
|
default y
|
||||||
@@ -44,17 +54,6 @@ config BUSYBOX_CONFIG_APP_UDHCPC
|
|||||||
|
|
||||||
See http://udhcp.busybox.net for further details.
|
See http://udhcp.busybox.net for further details.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_UDHCP_SYSLOG
|
|
||||||
bool "Log udhcp messages to syslog"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
|
|
||||||
select BUSYBOX_CONFIG_FEATURE_SYSLOG
|
|
||||||
help
|
|
||||||
If not daemonized, udhcpd prints its messages to stdout/stderr.
|
|
||||||
If this option is selected, it will also log them to syslog.
|
|
||||||
|
|
||||||
See http://udhcp.busybox.net for further details.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
|
config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
|
||||||
bool "Compile udhcp with noisy debugging messages"
|
bool "Compile udhcp with noisy debugging messages"
|
||||||
default n
|
default n
|
||||||
@@ -65,3 +64,11 @@ config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
|
|||||||
the background.
|
the background.
|
||||||
|
|
||||||
See http://udhcp.busybox.net for further details.
|
See http://udhcp.busybox.net for further details.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_RFC3397
|
||||||
|
bool "Support for RFC3397 domain search (experimental)"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
|
||||||
|
help
|
||||||
|
If selected, both client and server will support passing of domain
|
||||||
|
search lists via option 119, specified in RFC3397.
|
||||||
|
|||||||
@@ -43,6 +43,12 @@ config BUSYBOX_CONFIG_KILLALL5
|
|||||||
default y
|
default y
|
||||||
depends on BUSYBOX_CONFIG_KILL
|
depends on BUSYBOX_CONFIG_KILL
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_NMETER
|
||||||
|
bool "nmeter"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Prints selected system stats continuously, one line per update.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_PIDOF
|
config BUSYBOX_CONFIG_PIDOF
|
||||||
bool "pidof"
|
bool "pidof"
|
||||||
default y
|
default y
|
||||||
@@ -74,7 +80,7 @@ config BUSYBOX_CONFIG_PS
|
|||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_PS_WIDE
|
config BUSYBOX_CONFIG_FEATURE_PS_WIDE
|
||||||
bool "Enable argument for wide output (-w)"
|
bool "Enable argument for wide output (-w)"
|
||||||
default y
|
default n
|
||||||
depends on BUSYBOX_CONFIG_PS
|
depends on BUSYBOX_CONFIG_PS
|
||||||
help
|
help
|
||||||
Support argument 'w' for wide output.
|
Support argument 'w' for wide output.
|
||||||
@@ -102,11 +108,25 @@ config BUSYBOX_CONFIG_TOP
|
|||||||
system.
|
system.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
|
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
|
||||||
bool "Support showing CPU usage percentage (add 2k bytes)"
|
bool "Show CPU per-process usage percentage (adds 2k bytes)"
|
||||||
default y
|
default y
|
||||||
depends on BUSYBOX_CONFIG_TOP
|
depends on BUSYBOX_CONFIG_TOP
|
||||||
help
|
help
|
||||||
Make top display CPU usage.
|
Make top display CPU usage for each process.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
|
||||||
|
bool "Show CPU global usage percentage (adds 0.5k bytes)"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
|
||||||
|
help
|
||||||
|
Makes top display "CPU: NN% usr NN% sys..." line.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS
|
||||||
|
bool "Show 1/10th of a percent in CPU/mem statistics (adds 0.3k bytes)"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
|
||||||
|
help
|
||||||
|
Show 1/10th of a percent in CPU/mem statistics.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_UPTIME
|
config BUSYBOX_CONFIG_UPTIME
|
||||||
bool "uptime"
|
bool "uptime"
|
||||||
@@ -116,6 +136,14 @@ config BUSYBOX_CONFIG_UPTIME
|
|||||||
the system has been running, how many users are currently logged
|
the system has been running, how many users are currently logged
|
||||||
on, and the system load averages for the past 1, 5, and 15 minutes.
|
on, and the system load averages for the past 1, 5, and 15 minutes.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_WATCH
|
||||||
|
bool "watch"
|
||||||
|
default n
|
||||||
|
#huh?? select DATE
|
||||||
|
help
|
||||||
|
watch is used to execute a program periodically, showing
|
||||||
|
output to the screen.
|
||||||
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|||||||
108
package/busybox/config/selinux/Config.in
Normal file
108
package/busybox/config/selinux/Config.in
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
#
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see scripts/kbuild/config-language.txt.
|
||||||
|
#
|
||||||
|
|
||||||
|
menu "Selinux Utilities"
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_CHCON
|
||||||
|
bool "chcon"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to change the security context of file.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_CHCON_LONG_OPTIONS
|
||||||
|
bool "Enable long options"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_CHCON && BUSYBOX_CONFIG_GETOPT_LONG
|
||||||
|
help
|
||||||
|
Support long options for the chcon applet.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_GETENFORCE
|
||||||
|
bool "getenforce"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to get the current mode of SELinux.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_GETSEBOOL
|
||||||
|
bool "getsebool"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to get SELinux boolean values.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_LOAD_POLICY
|
||||||
|
bool "load_policy"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to load SELinux policy.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_MATCHPATHCON
|
||||||
|
bool "matchpathcon"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to get default security context of the
|
||||||
|
specified path from the file contexts configuration.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_RESTORECON
|
||||||
|
bool "restorecon"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to relabel files. The feature is almost
|
||||||
|
the same as setfiles, but usage is a little different.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_RUNCON
|
||||||
|
bool "runcon"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to run command in speficied security context.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_RUNCON_LONG_OPTIONS
|
||||||
|
bool "Enable long options"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_RUNCON && BUSYBOX_CONFIG_GETOPT_LONG
|
||||||
|
help
|
||||||
|
Support long options for the runcon applet.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_SELINUXENABLED
|
||||||
|
bool "selinuxenabled"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support for this command to be used within shell scripts
|
||||||
|
to determine if selinux is enabled.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_SETENFORCE
|
||||||
|
bool "setenforce"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to modify the mode SELinux is running in.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_SETFILES
|
||||||
|
bool "setfiles"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SELINUX
|
||||||
|
help
|
||||||
|
Enable support to modify to relabel files.
|
||||||
|
Notice: If you built libselinux with -D_FILE_OFFSET_BITS=64,
|
||||||
|
(It is default in libselinux's Makefile), you _must_ enable
|
||||||
|
CONFIG_LFS.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_FEATURE_SETFILES_CHECK_OPTION
|
||||||
|
bool "Enable check option"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_SETFILES
|
||||||
|
help
|
||||||
|
Support "-c" option (check the validity of the contexts against
|
||||||
|
the specified binary policy) for setfiles. Requires libsepol.
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ config BUSYBOX_CONFIG_ASH_MATH_SUPPORT
|
|||||||
|
|
||||||
config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
|
config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
|
||||||
bool "Extend Posix math support to 64 bit"
|
bool "Extend Posix math support to 64 bit"
|
||||||
default n
|
default y
|
||||||
depends on BUSYBOX_CONFIG_ASH_MATH_SUPPORT
|
depends on BUSYBOX_CONFIG_ASH_MATH_SUPPORT
|
||||||
help
|
help
|
||||||
Enable 64-bit math support in the ash shell. This will make
|
Enable 64-bit math support in the ash shell. This will make
|
||||||
@@ -135,7 +135,7 @@ config BUSYBOX_CONFIG_ASH_MAIL
|
|||||||
|
|
||||||
config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
|
config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
|
||||||
bool "Optimize for size instead of speed"
|
bool "Optimize for size instead of speed"
|
||||||
default y
|
default n
|
||||||
depends on BUSYBOX_CONFIG_ASH
|
depends on BUSYBOX_CONFIG_ASH
|
||||||
help
|
help
|
||||||
Compile ash for reduced size at the price of speed.
|
Compile ash for reduced size at the price of speed.
|
||||||
@@ -153,7 +153,7 @@ config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
|
|||||||
|
|
||||||
config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
|
config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
|
||||||
bool "Expand prompt string"
|
bool "Expand prompt string"
|
||||||
default n
|
default y
|
||||||
depends on BUSYBOX_CONFIG_ASH
|
depends on BUSYBOX_CONFIG_ASH
|
||||||
help
|
help
|
||||||
"PS#" may be contain volatile content, such as backquote commands.
|
"PS#" may be contain volatile content, such as backquote commands.
|
||||||
@@ -176,6 +176,54 @@ config BUSYBOX_CONFIG_HUSH
|
|||||||
word ), arithmetic expansion, aliases, brace expansion, tilde
|
word ), arithmetic expansion, aliases, brace expansion, tilde
|
||||||
expansion, &> and >& redirection of stdout+stderr, etc.
|
expansion, &> and >& redirection of stdout+stderr, etc.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_HELP
|
||||||
|
bool "help builtin"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH
|
||||||
|
help
|
||||||
|
Enable help builtin in hush. Code size + ~1 kbyte.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_INTERACTIVE
|
||||||
|
bool "Interactive mode"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH
|
||||||
|
help
|
||||||
|
Enable interactive mode (prompt and command editing).
|
||||||
|
Without this, hush simply reads and executes commands
|
||||||
|
from stdin just like a shell script from the file.
|
||||||
|
No prompt, no PS1/PS2 magic shell variables.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_JOB
|
||||||
|
bool "Job control"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE
|
||||||
|
help
|
||||||
|
Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
|
||||||
|
command (not entire shell), fg/bg builtins work. Without this option,
|
||||||
|
"cmd &" still works by simply spawning a process and immediately
|
||||||
|
prompting for next command (or executing next command in a script),
|
||||||
|
but no separate process group is formed.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_TICK
|
||||||
|
bool "Process substitution"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH
|
||||||
|
help
|
||||||
|
Enable process substitution `command` and $(command) in hush.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_IF
|
||||||
|
bool "Support if/then/elif/else/fi"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH
|
||||||
|
help
|
||||||
|
Enable if/then/elif/else/fi in hush.
|
||||||
|
|
||||||
|
config BUSYBOX_CONFIG_HUSH_LOOPS
|
||||||
|
bool "Support for, while and until loops"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_HUSH
|
||||||
|
help
|
||||||
|
Enable for, while and until loops in hush.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_LASH
|
config BUSYBOX_CONFIG_LASH
|
||||||
bool "lash"
|
bool "lash"
|
||||||
@@ -216,12 +264,12 @@ config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
|
|||||||
help
|
help
|
||||||
Remove the busybox introduction when starting a shell.
|
Remove the busybox introduction when starting a shell.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE_SHELL
|
config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
|
||||||
bool "Standalone shell"
|
bool "Standalone shell"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
|
depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
|
||||||
help
|
help
|
||||||
This option causes the selected busybox shell to use busybox applets
|
This option causes busybox shells to use busybox applets
|
||||||
in preference to executables in the PATH whenever possible. For
|
in preference to executables in the PATH whenever possible. For
|
||||||
example, entering the command 'ifconfig' into the shell would cause
|
example, entering the command 'ifconfig' into the shell would cause
|
||||||
busybox to use the ifconfig busybox applet. Specifying the fully
|
busybox to use the ifconfig busybox applet. Specifying the fully
|
||||||
@@ -230,66 +278,43 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE_SHELL
|
|||||||
is generally used when creating a statically linked version of busybox
|
is generally used when creating a statically linked version of busybox
|
||||||
for use as a rescue shell, in the event that you screw up your system.
|
for use as a rescue shell, in the event that you screw up your system.
|
||||||
|
|
||||||
Note that this will *also* cause applets to take precedence
|
This is implemented by re-execing /proc/self/exe (typically)
|
||||||
over shell builtins of the same name. So turning this on will
|
with right parameters. Some selected applets ("NOFORK" applets)
|
||||||
eliminate any performance gained by turning on the builtin "echo"
|
can even be executed without creating new process.
|
||||||
and "test" commands in ash.
|
Instead, busybox will call <applet>_main() internally.
|
||||||
|
|
||||||
Note that when using this option, the shell will attempt to directly
|
However, this causes problems in chroot jails without mounted /proc
|
||||||
run '/bin/busybox'. If you do not have the busybox binary sitting in
|
and with ps/top (command name can be shown as 'exe' for applets
|
||||||
that exact location with that exact name, this option will not work at
|
started this way).
|
||||||
all.
|
# untrue?
|
||||||
|
# Note that this will *also* cause applets to take precedence
|
||||||
|
# over shell builtins of the same name. So turning this on will
|
||||||
|
# eliminate any performance gained by turning on the builtin "echo"
|
||||||
|
# and "test" commands in ash.
|
||||||
|
# untrue?
|
||||||
|
# Note that when using this option, the shell will attempt to directly
|
||||||
|
# run '/bin/busybox'. If you do not have the busybox binary sitting in
|
||||||
|
# that exact location with that exact name, this option will not work at
|
||||||
|
# all.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
config BUSYBOX_CONFIG_CTTYHACK
|
||||||
bool "Command line editing"
|
bool "cttyhack"
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
|
|
||||||
help
|
|
||||||
Enable command editing in shell.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING_VI
|
|
||||||
bool "vi-style line editing commands"
|
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
|
||||||
help
|
help
|
||||||
Enable vi-style line editing in the shell. This mode can be
|
One common problem reported on the mailing list is "can't access tty;
|
||||||
turned on and off with "set -o vi" and "set +o vi".
|
job control turned off" error message which typically appears when
|
||||||
|
one tries to use shell with stdin/stdout opened to /dev/console.
|
||||||
|
This device is special - it cannot be a controlling tty.
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_HISTORY
|
Proper solution is to use correct device instead of /dev/console.
|
||||||
int "History size"
|
|
||||||
range 0 99999
|
|
||||||
default 15
|
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
|
||||||
help
|
|
||||||
Specify command history size in shell.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_SAVEHISTORY
|
cttyhack provides "quick and dirty" solution to this problem.
|
||||||
bool "History saving"
|
It analyzes stdin with various ioctls, trying to determine whether
|
||||||
default n
|
it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
|
||||||
depends on BUSYBOX_CONFIG_ASH && BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
If it detects one, it closes stdin/out/err and reopens that device.
|
||||||
help
|
Then it executes given program. Usage example for /etc/inittab
|
||||||
Enable history saving in ash shell.
|
(for busybox init):
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_TAB_COMPLETION
|
::respawn:/bin/cttyhack /bin/sh
|
||||||
bool "Tab completion"
|
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
|
||||||
help
|
|
||||||
Enable tab completion in shell.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
|
|
||||||
bool "Username completion"
|
|
||||||
default n
|
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_COMMAND_TAB_COMPLETION
|
|
||||||
help
|
|
||||||
Enable username completion in shell.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_SH_FANCY_PROMPT
|
|
||||||
bool "Fancy shell prompts"
|
|
||||||
default y
|
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
|
|
||||||
help
|
|
||||||
Setting this option allows for prompts to use things like \w and
|
|
||||||
\$ and also using escape codes.
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
|
|||||||
config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
|
config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
|
||||||
int " Circular buffer size in Kbytes (minimum 4KB)"
|
int " Circular buffer size in Kbytes (minimum 4KB)"
|
||||||
default 16
|
default 16
|
||||||
|
range 4 2147483647
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
|
depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
|
||||||
help
|
help
|
||||||
This option sets the size of the circular buffer
|
This option sets the size of the circular buffer
|
||||||
@@ -88,8 +89,6 @@ config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
|
|||||||
config BUSYBOX_CONFIG_KLOGD
|
config BUSYBOX_CONFIG_KLOGD
|
||||||
bool "klogd"
|
bool "klogd"
|
||||||
default y
|
default y
|
||||||
depends on BUSYBOX_CONFIG_SYSLOGD
|
|
||||||
select BUSYBOX_CONFIG_FEATURE_SYSLOG
|
|
||||||
help
|
help
|
||||||
klogd is a utility which intercepts and logs all
|
klogd is a utility which intercepts and logs all
|
||||||
messages from the Linux kernel and sends the messages
|
messages from the Linux kernel and sends the messages
|
||||||
|
|||||||
@@ -269,46 +269,41 @@ config BUSYBOX_CONFIG_MDEV
|
|||||||
bool "mdev"
|
bool "mdev"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
mdev is a mini-udev implementation: call it with -s to populate
|
mdev is a mini-udev implementation for dynamically creating device
|
||||||
/dev from /sys, then "echo /sbin/mdev > /proc/sys/kernel/hotplug" to
|
nodes in the /dev directory.
|
||||||
have it handle hotplug events afterwards. Device names are taken
|
|
||||||
from sysfs.
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
|
config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
|
||||||
bool "Support /etc/mdev.conf"
|
bool "Support /etc/mdev.conf"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_MDEV
|
depends on BUSYBOX_CONFIG_MDEV
|
||||||
help
|
help
|
||||||
The mdev config file contains lines that look like:
|
Add support for the mdev config file to control ownership and
|
||||||
|
permissions of the device nodes.
|
||||||
|
|
||||||
hd[a-z][0-9]* 0:3 660
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
That's device name (with regex match), uid:gid, and permissions.
|
|
||||||
|
|
||||||
Config file parsing stops on the first matching line. If no config
|
|
||||||
entry is matched, devices are created with default 0:0 660. (Make
|
|
||||||
the last line match .* to override this.)
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
|
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
|
||||||
bool "Support command execution at device addition/removal"
|
bool "Support command execution at device addition/removal"
|
||||||
default n
|
default n
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
|
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
|
||||||
help
|
help
|
||||||
This adds support for an optional field to /etc/mdev.conf, consisting
|
This adds support for an optional field to /etc/mdev.conf for
|
||||||
of a special character and a command line to run after creating the
|
executing commands when devices are created/removed.
|
||||||
corresponding device(s) and before removing, ala:
|
|
||||||
|
|
||||||
hdc root:cdrom 660 *ln -s $MDEV cdrom
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
The $MDEV environment variable is set to the name of the device.
|
config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
|
||||||
|
bool "Support loading of firmwares"
|
||||||
|
default n
|
||||||
|
depends on BUSYBOX_CONFIG_MDEV
|
||||||
|
help
|
||||||
|
Some devices need to load firmware before they can be usable.
|
||||||
|
|
||||||
The special characters and their meanings are:
|
These devices will request userspace look up the files in
|
||||||
@ Run after creating the device.
|
/lib/firmware/ and if it exists, send it to the kernel for
|
||||||
$ Run before removing the device.
|
loading into the hardware.
|
||||||
* Run both after creating and before removing the device.
|
|
||||||
|
|
||||||
Commands are executed via system() so you need /bin/sh, meaning you
|
|
||||||
probably want to select a default shell in the Shells menu.
|
|
||||||
|
|
||||||
config BUSYBOX_CONFIG_MKSWAP
|
config BUSYBOX_CONFIG_MKSWAP
|
||||||
bool "mkswap"
|
bool "mkswap"
|
||||||
@@ -369,7 +364,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
|
|||||||
bool "Support mounting NFS file systems"
|
bool "Support mounting NFS file systems"
|
||||||
default y
|
default y
|
||||||
depends on BUSYBOX_CONFIG_MOUNT
|
depends on BUSYBOX_CONFIG_MOUNT
|
||||||
depends on BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
|
||||||
select BUSYBOX_CONFIG_FEATURE_SYSLOG
|
select BUSYBOX_CONFIG_FEATURE_SYSLOG
|
||||||
help
|
help
|
||||||
Enable mounting of NFS file systems.
|
Enable mounting of NFS file systems.
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
Index: busybox-1.4.2/applets/Kbuild
|
Index: busybox-1.7.2/applets/Kbuild
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/applets/Kbuild 2007-06-04 13:21:32.429046704 +0200
|
--- busybox-1.7.2.orig/applets/Kbuild 2007-10-04 14:30:23.484330073 +0200
|
||||||
+++ busybox-1.4.2/applets/Kbuild 2007-06-04 13:21:32.495036672 +0200
|
+++ busybox-1.7.2/applets/Kbuild 2007-10-04 14:33:47.751970627 +0200
|
||||||
@@ -10,6 +10,7 @@
|
@@ -20,6 +20,6 @@
|
||||||
|
HOSTCFLAGS_usage.o = -I$(srctree)/include
|
||||||
|
|
||||||
# Generated file needs additional love
|
|
||||||
|
|
||||||
+applets/usage: include/autoconf.h
|
|
||||||
applets/applets.o: include/usage_compressed.h
|
applets/applets.o: include/usage_compressed.h
|
||||||
|
-applets/usage: .config $(srctree)/applets/usage_compressed
|
||||||
hostprogs-y += usage
|
-include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed
|
||||||
|
+applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
|
||||||
|
+include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed include/autoconf.h
|
||||||
|
$(call cmd,gen_usage_compressed)
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
Index: busybox-1.4.2/networking/wget.c
|
Index: busybox-1.7.2/networking/wget.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/wget.c 2007-06-04 13:21:32.408049896 +0200
|
--- busybox-1.7.2.orig/networking/wget.c 2007-10-04 14:35:17.057059834 +0200
|
||||||
+++ busybox-1.4.2/networking/wget.c 2007-06-04 13:21:32.681008400 +0200
|
+++ busybox-1.7.2/networking/wget.c 2007-10-04 14:35:27.013627222 +0200
|
||||||
@@ -136,7 +136,7 @@
|
@@ -140,7 +140,7 @@
|
||||||
{ "directory-prefix", required_argument, NULL, 'P' },
|
"directory-prefix\0" Required_argument "P"
|
||||||
{ "proxy", required_argument, NULL, 'Y' },
|
"proxy\0" Required_argument "Y"
|
||||||
{ "user-agent", required_argument, NULL, 'U' },
|
"user-agent\0" Required_argument "U"
|
||||||
- { "passive-ftp", no_argument, NULL, 0xff },
|
- "passive-ftp\0" No_argument "\xff"
|
||||||
+ { "passive-ftp", no_argument, NULL, 0xfd },
|
+ "passive-ftp\0" No_argument "\xfd"
|
||||||
{ "header", required_argument, NULL, 0xfe },
|
"header\0" Required_argument "\xfe"
|
||||||
{ 0, 0, 0, 0 }
|
;
|
||||||
};
|
applet_long_options = wget_longopts;
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
Index: busybox-1.4.2/Makefile.flags
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/Makefile.flags 2007-06-04 13:21:32.387053088 +0200
|
|
||||||
+++ busybox-1.4.2/Makefile.flags 2007-06-04 13:21:32.871979368 +0200
|
|
||||||
@@ -16,7 +16,7 @@
|
|
||||||
-D"BB_VER=KBUILD_STR($(BB_VER))" -DBB_BT=AUTOCONF_TIMESTAMP
|
|
||||||
|
|
||||||
CFLAGS += \
|
|
||||||
- -Wall -Wstrict-prototypes -Wshadow -Werror -Wundef \
|
|
||||||
+ -Wall -Wstrict-prototypes -Wshadow -Wundef \
|
|
||||||
-funsigned-char -fno-builtin-strlen -finline-limit=0 -static-libgcc \
|
|
||||||
-Os -falign-functions=1 -falign-jumps=1 -falign-loops=1 \
|
|
||||||
-fomit-frame-pointer -ffunction-sections -fdata-sections
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
Index: busybox-1.4.2/networking/udhcp/dhcpc.c
|
Index: busybox-1.7.2/networking/udhcp/dhcpc.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/udhcp/dhcpc.c 2007-07-18 10:07:20.161035443 +0200
|
--- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-04 14:36:41.521873204 +0200
|
||||||
+++ busybox-1.4.2/networking/udhcp/dhcpc.c 2007-07-18 10:09:15.515609124 +0200
|
+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-04 14:38:28.231954268 +0200
|
||||||
@@ -273,6 +273,12 @@
|
@@ -309,6 +309,12 @@
|
||||||
tv.tv_sec = timeout - uptime();
|
jump_in:
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
|
|
||||||
+ /* When running on a bridge, the ifindex may have changed (e.g. if
|
+ /* When running on a bridge, the ifindex may have changed (e.g. if
|
||||||
@@ -12,6 +12,6 @@ Index: busybox-1.4.2/networking/udhcp/dhcpc.c
|
|||||||
+ * Workaround: refresh it here before processing the next packet */
|
+ * Workaround: refresh it here before processing the next packet */
|
||||||
+ read_interface(client_config.interface, &client_config.ifindex, NULL, client_config.arp);
|
+ read_interface(client_config.interface, &client_config.ifindex, NULL, client_config.arp);
|
||||||
+
|
+
|
||||||
if (listen_mode != LISTEN_NONE && fd < 0) {
|
if (listen_mode != LISTEN_NONE && sockfd < 0) {
|
||||||
if (listen_mode == LISTEN_KERNEL)
|
if (listen_mode == LISTEN_KERNEL)
|
||||||
fd = listen_socket(INADDR_ANY, CLIENT_PORT, client_config.interface);
|
sockfd = listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface);
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
Index: busybox-1.4.2/shell/ash.c
|
Index: busybox-1.7.2/shell/ash.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/shell/ash.c 2007-06-04 13:21:32.248074216 +0200
|
--- busybox-1.7.2.orig/shell/ash.c 2007-09-03 13:48:38.000000000 +0200
|
||||||
+++ busybox-1.4.2/shell/ash.c 2007-06-04 13:21:34.000807760 +0200
|
+++ busybox-1.7.2/shell/ash.c 2007-10-04 14:47:41.607489342 +0200
|
||||||
@@ -12237,9 +12237,18 @@
|
@@ -11310,8 +11310,18 @@
|
||||||
const char *p;
|
const char *p;
|
||||||
char **aptr;
|
char **aptr;
|
||||||
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
|
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
|
||||||
+ int mask = ~0;
|
+ int mask = ~0;
|
||||||
int notp;
|
+ int nopt;
|
||||||
|
|
||||||
- notp = nextopt("p") - 'p';
|
- if (nextopt("p") != 'p') {
|
||||||
+ while ((notp = nextopt("np"))) {
|
+ while ((nopt = nextopt("np"))) {
|
||||||
+ if (notp == 'n') {
|
+ if (nopt == 'n') {
|
||||||
+ mask = ~flag;
|
+ mask = ~flag;
|
||||||
+ } else { /* p */
|
+ } else { /* p */
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ notp -= 'p';
|
+ if (nopt != 'p') {
|
||||||
if (notp && ((name = *(aptr = argptr)))) {
|
aptr = argptr;
|
||||||
do {
|
name = *aptr;
|
||||||
if ((p = strchr(name, '=')) != NULL) {
|
if (name) {
|
||||||
@@ -12247,10 +12256,11 @@
|
@@ -11323,10 +11333,11 @@
|
||||||
} else {
|
vp = *findvar(hashvar(name), name);
|
||||||
if ((vp = *findvar(hashvar(name), name))) {
|
if (vp) {
|
||||||
vp->flags |= flag;
|
vp->flags |= flag;
|
||||||
+ vp->flags &= mask;
|
+ vp->flags &= mask;
|
||||||
continue;
|
continue;
|
||||||
@@ -33,5 +33,5 @@ Index: busybox-1.4.2/shell/ash.c
|
|||||||
- setvar(name, p, flag);
|
- setvar(name, p, flag);
|
||||||
+ setvar(name, p, flag & mask);
|
+ setvar(name, p, flag & mask);
|
||||||
} while ((name = *++aptr) != NULL);
|
} while ((name = *++aptr) != NULL);
|
||||||
} else {
|
return 0;
|
||||||
showvars(argv[0], flag, 0);
|
}
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
Index: busybox-1.4.2/networking/ifconfig.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/networking/ifconfig.c 2007-06-29 02:03:17.046772952 +0200
|
|
||||||
+++ busybox-1.4.2/networking/ifconfig.c 2007-06-29 02:03:49.938772608 +0200
|
|
||||||
@@ -376,18 +376,18 @@
|
|
||||||
#endif
|
|
||||||
sai.sin_family = AF_INET;
|
|
||||||
sai.sin_port = 0;
|
|
||||||
- if (!strcmp(host, bb_str_default)) {
|
|
||||||
- /* Default is special, meaning 0.0.0.0. */
|
|
||||||
- sai.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
- }
|
|
||||||
#if ENABLE_FEATURE_IFCONFIG_BROADCAST_PLUS
|
|
||||||
- else if ((host[0] == '+' && !host[1]) && (mask & A_BROADCAST)
|
|
||||||
+ if ((host[0] == '+' && !host[1]) && (mask & A_BROADCAST)
|
|
||||||
&& (did_flags & (A_NETMASK|A_HOSTNAME)) == (A_NETMASK|A_HOSTNAME)
|
|
||||||
) {
|
|
||||||
/* + is special, meaning broadcast is derived. */
|
|
||||||
sai.sin_addr.s_addr = (~sai_netmask) | (sai_hostname & sai_netmask);
|
|
||||||
- }
|
|
||||||
+ } else
|
|
||||||
#endif
|
|
||||||
+ if (!strcmp(host, bb_str_default)) {
|
|
||||||
+ /* Default is special, meaning 0.0.0.0. */
|
|
||||||
+ sai.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
+ }
|
|
||||||
#if ENABLE_FEATURE_IPV6
|
|
||||||
else if (inet_pton(AF_INET6, host, &sai6.sin6_addr) > 0) {
|
|
||||||
int sockfd6;
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
Index: busybox-1.4.2/shell/ash.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/shell/ash.c 2007-07-01 05:33:08.371737750 +0200
|
|
||||||
+++ busybox-1.4.2/shell/ash.c 2007-07-01 05:33:11.703946000 +0200
|
|
||||||
@@ -3957,12 +3957,6 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- if (is_safe_applet(name)) {
|
|
||||||
- entry->cmdtype = CMDNORMAL;
|
|
||||||
- entry->u.index = -1;
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
updatetbl = (path == pathval());
|
|
||||||
if (!updatetbl) {
|
|
||||||
act |= DO_ALTPATH;
|
|
||||||
@@ -4074,6 +4068,12 @@
|
|
||||||
goto success;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (is_safe_applet(name)) {
|
|
||||||
+ entry->cmdtype = CMDNORMAL;
|
|
||||||
+ entry->u.index = -1;
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* We failed. If there was an entry for this command, delete it */
|
|
||||||
if (cmdp && updatetbl)
|
|
||||||
delete_cmd_entry();
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
Index: busybox-1.4.2/coreutils/printf.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/coreutils/printf.c 2007-07-09 03:00:31.808788500 +0200
|
|
||||||
+++ busybox-1.4.2/coreutils/printf.c 2007-07-09 03:00:42.257441500 +0200
|
|
||||||
@@ -60,11 +60,11 @@
|
|
||||||
|
|
||||||
static void conv_strtoul(char *arg, void *result)
|
|
||||||
{
|
|
||||||
- *(unsigned long*)result = bb_strtoul(arg, NULL, 10);
|
|
||||||
+ *(unsigned long*)result = bb_strtoul(arg, NULL, 0);
|
|
||||||
}
|
|
||||||
static void conv_strtol(char *arg, void *result)
|
|
||||||
{
|
|
||||||
- *(long*)result = bb_strtol(arg, NULL, 10);
|
|
||||||
+ *(long*)result = bb_strtol(arg, NULL, 0);
|
|
||||||
}
|
|
||||||
static void conv_strtod(char *arg, void *result)
|
|
||||||
{
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
Copyright (C) 2006 OpenWrt.org
|
Copyright (C) 2006 OpenWrt.org
|
||||||
|
|
||||||
Index: busybox-1.4.2/networking/httpd.c
|
Index: busybox-1.7.2/networking/httpd.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:32.190083032 +0200
|
--- busybox-1.7.2.orig/networking/httpd.c 2007-09-30 01:54:12.000000000 +0200
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:34.401746808 +0200
|
+++ busybox-1.7.2/networking/httpd.c 2007-10-04 14:59:20.287304836 +0200
|
||||||
@@ -1402,12 +1402,26 @@
|
@@ -1527,12 +1527,26 @@
|
||||||
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
|
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
|
||||||
char *cipher;
|
char *cipher;
|
||||||
char *pp;
|
char *pp;
|
||||||
@@ -13,7 +13,7 @@ Index: busybox-1.4.2/networking/httpd.c
|
|||||||
+ struct passwd *pwd = NULL;
|
+ struct passwd *pwd = NULL;
|
||||||
|
|
||||||
if (strncmp(p, request, u - request) != 0) {
|
if (strncmp(p, request, u - request) != 0) {
|
||||||
/* user uncompared */
|
/* user doesn't match */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
pp = strchr(p, ':');
|
pp = strchr(p, ':');
|
||||||
@@ -29,10 +29,10 @@ Index: busybox-1.4.2/networking/httpd.c
|
|||||||
+ strcpy(ppnew + 1, pwd->pw_passwd);
|
+ strcpy(ppnew + 1, pwd->pw_passwd);
|
||||||
+ pp = ppnew;
|
+ pp = ppnew;
|
||||||
+ }
|
+ }
|
||||||
if (pp && pp[1] == '$' && pp[2] == '1' &&
|
if (pp && pp[1] == '$' && pp[2] == '1'
|
||||||
pp[3] == '$' && pp[4]) {
|
&& pp[3] == '$' && pp[4]
|
||||||
pp++;
|
) {
|
||||||
@@ -1417,6 +1431,10 @@
|
@@ -1543,6 +1557,10 @@
|
||||||
/* unauthorized */
|
/* unauthorized */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
Index: busybox-1.4.2/networking/httpd.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:34.401746808 +0200
|
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:34.588718384 +0200
|
|
||||||
@@ -137,6 +137,7 @@
|
|
||||||
const char *query;
|
|
||||||
|
|
||||||
USE_FEATURE_HTTPD_CGI(char *referer;)
|
|
||||||
+ USE_FEATURE_HTTPD_CGI(char *user_agent;)
|
|
||||||
|
|
||||||
const char *configFile;
|
|
||||||
|
|
||||||
@@ -1066,6 +1067,7 @@
|
|
||||||
if (cp) *cp = '\0'; /* delete :PORT */
|
|
||||||
setenv1("REMOTE_ADDR", p);
|
|
||||||
}
|
|
||||||
+ setenv1("HTTP_USER_AGENT", config->user_agent);
|
|
||||||
#if ENABLE_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
|
|
||||||
setenv_long("REMOTE_PORT", config->port);
|
|
||||||
#endif
|
|
||||||
@@ -1647,6 +1649,8 @@
|
|
||||||
content_type = strdup(skip_whitespace(buf + sizeof("Content-Type:")-1));
|
|
||||||
} else if ((STRNCASECMP(buf, "Referer:") == 0)) {
|
|
||||||
config->referer = strdup(skip_whitespace(buf + sizeof("Referer:")-1));
|
|
||||||
+ } else if ((STRNCASECMP(buf, "User-Agent:") == 0)) {
|
|
||||||
+ config->user_agent = strdup(skip_whitespace(buf + sizeof("User-Agent:")-1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,69 +1,76 @@
|
|||||||
Index: busybox-1.4.2/include/usage.h
|
Index: busybox-1.7.2/include/usage.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/include/usage.h 2007-06-04 13:21:32.103096256 +0200
|
--- busybox-1.7.2.orig/include/usage.h 2007-10-04 17:12:35.230910708 +0200
|
||||||
+++ busybox-1.4.2/include/usage.h 2007-06-04 13:21:35.005655000 +0200
|
+++ busybox-1.7.2/include/usage.h 2007-10-04 17:32:12.994027602 +0200
|
||||||
@@ -1257,7 +1257,8 @@
|
@@ -1350,7 +1350,8 @@
|
||||||
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r <realm>]") \
|
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
|
||||||
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
|
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
|
||||||
" [-h home]" \
|
" [-h home]" \
|
||||||
- " [-d/-e <string>]"
|
- " [-d/-e string]"
|
||||||
+ " [-d/-e <string>]" \
|
+ " [-d/-e string]" \
|
||||||
+ " [-R <path> [-H <host>]]"
|
+ " [-R <path> [-H <host>]]"
|
||||||
#define httpd_full_usage \
|
#define httpd_full_usage \
|
||||||
"Listen for incoming http server requests" \
|
"Listen for incoming HTTP requests" \
|
||||||
"\n\nOptions:\n" \
|
"\n\nOptions:" \
|
||||||
@@ -1273,7 +1274,9 @@
|
@@ -1368,6 +1369,8 @@
|
||||||
" -m PASS Crypt PASS with md5 algorithm\n") \
|
"\n -h HOME Home directory (default .)" \
|
||||||
" -h HOME Specifies http HOME directory (default ./)\n" \
|
"\n -e STRING HTML encode STRING" \
|
||||||
" -e STRING HTML encode STRING\n" \
|
"\n -d STRING URL decode STRING" \
|
||||||
- " -d STRING URL decode STRING"
|
+ "\n -R PATH Redirect target path" \
|
||||||
+ " -d STRING URL decode STRING\n" \
|
+ "\n -H HOST Redirect target host" \
|
||||||
+ " -R PATH Redirect target path\n" \
|
|
||||||
+ " -H HOST Redirect target host"
|
|
||||||
|
|
||||||
#define hwclock_trivial_usage \
|
#define hwclock_trivial_usage \
|
||||||
"[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
|
"[-r|--show] [-s|--hctosys] [-w|--systohc]" \
|
||||||
Index: busybox-1.4.2/networking/httpd.c
|
Index: busybox-1.7.2/networking/httpd.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:34.588718384 +0200
|
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-04 17:13:12.509035065 +0200
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:35.006654848 +0200
|
+++ busybox-1.7.2/networking/httpd.c 2007-10-04 17:32:33.711208213 +0200
|
||||||
@@ -140,6 +140,8 @@
|
@@ -230,6 +230,8 @@
|
||||||
USE_FEATURE_HTTPD_CGI(char *user_agent;)
|
|
||||||
|
|
||||||
const char *configFile;
|
const char *found_mime_type;
|
||||||
+ const char *redirectPath;
|
const char *found_moved_temporarily;
|
||||||
+ const char *redirectHost;
|
+ const char *redirect_path;
|
||||||
|
+ const char *redirect_host;
|
||||||
|
Htaccess_IP *ip_a_d; /* config allow/deny lines */
|
||||||
|
|
||||||
unsigned int rmt_ip;
|
USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
|
||||||
#if ENABLE_FEATURE_HTTPD_CGI || DEBUG
|
@@ -264,6 +266,8 @@
|
||||||
@@ -880,8 +882,11 @@
|
#define home_httpd (G.home_httpd )
|
||||||
|
#define found_mime_type (G.found_mime_type )
|
||||||
|
#define found_moved_temporarily (G.found_moved_temporarily)
|
||||||
|
+#define redirect_path (G.redirect_path )
|
||||||
|
+#define redirect_host (G.redirect_host )
|
||||||
|
#define ContentLength (G.ContentLength )
|
||||||
|
#define last_mod (G.last_mod )
|
||||||
|
#define ip_a_d (G.ip_a_d )
|
||||||
|
@@ -901,8 +905,11 @@
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (responseNum == HTTP_MOVED_TEMPORARILY) {
|
if (responseNum == HTTP_MOVED_TEMPORARILY) {
|
||||||
- len += sprintf(buf+len, "Location: %s/%s%s\r\n",
|
- len += sprintf(iobuf + len, "Location: %s/%s%s\r\n",
|
||||||
+ len += sprintf(buf+len, "Location: %s%s%s%s%s%s\r\n",
|
+ len += sprintf(iobuf + len, "Location: %s%s%s%s%s%s\r\n",
|
||||||
+ (config->redirectHost ? "http://" : ""),
|
+ (redirect_host ? "http://" : ""),
|
||||||
+ (config->redirectHost ? config->redirectHost : ""),
|
+ (redirect_host ? redirect_host : ""),
|
||||||
config->found_moved_temporarily,
|
found_moved_temporarily,
|
||||||
+ (config->redirectHost ? "" : "/"),
|
+ (redirect_host ? "" : "/"),
|
||||||
(config->query ? "?" : ""),
|
(g_query ? "?" : ""),
|
||||||
(config->query ? config->query : ""));
|
(g_query ? g_query : ""));
|
||||||
}
|
}
|
||||||
@@ -1594,8 +1599,12 @@
|
@@ -1730,8 +1737,12 @@
|
||||||
*++purl = '\0'; /* so keep last character */
|
*++urlp = '\0'; /* so keep last character */
|
||||||
test = purl; /* end ptr */
|
tptr = urlp; /* end ptr */
|
||||||
|
|
||||||
+ /* redirect active */
|
+ /* redirect active */
|
||||||
+ if (config->redirectPath && (strncmp(url, config->redirectPath, strlen(config->redirectPath)) != 0))
|
+ if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0))
|
||||||
+ config->found_moved_temporarily = config->redirectPath;
|
+ found_moved_temporarily = redirect_path;
|
||||||
+
|
+
|
||||||
/* If URL is directory, adding '/' */
|
/* If URL is a directory, add '/' */
|
||||||
- if (test[-1] != '/') {
|
- if (tptr[-1] != '/') {
|
||||||
+ if(!config->redirectPath && (test[-1] != '/')) {
|
+ if (!redirect_path && (tptr[-1] != '/')) {
|
||||||
if (is_directory(url + 1, 1, &sb)) {
|
if (is_directory(urlcopy + 1, 1, &sb)) {
|
||||||
config->found_moved_temporarily = url;
|
found_moved_temporarily = urlcopy;
|
||||||
}
|
}
|
||||||
@@ -1897,7 +1906,9 @@
|
@@ -2004,7 +2015,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -74,20 +81,18 @@ Index: busybox-1.4.2/networking/httpd.c
|
|||||||
d_opt_decode_url,
|
d_opt_decode_url,
|
||||||
h_opt_home_httpd,
|
h_opt_home_httpd,
|
||||||
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
|
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
|
||||||
@@ -1919,7 +1930,7 @@
|
@@ -2053,12 +2066,13 @@
|
||||||
OPT_FOREGROUND = 1 << p_opt_foreground,
|
/* We do not "absolutize" path given by -h (home) opt.
|
||||||
};
|
* If user gives relative path in -h, $SCRIPT_FILENAME can end up
|
||||||
|
* relative too. */
|
||||||
-static const char httpd_opts[] = "c:d:h:"
|
- opt = getopt32(argv, "c:d:h:"
|
||||||
+static const char httpd_opts[] = "R:H:c:d:h:"
|
+ opt = getopt32(argv, "R:H:c:d:h:"
|
||||||
USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
|
USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
|
||||||
USE_FEATURE_HTTPD_BASIC_AUTH("r:")
|
USE_FEATURE_HTTPD_BASIC_AUTH("r:")
|
||||||
USE_FEATURE_HTTPD_AUTH_MD5("m:")
|
USE_FEATURE_HTTPD_AUTH_MD5("m:")
|
||||||
@@ -1951,6 +1962,7 @@
|
USE_FEATURE_HTTPD_SETUID("u:")
|
||||||
config->ContentLength = -1;
|
"p:ifv",
|
||||||
|
+ &redirect_path, &redirect_host,
|
||||||
opt = getopt32(argc, argv, httpd_opts,
|
&configFile, &url_for_decode, &home_httpd
|
||||||
+ &(config->redirectPath), &(config->redirectHost),
|
|
||||||
&(config->configFile), &url_for_decode, &home_httpd
|
|
||||||
USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
|
USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
|
||||||
USE_FEATURE_HTTPD_BASIC_AUTH(, &(config->realm))
|
USE_FEATURE_HTTPD_BASIC_AUTH(, &g_realm)
|
||||||
|
|||||||
72
package/busybox/patches/360-awk_multi_f.patch
Normal file
72
package/busybox/patches/360-awk_multi_f.patch
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
Index: busybox-1.7.2/editors/awk.c
|
||||||
|
===================================================================
|
||||||
|
--- busybox-1.7.2.orig/editors/awk.c 2007-10-04 19:57:46.859742242 +0200
|
||||||
|
+++ busybox-1.7.2/editors/awk.c 2007-10-05 02:20:02.910793305 +0200
|
||||||
|
@@ -2757,6 +2757,7 @@
|
||||||
|
{
|
||||||
|
unsigned opt;
|
||||||
|
char *opt_F, *opt_W;
|
||||||
|
+ llist_t *opt_f = NULL;
|
||||||
|
llist_t *opt_v = NULL;
|
||||||
|
int i, j, flen;
|
||||||
|
var *v;
|
||||||
|
@@ -2816,8 +2817,8 @@
|
||||||
|
*s1 = '=';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- opt_complementary = "v::";
|
||||||
|
- opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &g_progname, &opt_W);
|
||||||
|
+ opt_complementary = "v::f::";
|
||||||
|
+ opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
|
||||||
|
argv += optind;
|
||||||
|
argc -= optind;
|
||||||
|
if (opt & 0x1)
|
||||||
|
@@ -2826,25 +2827,31 @@
|
||||||
|
if (!is_assignment(llist_pop(&opt_v)))
|
||||||
|
bb_show_usage();
|
||||||
|
}
|
||||||
|
- if (opt & 0x4) { // -f
|
||||||
|
- char *s = s; /* die, gcc, die */
|
||||||
|
- FILE *from_file = afopen(g_progname, "r");
|
||||||
|
- /* one byte is reserved for some trick in next_token */
|
||||||
|
- if (fseek(from_file, 0, SEEK_END) == 0) {
|
||||||
|
- flen = ftell(from_file);
|
||||||
|
- s = xmalloc(flen + 4);
|
||||||
|
- fseek(from_file, 0, SEEK_SET);
|
||||||
|
- i = 1 + fread(s + 1, 1, flen, from_file);
|
||||||
|
- } else {
|
||||||
|
- for (i = j = 1; j > 0; i += j) {
|
||||||
|
- s = xrealloc(s, i + 4096);
|
||||||
|
- j = fread(s + i, 1, 4094, from_file);
|
||||||
|
+ if (opt_f != NULL) { // -f
|
||||||
|
+ while (opt_f != NULL) {
|
||||||
|
+ char *s = NULL;
|
||||||
|
+ FILE *from_file;
|
||||||
|
+
|
||||||
|
+ g_progname = opt_f->data;
|
||||||
|
+ from_file = afopen(g_progname, "r");
|
||||||
|
+ /* one byte is reserved for some trick in next_token */
|
||||||
|
+ if (fseek(from_file, 0, SEEK_END) == 0) {
|
||||||
|
+ flen = ftell(from_file);
|
||||||
|
+ s = xmalloc(flen + 4);
|
||||||
|
+ fseek(from_file, 0, SEEK_SET);
|
||||||
|
+ i = 1 + fread(s + 1, 1, flen, from_file);
|
||||||
|
+ } else {
|
||||||
|
+ for (i = j = 1; j > 0; i += j) {
|
||||||
|
+ s = xrealloc(s, i + 4096);
|
||||||
|
+ j = fread(s + i, 1, 4094, from_file);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
+ s[i] = '\0';
|
||||||
|
+ fclose(from_file);
|
||||||
|
+ parse_program(s + 1);
|
||||||
|
+ free(s);
|
||||||
|
+ opt_f = opt_f->link;
|
||||||
|
}
|
||||||
|
- s[i] = '\0';
|
||||||
|
- fclose(from_file);
|
||||||
|
- parse_program(s + 1);
|
||||||
|
- free(s);
|
||||||
|
} else { // no -f: take program from 1st parameter
|
||||||
|
if (!argc)
|
||||||
|
bb_show_usage();
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
Index: busybox-1.4.2/editors/awk.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/editors/awk.c 2007-06-15 23:43:26.460690280 +0200
|
|
||||||
+++ busybox-1.4.2/editors/awk.c 2007-06-15 23:45:26.283474448 +0200
|
|
||||||
@@ -2639,14 +2639,13 @@
|
|
||||||
|
|
||||||
int awk_main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
- unsigned opt;
|
|
||||||
- char *opt_F, *opt_v, *opt_W;
|
|
||||||
int i, j, flen;
|
|
||||||
var *v;
|
|
||||||
var tv;
|
|
||||||
char **envp;
|
|
||||||
char *vnames = (char *)vNames; /* cheat */
|
|
||||||
char *vvalues = (char *)vValues;
|
|
||||||
+ int c;
|
|
||||||
|
|
||||||
/* Undo busybox.c, or else strtod may eat ','! This breaks parsing:
|
|
||||||
* $1,$2 == '$1,' '$2', NOT '$1' ',' '$2' */
|
|
||||||
@@ -2694,40 +2693,56 @@
|
|
||||||
free(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
- opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W);
|
|
||||||
- argv += optind;
|
|
||||||
- argc -= optind;
|
|
||||||
- if (opt & 0x1) setvar_s(V[FS], opt_F); // -F
|
|
||||||
- if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v
|
|
||||||
- if (opt & 0x4) { // -f
|
|
||||||
- char *s = s; /* die, gcc, die */
|
|
||||||
- FILE *from_file = afopen(programname, "r");
|
|
||||||
- /* one byte is reserved for some trick in next_token */
|
|
||||||
- if (fseek(from_file, 0, SEEK_END) == 0) {
|
|
||||||
- flen = ftell(from_file);
|
|
||||||
- s = xmalloc(flen + 4);
|
|
||||||
- fseek(from_file, 0, SEEK_SET);
|
|
||||||
- i = 1 + fread(s + 1, 1, flen, from_file);
|
|
||||||
- } else {
|
|
||||||
- for (i = j = 1; j > 0; i += j) {
|
|
||||||
- s = xrealloc(s, i + 4096);
|
|
||||||
- j = fread(s + i, 1, 4094, from_file);
|
|
||||||
+ programname = NULL;
|
|
||||||
+ while((c = getopt(argc, argv, "F:v:f:W:")) != EOF) {
|
|
||||||
+ switch (c) {
|
|
||||||
+ case 'F':
|
|
||||||
+ setvar_s(V[FS], optarg);
|
|
||||||
+ break;
|
|
||||||
+ case 'v':
|
|
||||||
+ if (! is_assignment(optarg))
|
|
||||||
+ bb_show_usage();
|
|
||||||
+ break;
|
|
||||||
+ case 'f': {
|
|
||||||
+ FILE *F = afopen(programname = optarg, "r");
|
|
||||||
+ char *s = NULL;
|
|
||||||
+ /* one byte is reserved for some trick in next_token */
|
|
||||||
+ if (fseek(F, 0, SEEK_END) == 0) {
|
|
||||||
+ flen = ftell(F);
|
|
||||||
+ s = (char *)xmalloc(flen+4);
|
|
||||||
+ fseek(F, 0, SEEK_SET);
|
|
||||||
+ i = 1 + fread(s+1, 1, flen, F);
|
|
||||||
+ } else {
|
|
||||||
+ for (i=j=1; j>0; i+=j) {
|
|
||||||
+ s = (char *)xrealloc(s, i+4096);
|
|
||||||
+ j = fread(s+i, 1, 4094, F);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ s[i] = '\0';
|
|
||||||
+ fclose(F);
|
|
||||||
+ parse_program(s+1);
|
|
||||||
+ free(s);
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
+ case 'W':
|
|
||||||
+ bb_error_msg("Warning: unrecognized option '-W %s' ignored\n", optarg);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ bb_show_usage();
|
|
||||||
}
|
|
||||||
- s[i] = '\0';
|
|
||||||
- fclose(from_file);
|
|
||||||
- parse_program(s + 1);
|
|
||||||
- free(s);
|
|
||||||
- } else { // no -f: take program from 1st parameter
|
|
||||||
+ }
|
|
||||||
+ argc -= optind;
|
|
||||||
+ argv += optind;
|
|
||||||
+
|
|
||||||
+ if (!programname) {
|
|
||||||
if (!argc)
|
|
||||||
bb_show_usage();
|
|
||||||
programname = "cmd. line";
|
|
||||||
parse_program(*argv++);
|
|
||||||
argc--;
|
|
||||||
}
|
|
||||||
- if (opt & 0x8) // -W
|
|
||||||
- bb_error_msg("warning: unrecognized option '-W %s' ignored", opt_W);
|
|
||||||
-
|
|
||||||
+
|
|
||||||
/* fill in ARGV array */
|
|
||||||
setvar_i(V[ARGC], argc + 1);
|
|
||||||
setari_u(V[ARGV], 0, "awk");
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
Index: busybox-1.4.2/include/platform.h
|
Index: busybox-1.7.2/include/platform.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/include/platform.h 2007-06-04 13:21:32.055103552 +0200
|
--- busybox-1.7.2.orig/include/platform.h 2007-09-03 13:48:46.000000000 +0200
|
||||||
+++ busybox-1.4.2/include/platform.h 2007-06-04 13:21:35.387596936 +0200
|
+++ busybox-1.7.2/include/platform.h 2007-10-04 15:20:58.301274440 +0200
|
||||||
@@ -128,9 +128,11 @@
|
@@ -137,9 +137,11 @@
|
||||||
# include <netinet/in.h>
|
# include <netinet/in.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -14,30 +14,20 @@ Index: busybox-1.4.2/include/platform.h
|
|||||||
|
|
||||||
/* ---- Compiler dependent settings ------------------------- */
|
/* ---- Compiler dependent settings ------------------------- */
|
||||||
#if (defined __digital__ && defined __unix__)
|
#if (defined __digital__ && defined __unix__)
|
||||||
@@ -161,7 +163,7 @@
|
@@ -179,7 +181,7 @@
|
||||||
#define HAVE_STDINT_H
|
#define HAVE_STDINT_H
|
||||||
#else
|
#else
|
||||||
/* Largest integral types. */
|
/* Largest integral types. */
|
||||||
-#if __BIG_ENDIAN__
|
-#if __BIG_ENDIAN__
|
||||||
+#if __BIG_ENDIAN__ && !__APPLE__
|
+#if __BIG_ENDIAN__ && !__APPLE__
|
||||||
typedef long int intmax_t;
|
typedef long intmax_t;
|
||||||
typedef unsigned long int uintmax_t;
|
typedef unsigned long uintmax_t;
|
||||||
#else
|
#else
|
||||||
Index: busybox-1.4.2/include/libbb.h
|
Index: busybox-1.7.2/include/libbb.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/include/libbb.h 2007-06-04 13:21:32.062102488 +0200
|
--- busybox-1.7.2.orig/include/libbb.h 2007-09-16 20:48:10.000000000 +0200
|
||||||
+++ busybox-1.4.2/include/libbb.h 2007-06-04 13:21:35.388596784 +0200
|
+++ busybox-1.7.2/include/libbb.h 2007-10-04 15:20:22.275221430 +0200
|
||||||
@@ -17,7 +17,9 @@
|
@@ -31,7 +31,9 @@
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <inttypes.h>
|
|
||||||
+#ifndef __APPLE__
|
|
||||||
#include <malloc.h>
|
|
||||||
+#endif
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <setjmp.h>
|
|
||||||
#include <signal.h>
|
|
||||||
@@ -30,7 +32,9 @@
|
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|||||||
@@ -1,26 +1,18 @@
|
|||||||
Index: busybox-1.4.2/networking/httpd.c
|
Index: busybox-1.7.2/networking/httpd.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:35.006654848 +0200
|
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-04 15:06:51.993046080 +0200
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:35.585566840 +0200
|
+++ busybox-1.7.2/networking/httpd.c 2007-10-04 15:25:10.815664410 +0200
|
||||||
@@ -1231,7 +1231,7 @@
|
@@ -1314,10 +1314,10 @@
|
||||||
* "chopped up into small chunks" syndrome here */
|
if (full_write(1, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
|
||||||
rbuf[count] = '\0';
|
break;
|
||||||
/* check to see if the user script added headers */
|
|
||||||
-#define HTTP_200 "HTTP/1.0 200 OK\r\n\r\n"
|
|
||||||
+#define HTTP_200 "HTTP/1.0 200 OK\r\n"
|
|
||||||
if (memcmp(rbuf, HTTP_200, 4) != 0) {
|
|
||||||
/* there is no "HTTP", do it ourself */
|
|
||||||
full_write(s, HTTP_200, sizeof(HTTP_200)-1);
|
|
||||||
@@ -1242,9 +1242,9 @@
|
|
||||||
* echo -en "Location: http://www.busybox.net\r\n"
|
|
||||||
* echo -en "\r\n"
|
|
||||||
*/
|
|
||||||
- //if (!strstr(rbuf, "ontent-")) {
|
|
||||||
- // full_write(s, "Content-type: text/plain\r\n\r\n", 28);
|
|
||||||
- //}
|
|
||||||
+ if (!strstr(rbuf, "ontent-")) {
|
|
||||||
+ full_write(s, "Content-type: text/plain\r\n\r\n", 28);
|
|
||||||
+ }
|
|
||||||
firstLine = 0;
|
|
||||||
}
|
}
|
||||||
if (full_write(s, rbuf, count) != count)
|
- /* Commented out:
|
||||||
|
- if (!strstr(rbuf, "ontent-")) {
|
||||||
|
- full_write(s, "Content-type: text/plain\r\n\r\n", 28);
|
||||||
|
+ if (!strstr(rbuf, "ontent-") && !strstr(rbuf, "ocation:")) {
|
||||||
|
+ full_write(1, "Content-type: text/plain\r\n\r\n", 28);
|
||||||
|
}
|
||||||
|
+ /* Previously commented out:
|
||||||
|
* Counter-example of valid CGI without Content-type:
|
||||||
|
* echo -en "HTTP/1.0 302 Found\r\n"
|
||||||
|
* echo -en "Location: http://www.busybox.net\r\n"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
Index: busybox-1.4.2/networking/httpd.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:35.585566840 +0200
|
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:35.775537960 +0200
|
|
||||||
@@ -1218,9 +1218,10 @@
|
|
||||||
#if PIPESIZE >= MAX_MEMORY_BUFF
|
|
||||||
# error "PIPESIZE >= MAX_MEMORY_BUFF"
|
|
||||||
#endif
|
|
||||||
- /* NB: was safe_read. If it *has to be* safe_read, */
|
|
||||||
- /* please explain why in this comment... */
|
|
||||||
- count = full_read(inFd, rbuf, PIPESIZE);
|
|
||||||
+ /* reverted back to safe_read, otherwise httpd may block if the */
|
|
||||||
+ /* cgi-script outputs page date before it has fully received all */
|
|
||||||
+ /* (eg POST) data */
|
|
||||||
+ count = safe_read(inFd, rbuf, PIPESIZE);
|
|
||||||
if (count == 0)
|
|
||||||
break; /* closed */
|
|
||||||
if (count < 0)
|
|
||||||
@@ -1,29 +1,12 @@
|
|||||||
Index: busybox-1.4.2/networking/httpd.c
|
Index: busybox-1.7.2/networking/httpd.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-04 13:21:35.775537960 +0200
|
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-04 15:25:10.815664410 +0200
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-04 13:21:36.144481872 +0200
|
+++ busybox-1.7.2/networking/httpd.c 2007-10-04 15:31:22.936870392 +0200
|
||||||
@@ -102,6 +102,7 @@
|
@@ -1616,6 +1616,7 @@
|
||||||
static const char default_path_httpd_conf[] = "/etc";
|
|
||||||
static const char httpd_conf[] = "httpd.conf";
|
|
||||||
static const char home[] = "./";
|
|
||||||
+static const char *home_httpd = home;
|
|
||||||
|
|
||||||
#define TIMEOUT 60
|
|
||||||
|
|
||||||
@@ -1505,6 +1506,8 @@
|
|
||||||
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
|
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
|
||||||
int credentials = -1; /* if not required this is Ok */
|
int credentials = -1; /* if not required this is Ok */
|
||||||
#endif
|
#endif
|
||||||
+
|
|
||||||
+ xchdir(home_httpd);
|
+ xchdir(home_httpd);
|
||||||
|
|
||||||
sa.sa_handler = handle_sigalrm;
|
/* Allocation of iobuf is postponed until now
|
||||||
sigemptyset(&sa.sa_mask);
|
* (IOW, server process doesn't need to waste 8k) */
|
||||||
@@ -1942,7 +1945,6 @@
|
|
||||||
int httpd_main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
unsigned opt;
|
|
||||||
- const char *home_httpd = home;
|
|
||||||
char *url_for_decode;
|
|
||||||
USE_FEATURE_HTTPD_ENCODE_URL_STR(const char *url_for_encode;)
|
|
||||||
const char *s_port;
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
Index: busybox-1.4.2/applets/usage_compressed
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/applets/usage_compressed 2007-06-04 13:21:31.952119208 +0200
|
|
||||||
+++ busybox-1.4.2/applets/usage_compressed 2007-06-04 13:21:36.331453448 +0200
|
|
||||||
@@ -14,6 +14,6 @@
|
|
||||||
|
|
||||||
echo 'static const char packed_usage[] = '
|
|
||||||
"$loc/usage" | bzip2 -1 | od -v -t x1 \
|
|
||||||
-| $SED -e 's/^[^ ]*//' -e 's/ \(..\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
|
|
||||||
+| $SED -e 's/^[^ ]*//' -e 's/ \([a-f0-9][a-f0-9]\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
|
|
||||||
echo ';'
|
|
||||||
echo '#define SIZEOF_usage_messages' `expr 0 + $sz`
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
Index: busybox-1.4.2/networking/ping.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/networking/ping.c 2007-06-04 13:21:31.931122400 +0200
|
|
||||||
+++ busybox-1.4.2/networking/ping.c 2007-06-04 13:21:36.518425024 +0200
|
|
||||||
@@ -70,7 +70,7 @@
|
|
||||||
struct sockaddr_in pingaddr;
|
|
||||||
struct icmp *pkt;
|
|
||||||
int pingsock, c;
|
|
||||||
- char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
|
||||||
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
|
|
||||||
|
|
||||||
pingsock = create_icmp_socket();
|
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@
|
|
||||||
pkt->icmp_type = ICMP_ECHO;
|
|
||||||
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
|
|
||||||
|
|
||||||
- c = sendto(pingsock, packet, DEFDATALEN + ICMP_MINLEN, 0,
|
|
||||||
+ c = sendto(pingsock, packet, datalen + ICMP_MINLEN, 0,
|
|
||||||
(struct sockaddr *) &pingaddr, sizeof(struct sockaddr_in));
|
|
||||||
|
|
||||||
if (c < 0) {
|
|
||||||
@@ -274,6 +274,10 @@
|
|
||||||
++nreceived;
|
|
||||||
tp = (struct timeval *) icmppkt->icmp_data;
|
|
||||||
|
|
||||||
+ /* If packet is too short, results will be truncated */
|
|
||||||
+ if (sz < (ICMP_MINLEN + sizeof(tv.tv_sec) + sizeof(tv.tv_usec)))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if ((tv.tv_usec -= tp->tv_usec) < 0) {
|
|
||||||
--tv.tv_sec;
|
|
||||||
tv.tv_usec += 1000000;
|
|
||||||
12
package/busybox/patches/450-usage_compressed_fix.patch
Normal file
12
package/busybox/patches/450-usage_compressed_fix.patch
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Index: busybox-1.7.2/applets/usage_compressed
|
||||||
|
===================================================================
|
||||||
|
--- busybox-1.7.2.orig/applets/usage_compressed 2007-09-03 13:48:55.000000000 +0200
|
||||||
|
+++ busybox-1.7.2/applets/usage_compressed 2007-10-04 15:32:54.578092727 +0200
|
||||||
|
@@ -14,6 +14,6 @@
|
||||||
|
|
||||||
|
echo 'static const char packed_usage[] ALIGN1 = '
|
||||||
|
"$loc/usage" | bzip2 -1 | od -v -t x1 \
|
||||||
|
-| $SED -e 's/^[^ ]*//' -e 's/ *\(..\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
|
||||||
|
+| $SED -e 's/^[^ ]*//' -e 's/ *\([a-f0-9][a-f0-9]\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
|
||||||
|
echo ';'
|
||||||
|
echo '#define SIZEOF_usage_messages' `expr 0 + $sz`
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Index: busybox-1.4.2/networking/httpd.c
|
|
||||||
===================================================================
|
|
||||||
--- busybox-1.4.2.orig/networking/httpd.c 2007-06-21 18:12:06.791080496 +0200
|
|
||||||
+++ busybox-1.4.2/networking/httpd.c 2007-06-21 18:14:48.914434000 +0200
|
|
||||||
@@ -1715,8 +1715,8 @@
|
|
||||||
test = url + 1; /* skip first '/' */
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_HTTPD_CGI
|
|
||||||
- if (strncmp(test, "cgi-bin", 7) == 0) {
|
|
||||||
- if (test[7] == '/' && test[8] == 0)
|
|
||||||
+ if (strncmp(test, "cgi-bin/", 8) == 0) {
|
|
||||||
+ if (test[8] == 0)
|
|
||||||
goto FORBIDDEN; /* protect listing cgi-bin/ */
|
|
||||||
sendCgi(url, prequest, length, cookie, content_type);
|
|
||||||
break;
|
|
||||||
40
package/busybox/patches/460-truncated_ping_results.patch
Normal file
40
package/busybox/patches/460-truncated_ping_results.patch
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
Index: busybox-1.7.2/networking/ping.c
|
||||||
|
===================================================================
|
||||||
|
--- busybox-1.7.2.orig/networking/ping.c 2007-09-03 13:48:27.000000000 +0200
|
||||||
|
+++ busybox-1.7.2/networking/ping.c 2007-10-04 15:38:15.424376713 +0200
|
||||||
|
@@ -91,7 +91,7 @@
|
||||||
|
struct sockaddr_in pingaddr;
|
||||||
|
struct icmp *pkt;
|
||||||
|
int pingsock, c;
|
||||||
|
- char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
||||||
|
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
|
||||||
|
|
||||||
|
pingsock = create_icmp_socket();
|
||||||
|
pingaddr = lsa->sin;
|
||||||
|
@@ -101,7 +101,7 @@
|
||||||
|
pkt->icmp_type = ICMP_ECHO;
|
||||||
|
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
|
||||||
|
|
||||||
|
- c = xsendto(pingsock, packet, DEFDATALEN + ICMP_MINLEN,
|
||||||
|
+ c = xsendto(pingsock, packet, datalen + ICMP_MINLEN,
|
||||||
|
(struct sockaddr *) &pingaddr, sizeof(pingaddr));
|
||||||
|
|
||||||
|
/* listen for replies */
|
||||||
|
@@ -135,7 +135,7 @@
|
||||||
|
struct icmp6_hdr *pkt;
|
||||||
|
int pingsock, c;
|
||||||
|
int sockopt;
|
||||||
|
- char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
||||||
|
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
|
||||||
|
|
||||||
|
pingsock = create_icmp6_socket();
|
||||||
|
pingaddr = lsa->sin6;
|
||||||
|
@@ -147,7 +147,7 @@
|
||||||
|
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
|
||||||
|
setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));
|
||||||
|
|
||||||
|
- c = xsendto(pingsock, packet, DEFDATALEN + sizeof (struct icmp6_hdr),
|
||||||
|
+ c = xsendto(pingsock, packet, datalen + sizeof (struct icmp6_hdr),
|
||||||
|
(struct sockaddr *) &pingaddr, sizeof(pingaddr));
|
||||||
|
|
||||||
|
/* listen for replies */
|
||||||
488
package/busybox/patches/470-insmod_search.patch
Normal file
488
package/busybox/patches/470-insmod_search.patch
Normal file
@@ -0,0 +1,488 @@
|
|||||||
|
Index: busybox-1.7.2/modutils/insmod.c
|
||||||
|
===================================================================
|
||||||
|
--- busybox-1.7.2.orig/modutils/insmod.c 2007-09-03 13:48:35.000000000 +0200
|
||||||
|
+++ busybox-1.7.2/modutils/insmod.c 2007-10-05 01:43:47.686834357 +0200
|
||||||
|
@@ -61,19 +61,107 @@
|
||||||
|
#include "libbb.h"
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
+#if ENABLE_FEATURE_2_6_MODULES
|
||||||
|
+#include <sys/mman.h>
|
||||||
|
+#include <asm/unistd.h>
|
||||||
|
+#include <sys/syscall.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#if !ENABLE_FEATURE_2_4_MODULES && !ENABLE_FEATURE_2_6_MODULES
|
||||||
|
#undef ENABLE_FEATURE_2_4_MODULES
|
||||||
|
#define ENABLE_FEATURE_2_4_MODULES 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if !ENABLE_FEATURE_2_4_MODULES
|
||||||
|
-#define insmod_ng_main insmod_main
|
||||||
|
+#if ENABLE_FEATURE_2_4_MODULES
|
||||||
|
+int insmod_main_24(int argc, char **argv);
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
#if ENABLE_FEATURE_2_6_MODULES
|
||||||
|
-extern int insmod_ng_main( int argc, char **argv);
|
||||||
|
+int insmod_main_26(int argc, char **argv);
|
||||||
|
#endif
|
||||||
|
+int insmod_main(int argc, char **argv);
|
||||||
|
+
|
||||||
|
+static char *g_filename = NULL;
|
||||||
|
+#define _PATH_MODULES "/lib/modules"
|
||||||
|
+
|
||||||
|
+static int check_module_name_match(const char *filename, struct stat *statbuf,
|
||||||
|
+ void *userdata, int depth)
|
||||||
|
+{
|
||||||
|
+ char *fullname = (char *) userdata;
|
||||||
|
+
|
||||||
|
+ if (fullname[0] == '\0')
|
||||||
|
+ return FALSE;
|
||||||
|
+ else {
|
||||||
|
+ char *tmp, *tmp1 = xstrdup(filename);
|
||||||
|
+ tmp = bb_get_last_path_component(tmp1);
|
||||||
|
+ if (strcmp(tmp, fullname) == 0) {
|
||||||
|
+ free(tmp1);
|
||||||
|
+ /* Stop searching if we find a match */
|
||||||
|
+ g_filename = xstrdup(filename);
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ free(tmp1);
|
||||||
|
+ }
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int find_module(char *filename)
|
||||||
|
+{
|
||||||
|
+ char *module_dir, real_module_dir[FILENAME_MAX];
|
||||||
|
+ int len, slen, ret = ENOENT, k_version;
|
||||||
|
+ struct utsname myuname;
|
||||||
|
+ const char *suffix;
|
||||||
|
+ struct stat st;
|
||||||
|
+
|
||||||
|
+ /* check the kernel version */
|
||||||
|
+ if ((uname(&myuname) != 0) || (myuname.release[0] != '2'))
|
||||||
|
+ return EINVAL;
|
||||||
|
+
|
||||||
|
+ k_version = myuname.release[2] - '0';
|
||||||
|
+#if ENABLE_FEATURE_2_4_MODULES
|
||||||
|
+ if (k_version <= 4)
|
||||||
|
+ suffix = ".o";
|
||||||
|
+ else
|
||||||
|
+#endif
|
||||||
|
+ suffix = ".ko";
|
||||||
|
+
|
||||||
|
+ len = strlen(filename);
|
||||||
|
+ slen = strlen(suffix);
|
||||||
|
+
|
||||||
|
+ /* check for suffix and absolute path first */
|
||||||
|
+ if ((len < slen + 2) || (strcmp(filename + len - slen, suffix) != 0)) {
|
||||||
|
+ filename = xasprintf("%s%s", filename, suffix);
|
||||||
|
+ } else {
|
||||||
|
+ filename = strdup(filename);
|
||||||
|
+ if ((stat(filename, &st) == 0) && S_ISREG(st.st_mode))
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* next: scan /lib/modules/<release> */
|
||||||
|
+ /* Jump through hoops in case /lib/modules/`uname -r`
|
||||||
|
+ * is a symlink. We do not want recursive_action to
|
||||||
|
+ * follow symlinks, but we do want to follow the
|
||||||
|
+ * /lib/modules/`uname -r` dir, So resolve it ourselves
|
||||||
|
+ * if it is a link... */
|
||||||
|
+ module_dir = concat_path_file(_PATH_MODULES, myuname.release);
|
||||||
|
+ if (realpath(module_dir, real_module_dir) != NULL) {
|
||||||
|
+ free(module_dir);
|
||||||
|
+ module_dir = real_module_dir;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ recursive_action(module_dir, ACTION_RECURSE,
|
||||||
|
+ check_module_name_match, 0, filename, 0);
|
||||||
|
+
|
||||||
|
+ /* Check if we have a complete path */
|
||||||
|
+ if (g_filename != NULL) {
|
||||||
|
+ if ((stat(g_filename, &st) == 0) && S_ISREG(st.st_mode))
|
||||||
|
+ ret = 0;
|
||||||
|
+ else
|
||||||
|
+ free(g_filename);
|
||||||
|
+ }
|
||||||
|
+ free(filename);
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_2_4_MODULES
|
||||||
|
@@ -677,7 +765,6 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
-#define _PATH_MODULES "/lib/modules"
|
||||||
|
enum { STRVERSIONLEN = 64 };
|
||||||
|
|
||||||
|
/*======================================================================*/
|
||||||
|
@@ -790,37 +877,6 @@
|
||||||
|
static int n_ext_modules_used;
|
||||||
|
extern int delete_module(const char *);
|
||||||
|
|
||||||
|
-static char *m_filename;
|
||||||
|
-static char *m_fullName;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-/*======================================================================*/
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-static int check_module_name_match(const char *filename, struct stat *statbuf,
|
||||||
|
- void *userdata, int depth)
|
||||||
|
-{
|
||||||
|
- char *fullname = (char *) userdata;
|
||||||
|
-
|
||||||
|
- if (fullname[0] == '\0')
|
||||||
|
- return FALSE;
|
||||||
|
- else {
|
||||||
|
- char *tmp, *tmp1 = xstrdup(filename);
|
||||||
|
- tmp = bb_get_last_path_component(tmp1);
|
||||||
|
- if (strcmp(tmp, fullname) == 0) {
|
||||||
|
- free(tmp1);
|
||||||
|
- /* Stop searching if we find a match */
|
||||||
|
- m_filename = xstrdup(filename);
|
||||||
|
- return FALSE;
|
||||||
|
- }
|
||||||
|
- free(tmp1);
|
||||||
|
- }
|
||||||
|
- return TRUE;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-/*======================================================================*/
|
||||||
|
-
|
||||||
|
static struct obj_file *arch_new_file(void)
|
||||||
|
{
|
||||||
|
struct arch_file *f;
|
||||||
|
@@ -3952,33 +4008,35 @@
|
||||||
|
void print_load_map(struct obj_file *f);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-int insmod_main( int argc, char **argv);
|
||||||
|
-int insmod_main( int argc, char **argv)
|
||||||
|
+int insmod_main_24( int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *opt_o, *arg1;
|
||||||
|
int len;
|
||||||
|
int k_crcs;
|
||||||
|
- char *tmp, *tmp1;
|
||||||
|
unsigned long m_size;
|
||||||
|
ElfW(Addr) m_addr;
|
||||||
|
struct obj_file *f;
|
||||||
|
struct stat st;
|
||||||
|
char *m_name = 0;
|
||||||
|
- int exit_status = EXIT_FAILURE;
|
||||||
|
+ int ret = EINVAL;
|
||||||
|
int m_has_modinfo;
|
||||||
|
#if ENABLE_FEATURE_INSMOD_VERSION_CHECKING
|
||||||
|
struct utsname uts_info;
|
||||||
|
char m_strversion[STRVERSIONLEN];
|
||||||
|
int m_version, m_crcs;
|
||||||
|
#endif
|
||||||
|
-#if ENABLE_FEATURE_CLEAN_UP
|
||||||
|
- FILE *fp = 0;
|
||||||
|
-#else
|
||||||
|
- FILE *fp;
|
||||||
|
-#endif
|
||||||
|
- int k_version = 0;
|
||||||
|
+ FILE *fp = NULL;
|
||||||
|
+ int k_version;
|
||||||
|
struct utsname myuname;
|
||||||
|
|
||||||
|
+ /* check the kernel version */
|
||||||
|
+ if ((uname(&myuname) != 0) || (myuname.release[0] != '2'))
|
||||||
|
+ return EINVAL;
|
||||||
|
+
|
||||||
|
+ k_version = myuname.release[2] - '0';
|
||||||
|
+ if (k_version > 4)
|
||||||
|
+ return ENOTSUP;
|
||||||
|
+
|
||||||
|
/* Parse any options */
|
||||||
|
getopt32(argv, OPTION_STR, &opt_o);
|
||||||
|
arg1 = argv[optind];
|
||||||
|
@@ -3987,110 +4045,18 @@
|
||||||
|
m_name = xstrdup(opt_o);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (arg1 == NULL) {
|
||||||
|
+ if (arg1 == NULL)
|
||||||
|
bb_show_usage();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Grab the module name */
|
||||||
|
- tmp1 = xstrdup(arg1);
|
||||||
|
- tmp = basename(tmp1);
|
||||||
|
- len = strlen(tmp);
|
||||||
|
-
|
||||||
|
- if (uname(&myuname) == 0) {
|
||||||
|
- if (myuname.release[0] == '2') {
|
||||||
|
- 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'
|
||||||
|
- ) {
|
||||||
|
- len -= 3;
|
||||||
|
- tmp[len] = '\0';
|
||||||
|
- } else
|
||||||
|
-#endif
|
||||||
|
- if (len > 2 && tmp[len - 2] == '.' && tmp[len - 1] == 'o') {
|
||||||
|
- len -= 2;
|
||||||
|
- tmp[len] = '\0';
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-#if ENABLE_FEATURE_2_6_MODULES
|
||||||
|
- if (k_version > 4)
|
||||||
|
- m_fullName = xasprintf("%s.ko", tmp);
|
||||||
|
- else
|
||||||
|
-#endif
|
||||||
|
- m_fullName = xasprintf("%s.o", tmp);
|
||||||
|
|
||||||
|
- if (!m_name) {
|
||||||
|
- m_name = tmp;
|
||||||
|
- } else {
|
||||||
|
- free(tmp1);
|
||||||
|
- tmp1 = 0; /* flag for free(m_name) before exit() */
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Get a filedesc for the module. Check we we have a complete path */
|
||||||
|
- if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
|
||||||
|
- || (fp = fopen(arg1, "r")) == 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... */
|
||||||
|
- if (k_version) { /* uname succeedd */
|
||||||
|
- char *module_dir;
|
||||||
|
- char *tmdn;
|
||||||
|
- char real_module_dir[FILENAME_MAX];
|
||||||
|
-
|
||||||
|
- tmdn = concat_path_file(_PATH_MODULES, myuname.release);
|
||||||
|
- /* Jump through hoops in case /lib/modules/`uname -r`
|
||||||
|
- * is a symlink. We do not want recursive_action to
|
||||||
|
- * follow symlinks, but we do want to follow the
|
||||||
|
- * /lib/modules/`uname -r` dir, So resolve it ourselves
|
||||||
|
- * if it is a link... */
|
||||||
|
- if (realpath(tmdn, real_module_dir) == NULL)
|
||||||
|
- module_dir = tmdn;
|
||||||
|
- else
|
||||||
|
- module_dir = real_module_dir;
|
||||||
|
- recursive_action(module_dir, ACTION_RECURSE,
|
||||||
|
- check_module_name_match, 0, m_fullName, 0);
|
||||||
|
- free(tmdn);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Check if we have found anything yet */
|
||||||
|
- if (m_filename == 0 || ((fp = fopen(m_filename, "r")) == NULL)) {
|
||||||
|
- char module_dir[FILENAME_MAX];
|
||||||
|
-
|
||||||
|
- free(m_filename);
|
||||||
|
- m_filename = 0;
|
||||||
|
- if (realpath (_PATH_MODULES, module_dir) == NULL)
|
||||||
|
- strcpy(module_dir, _PATH_MODULES);
|
||||||
|
- /* No module found under /lib/modules/`uname -r`, this
|
||||||
|
- * time cast the net a bit wider. Search /lib/modules/ */
|
||||||
|
- if (!recursive_action(module_dir, ACTION_RECURSE,
|
||||||
|
- check_module_name_match, 0, m_fullName, 0)
|
||||||
|
- ) {
|
||||||
|
- if (m_filename == 0
|
||||||
|
- || ((fp = fopen(m_filename, "r")) == NULL)
|
||||||
|
- ) {
|
||||||
|
- bb_error_msg("%s: no module by that name found", m_fullName);
|
||||||
|
- goto out;
|
||||||
|
- }
|
||||||
|
- } else
|
||||||
|
- bb_error_msg_and_die("%s: no module by that name found", m_fullName);
|
||||||
|
- }
|
||||||
|
- } else
|
||||||
|
- m_filename = xstrdup(arg1);
|
||||||
|
-
|
||||||
|
- if (flag_verbose)
|
||||||
|
- printf("Using %s\n", m_filename);
|
||||||
|
+ ret = find_module(arg1);
|
||||||
|
+ if (ret)
|
||||||
|
+ goto out;
|
||||||
|
|
||||||
|
-#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");
|
||||||
|
+ if (!fp) {
|
||||||
|
+ ret = errno;
|
||||||
|
+ goto out;
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
f = obj_load(fp, LOADBITS);
|
||||||
|
if (f == NULL)
|
||||||
|
@@ -4120,7 +4086,7 @@
|
||||||
|
"\t%s was compiled for kernel version %s\n"
|
||||||
|
"\twhile this kernel is version %s",
|
||||||
|
flag_force_load ? "warning: " : "",
|
||||||
|
- m_filename, m_strversion, uts_info.release);
|
||||||
|
+ g_filename, m_strversion, uts_info.release);
|
||||||
|
if (!flag_force_load)
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
@@ -4173,7 +4139,7 @@
|
||||||
|
hide_special_symbols(f);
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
|
||||||
|
- add_ksymoops_symbols(f, m_filename, m_name);
|
||||||
|
+ add_ksymoops_symbols(f, g_filename, m_name);
|
||||||
|
#endif /* FEATURE_INSMOD_KSYMOOPS_SYMBOLS */
|
||||||
|
|
||||||
|
new_create_module_ksymtab(f);
|
||||||
|
@@ -4220,8 +4186,7 @@
|
||||||
|
if (flag_print_load_map)
|
||||||
|
print_load_map(f);
|
||||||
|
|
||||||
|
- exit_status = EXIT_SUCCESS;
|
||||||
|
-
|
||||||
|
+ ret = 0;
|
||||||
|
out:
|
||||||
|
#if ENABLE_FEATURE_CLEAN_UP
|
||||||
|
if (fp)
|
||||||
|
@@ -4229,21 +4194,13 @@
|
||||||
|
free(tmp1);
|
||||||
|
if (!tmp1)
|
||||||
|
free(m_name);
|
||||||
|
- free(m_filename);
|
||||||
|
+ free(g_filename);
|
||||||
|
#endif
|
||||||
|
return exit_status;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
-
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-
|
||||||
|
#if ENABLE_FEATURE_2_6_MODULES
|
||||||
|
-
|
||||||
|
-#include <sys/mman.h>
|
||||||
|
-#include <asm/unistd.h>
|
||||||
|
-#include <sys/syscall.h>
|
||||||
|
-
|
||||||
|
/* We use error numbers in a loose translation... */
|
||||||
|
static const char *moderror(int err)
|
||||||
|
{
|
||||||
|
@@ -4261,19 +4218,33 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-int insmod_ng_main(int argc, char **argv);
|
||||||
|
-int insmod_ng_main(int argc, char **argv)
|
||||||
|
+int insmod_main_26(int argc, char **argv)
|
||||||
|
{
|
||||||
|
- long ret;
|
||||||
|
- size_t len;
|
||||||
|
+ char *filename, *options;
|
||||||
|
+ struct utsname myuname;
|
||||||
|
+ int k_version;
|
||||||
|
int optlen;
|
||||||
|
+ size_t len;
|
||||||
|
void *map;
|
||||||
|
- char *filename, *options;
|
||||||
|
+ long ret = 0;
|
||||||
|
+
|
||||||
|
+ /* check the kernel version */
|
||||||
|
+ if ((uname(&myuname) != 0) || (myuname.release[0] != '2'))
|
||||||
|
+ return EINVAL;
|
||||||
|
+
|
||||||
|
+ k_version = myuname.release[2] - '0';
|
||||||
|
+ if (k_version <= 4)
|
||||||
|
+ return ENOTSUP;
|
||||||
|
|
||||||
|
filename = *++argv;
|
||||||
|
if (!filename)
|
||||||
|
bb_show_usage();
|
||||||
|
|
||||||
|
+ g_filename = filename;
|
||||||
|
+ ret = find_module(filename);
|
||||||
|
+ if (ret)
|
||||||
|
+ goto done;
|
||||||
|
+
|
||||||
|
/* Rest is options */
|
||||||
|
options = xzalloc(1);
|
||||||
|
optlen = 0;
|
||||||
|
@@ -4283,36 +4254,46 @@
|
||||||
|
optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if 0
|
||||||
|
- /* Any special reason why mmap? It isn't performace critical... */
|
||||||
|
- int fd;
|
||||||
|
- struct stat st;
|
||||||
|
- unsigned long len;
|
||||||
|
- fd = xopen(filename, O_RDONLY);
|
||||||
|
- fstat(fd, &st);
|
||||||
|
- len = st.st_size;
|
||||||
|
- map = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||||
|
- if (map == MAP_FAILED) {
|
||||||
|
- bb_perror_msg_and_die("cannot mmap '%s'", filename);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* map == NULL on Blackfin, probably on other MMU-less systems too. Workaround. */
|
||||||
|
- if (map == NULL) {
|
||||||
|
- map = xmalloc(len);
|
||||||
|
- xread(fd, map, len);
|
||||||
|
- }
|
||||||
|
-#else
|
||||||
|
len = MAXINT(ssize_t);
|
||||||
|
- map = xmalloc_open_read_close(filename, &len);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
+ map = xmalloc_open_read_close(g_filename, &len);
|
||||||
|
ret = syscall(__NR_init_module, map, len, options);
|
||||||
|
if (ret != 0) {
|
||||||
|
bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
|
||||||
|
- filename, moderror(errno), ret);
|
||||||
|
+ g_filename, moderror(errno), ret);
|
||||||
|
}
|
||||||
|
+done:
|
||||||
|
+ if (g_filename && (g_filename != filename))
|
||||||
|
+ free(g_filename);
|
||||||
|
|
||||||
|
- return 0;
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+int insmod_main(int argc, char **argv)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+#if ENABLE_FEATURE_2_6_MODULES
|
||||||
|
+ ret = insmod_main_26(argc, argv);
|
||||||
|
+ if (ret != ENOTSUP)
|
||||||
|
+ goto done;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if ENABLE_FEATURE_2_4_MODULES
|
||||||
|
+ ret = insmod_main_24(argc, argv);
|
||||||
|
+ if (ret != ENOTSUP)
|
||||||
|
+ goto done;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ fprintf(stderr, "Error: Kernel version not supported\n");
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+done:
|
||||||
|
+ if (ret) {
|
||||||
|
+ errno = ret;
|
||||||
|
+ bb_perror_msg("Loading module failed");
|
||||||
|
+ return ret;
|
||||||
|
+ } else
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
|||||||
Index: busybox-1.4.2/coreutils/md5_sha1_sum.c
|
Index: busybox-1.7.2/coreutils/md5_sha1_sum.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/coreutils/md5_sha1_sum.c 2007-06-04 13:21:31.536182440 +0200
|
--- busybox-1.7.2.orig/coreutils/md5_sha1_sum.c 2007-09-03 13:48:39.000000000 +0200
|
||||||
+++ busybox-1.4.2/coreutils/md5_sha1_sum.c 2007-06-04 13:21:37.709243992 +0200
|
+++ busybox-1.7.2/coreutils/md5_sha1_sum.c 2007-10-04 15:45:02.423570273 +0200
|
||||||
@@ -8,76 +8,10 @@
|
@@ -8,75 +8,10 @@
|
||||||
|
|
||||||
#include "busybox.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
-typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
|
-typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
|
||||||
-
|
-
|
||||||
@@ -36,9 +36,8 @@ Index: busybox-1.4.2/coreutils/md5_sha1_sum.c
|
|||||||
-
|
-
|
||||||
- src_fd = STDIN_FILENO;
|
- src_fd = STDIN_FILENO;
|
||||||
- if (NOT_LONE_DASH(filename)) {
|
- if (NOT_LONE_DASH(filename)) {
|
||||||
- src_fd = open(filename, O_RDONLY);
|
- src_fd = open_or_warn(filename, O_RDONLY);
|
||||||
- if (src_fd < 0) {
|
- if (src_fd < 0) {
|
||||||
- bb_perror_msg("%s", filename);
|
|
||||||
- return NULL;
|
- return NULL;
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
@@ -76,35 +75,35 @@ Index: busybox-1.4.2/coreutils/md5_sha1_sum.c
|
|||||||
- return hash_value;
|
- return hash_value;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
|
int md5_sha1_sum_main(int argc, char **argv);
|
||||||
int md5_sha1_sum_main(int argc, char **argv)
|
int md5_sha1_sum_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int return_value = EXIT_SUCCESS;
|
Index: busybox-1.7.2/include/libbb.h
|
||||||
Index: busybox-1.4.2/include/libbb.h
|
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/include/libbb.h 2007-06-04 13:21:35.388596784 +0200
|
--- busybox-1.7.2.orig/include/libbb.h 2007-10-04 15:20:22.275221430 +0200
|
||||||
+++ busybox-1.4.2/include/libbb.h 2007-06-04 13:21:37.709243992 +0200
|
+++ busybox-1.7.2/include/libbb.h 2007-10-04 15:42:10.585777803 +0200
|
||||||
@@ -641,6 +641,7 @@
|
@@ -947,6 +947,7 @@
|
||||||
extern const char bb_uuenc_tbl_std[];
|
extern const char bb_uuenc_tbl_std[];
|
||||||
void bb_uuencode(const unsigned char *s, char *store, const int length, const char *tbl);
|
void bb_uuencode(char *store, const void *s, int length, const char *tbl);
|
||||||
|
|
||||||
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
|
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
|
||||||
typedef struct sha1_ctx_t {
|
typedef struct sha1_ctx_t {
|
||||||
uint32_t count[2];
|
uint32_t count[2];
|
||||||
uint32_t hash[5];
|
uint32_t hash[5];
|
||||||
@@ -662,6 +663,8 @@
|
@@ -968,6 +969,8 @@
|
||||||
void md5_begin(md5_ctx_t *ctx);
|
void md5_begin(md5_ctx_t *ctx);
|
||||||
void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
|
void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
|
||||||
void *md5_end(void *resbuf, md5_ctx_t *ctx);
|
void *md5_end(void *resbuf, md5_ctx_t *ctx);
|
||||||
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned hash_length);
|
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned hash_length);
|
||||||
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
|
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
|
||||||
|
|
||||||
uint32_t *crc32_filltable(int endian);
|
uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
|
||||||
|
|
||||||
Index: busybox-1.4.2/libbb/Kbuild
|
Index: busybox-1.7.2/libbb/Kbuild
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/libbb/Kbuild 2007-06-04 13:21:31.548180616 +0200
|
--- busybox-1.7.2.orig/libbb/Kbuild 2007-09-03 13:48:41.000000000 +0200
|
||||||
+++ busybox-1.4.2/libbb/Kbuild 2007-06-04 13:21:37.710243840 +0200
|
+++ busybox-1.7.2/libbb/Kbuild 2007-10-04 15:42:10.613779401 +0200
|
||||||
@@ -37,6 +37,7 @@
|
@@ -38,6 +38,7 @@
|
||||||
lib-y += get_last_path_component.o
|
lib-y += get_last_path_component.o
|
||||||
lib-y += get_line_from_file.o
|
lib-y += get_line_from_file.o
|
||||||
lib-y += getopt32.o
|
lib-y += getopt32.o
|
||||||
@@ -112,11 +111,11 @@ Index: busybox-1.4.2/libbb/Kbuild
|
|||||||
lib-y += herror_msg.o
|
lib-y += herror_msg.o
|
||||||
lib-y += herror_msg_and_die.o
|
lib-y += herror_msg_and_die.o
|
||||||
lib-y += human_readable.o
|
lib-y += human_readable.o
|
||||||
Index: busybox-1.4.2/libbb/hash.c
|
Index: busybox-1.7.2/libbb/hash.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/libbb/hash.c 2007-06-04 13:21:37.710243840 +0200
|
+++ busybox-1.7.2/libbb/hash.c 2007-10-04 15:45:08.279904000 +0200
|
||||||
@@ -0,0 +1,82 @@
|
@@ -0,0 +1,81 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) 2003 Glenn L. McGrath
|
+ * Copyright (C) 2003 Glenn L. McGrath
|
||||||
+ * Copyright (C) 2003-2004 Erik Andersen
|
+ * Copyright (C) 2003-2004 Erik Andersen
|
||||||
@@ -158,20 +157,19 @@ Index: busybox-1.4.2/libbb/hash.c
|
|||||||
+
|
+
|
||||||
+ src_fd = STDIN_FILENO;
|
+ src_fd = STDIN_FILENO;
|
||||||
+ if (NOT_LONE_DASH(filename)) {
|
+ if (NOT_LONE_DASH(filename)) {
|
||||||
+ src_fd = open(filename, O_RDONLY);
|
+ src_fd = open_or_warn(filename, O_RDONLY);
|
||||||
+ if (src_fd < 0) {
|
+ if (src_fd < 0) {
|
||||||
+ bb_perror_msg("%s", filename);
|
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* figure specific hash algorithims */
|
+ /* figure specific hash algorithims */
|
||||||
+ if (hash_algo==HASH_MD5) {
|
+ if (ENABLE_MD5SUM && hash_algo==HASH_MD5) {
|
||||||
+ md5_begin(&context.md5);
|
+ md5_begin(&context.md5);
|
||||||
+ update = (void (*)(const void*, size_t, void*))md5_hash;
|
+ update = (void (*)(const void*, size_t, void*))md5_hash;
|
||||||
+ final = (void (*)(void*, void*))md5_end;
|
+ final = (void (*)(void*, void*))md5_end;
|
||||||
+ hash_len = 16;
|
+ hash_len = 16;
|
||||||
+ } else if (hash_algo==HASH_SHA1) {
|
+ } else if (ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
|
||||||
+ sha1_begin(&context.sha1);
|
+ sha1_begin(&context.sha1);
|
||||||
+ update = (void (*)(const void*, size_t, void*))sha1_hash;
|
+ update = (void (*)(const void*, size_t, void*))sha1_hash;
|
||||||
+ final = (void (*)(void*, void*))sha1_end;
|
+ final = (void (*)(void*, void*))sha1_end;
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
Index: busybox-1.4.2/editors/awk.c
|
Index: busybox-1.7.2/editors/awk.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/editors/awk.c 2007-06-04 13:21:35.202625056 +0200
|
--- busybox-1.7.2.orig/editors/awk.c 2007-10-05 01:39:50.073293533 +0200
|
||||||
+++ busybox-1.4.2/editors/awk.c 2007-06-04 13:21:37.927210856 +0200
|
+++ busybox-1.7.2/editors/awk.c 2007-10-05 02:16:42.539374788 +0200
|
||||||
@@ -30,6 +30,11 @@
|
@@ -33,6 +33,11 @@
|
||||||
/* these flags are static, don't change them when value is changed */
|
/* these flags are static, don't change them when value is changed */
|
||||||
#define VF_DONTTOUCH (VF_ARRAY | VF_SPECIAL | VF_WALK | VF_CHILD | VF_DIRTY)
|
#define VF_DONTTOUCH (VF_ARRAY | VF_SPECIAL | VF_WALK | VF_CHILD | VF_DIRTY)
|
||||||
|
|
||||||
@@ -13,15 +13,14 @@ Index: busybox-1.4.2/editors/awk.c
|
|||||||
+
|
+
|
||||||
/* Variable */
|
/* Variable */
|
||||||
typedef struct var_s {
|
typedef struct var_s {
|
||||||
unsigned short type; /* flags */
|
unsigned type; /* flags */
|
||||||
@@ -50,10 +55,15 @@
|
@@ -54,9 +59,14 @@
|
||||||
char *programname;
|
|
||||||
} chain;
|
} chain;
|
||||||
|
|
||||||
+typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
|
|
||||||
/* Function */
|
/* Function */
|
||||||
|
+typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
|
||||||
typedef struct func_s {
|
typedef struct func_s {
|
||||||
unsigned short nargs;
|
unsigned nargs;
|
||||||
- struct chain_s body;
|
- struct chain_s body;
|
||||||
+ enum { AWKFUNC, CFUNC } type;
|
+ enum { AWKFUNC, CFUNC } type;
|
||||||
+ union {
|
+ union {
|
||||||
@@ -31,17 +30,17 @@ Index: busybox-1.4.2/editors/awk.c
|
|||||||
} func;
|
} func;
|
||||||
|
|
||||||
/* I/O stream */
|
/* I/O stream */
|
||||||
@@ -1312,7 +1322,8 @@
|
@@ -1400,7 +1410,8 @@
|
||||||
next_token(TC_FUNCTION);
|
next_token(TC_FUNCTION);
|
||||||
pos++;
|
g_pos++;
|
||||||
f = newfunc(t.string);
|
f = newfunc(t_string);
|
||||||
- f->body.first = NULL;
|
- f->body.first = NULL;
|
||||||
+ f->type = AWKFUNC;
|
+ f->type = AWKFUNC;
|
||||||
+ f->x.body.first = NULL;
|
+ f->x.body.first = NULL;
|
||||||
f->nargs = 0;
|
f->nargs = 0;
|
||||||
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
|
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
|
||||||
v = findvar(ahash, t.string);
|
v = findvar(ahash, t_string);
|
||||||
@@ -1321,7 +1332,7 @@
|
@@ -1409,7 +1420,7 @@
|
||||||
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
|
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -50,33 +49,34 @@ Index: busybox-1.4.2/editors/awk.c
|
|||||||
chain_group();
|
chain_group();
|
||||||
clear_array(ahash);
|
clear_array(ahash);
|
||||||
|
|
||||||
@@ -2260,7 +2271,8 @@
|
@@ -2372,7 +2383,8 @@
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XC( OC_FUNC ):
|
case XC( OC_FUNC ):
|
||||||
- if (!op->r.f->body.first)
|
- if (!op->r.f->body.first)
|
||||||
+ if ((op->r.f->type == AWKFUNC) &&
|
+ if ((op->r.f->type == AWKFUNC) &&
|
||||||
+ !op->r.f->x.body.first)
|
+ !op->r.f->x.body.first)
|
||||||
runtime_error(EMSG_UNDEF_FUNC);
|
syntax_error(EMSG_UNDEF_FUNC);
|
||||||
|
|
||||||
X.v = R.v = nvalloc(op->r.f->nargs+1);
|
X.v = R.v = nvalloc(op->r.f->nargs+1);
|
||||||
@@ -2277,7 +2289,11 @@
|
@@ -2389,7 +2401,10 @@
|
||||||
fnargs = X.v;
|
fnargs = X.v;
|
||||||
|
|
||||||
L.s = programname;
|
L.s = g_progname;
|
||||||
- res = evaluate(op->r.f->body.first, res);
|
- res = evaluate(op->r.f->body.first, res);
|
||||||
+ if (op->r.f->type == AWKFUNC)
|
+ if (op->r.f->type == AWKFUNC)
|
||||||
+ res = evaluate(op->r.f->x.body.first, res);
|
+ res = evaluate(op->r.f->x.body.first, res);
|
||||||
+ else if (op->r.f->type == CFUNC)
|
+ else if (op->r.f->type == CFUNC)
|
||||||
+ res = op->r.f->x.cfunc(res, fnargs, op->r.f->nargs);
|
+ res = op->r.f->x.cfunc(res, fnargs, op->r.f->nargs);
|
||||||
+
|
g_progname = L.s;
|
||||||
programname = L.s;
|
|
||||||
|
|
||||||
nvfree(fnargs);
|
nvfree(fnargs);
|
||||||
@@ -2637,6 +2653,11 @@
|
@@ -2753,6 +2768,13 @@
|
||||||
return &rsm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int awk_main(int argc, char **argv);
|
||||||
|
+int awx_main(int argc, char **argv);
|
||||||
|
+
|
||||||
+#ifdef CONFIG_AWX
|
+#ifdef CONFIG_AWX
|
||||||
+static int is_awx = 0;
|
+static int is_awx = 0;
|
||||||
+#include "awx.c"
|
+#include "awx.c"
|
||||||
@@ -84,23 +84,24 @@ Index: busybox-1.4.2/editors/awk.c
|
|||||||
+
|
+
|
||||||
int awk_main(int argc, char **argv)
|
int awk_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, j, flen;
|
unsigned opt;
|
||||||
@@ -2693,6 +2714,10 @@
|
@@ -2817,6 +2839,11 @@
|
||||||
free(s);
|
*s1 = '=';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
+#ifdef CONFIG_AWX
|
+#ifdef CONFIG_AWX
|
||||||
+ do_awx(argc, argv);
|
+ do_awx(argc, argv);
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
programname = NULL;
|
opt_complementary = "v::f::";
|
||||||
while((c = getopt(argc, argv, "F:v:f:W:")) != EOF) {
|
opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
|
||||||
switch (c) {
|
argv += optind;
|
||||||
Index: busybox-1.4.2/editors/awx.c
|
Index: busybox-1.7.2/editors/awx.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/editors/awx.c 2007-06-04 13:21:37.928210704 +0200
|
+++ busybox-1.7.2/editors/awx.c 2007-10-05 02:10:16.393369582 +0200
|
||||||
@@ -0,0 +1,633 @@
|
@@ -0,0 +1,636 @@
|
||||||
+/*
|
+/*
|
||||||
+ * awk web extension
|
+ * awk web extension
|
||||||
+ *
|
+ *
|
||||||
@@ -126,7 +127,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+static int lang_inuse = 0;
|
+static int lang_inuse = 0;
|
||||||
+
|
+
|
||||||
+/* look up a translation symbol from the hash */
|
+/* look up a translation symbol from the hash */
|
||||||
+static inline char *translate_lookup(char *str)
|
+static inline const char *translate_lookup(char *str)
|
||||||
+{
|
+{
|
||||||
+ char *name, *def, *p;
|
+ char *name, *def, *p;
|
||||||
+ hash_item *hi;
|
+ hash_item *hi;
|
||||||
@@ -151,7 +152,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+/* look for translation markers in the line and return the translated string */
|
+/* look for translation markers in the line and return the translated string */
|
||||||
+static char *translate_line(char *line)
|
+static char *translate_line(char *line)
|
||||||
+{
|
+{
|
||||||
+ char *tok[MAX_TR * 3];
|
+ const char *tok[MAX_TR * 3];
|
||||||
+ char *l, *p, *p2 = NULL, *res;
|
+ char *l, *p, *p2 = NULL, *res;
|
||||||
+ int len = 0, _pos = 0, i, tr_abort = 0;
|
+ int len = 0, _pos = 0, i, tr_abort = 0;
|
||||||
+ static char *backlog = NULL;
|
+ static char *backlog = NULL;
|
||||||
@@ -283,7 +284,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+{
|
+{
|
||||||
+ const char *langfmt = "/usr/lib/webif/lang/%s.txt";
|
+ const char *langfmt = "/usr/lib/webif/lang/%s.txt";
|
||||||
+ char lbuf[LINE_BUF];
|
+ char lbuf[LINE_BUF];
|
||||||
+ char *lang;
|
+ const char *lang;
|
||||||
+
|
+
|
||||||
+ if (!lang_inuse)
|
+ if (!lang_inuse)
|
||||||
+ init_lang(res, args, nargs);
|
+ init_lang(res, args, nargs);
|
||||||
@@ -299,7 +300,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* read the contents of an entire file */
|
+/* read the contents of an entire file */
|
||||||
+static char *get_file(char *fname)
|
+static char *get_file(const char *fname)
|
||||||
+{
|
+{
|
||||||
+ FILE *F;
|
+ FILE *F;
|
||||||
+ char *s = NULL;
|
+ char *s = NULL;
|
||||||
@@ -343,8 +344,8 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+
|
+
|
||||||
+ tv = nvalloc(1);
|
+ tv = nvalloc(1);
|
||||||
+ memset(&tmp, 0, sizeof(tmp));
|
+ memset(&tmp, 0, sizeof(tmp));
|
||||||
+ pos = p;
|
+ g_pos = p;
|
||||||
+ t.lineno = 1;
|
+ t_lineno = 1;
|
||||||
+ while ((tclass = next_token(TC_EOF | TC_OPSEQ |
|
+ while ((tclass = next_token(TC_EOF | TC_OPSEQ |
|
||||||
+ TC_OPTERM | TC_BEGIN | TC_FUNCDECL)) != TC_EOF) {
|
+ TC_OPTERM | TC_BEGIN | TC_FUNCDECL)) != TC_EOF) {
|
||||||
+ if (tclass & TC_OPTERM)
|
+ if (tclass & TC_OPTERM)
|
||||||
@@ -357,13 +358,13 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ chain_group();
|
+ chain_group();
|
||||||
+ } else if (tclass & TC_FUNCDECL) {
|
+ } else if (tclass & TC_FUNCDECL) {
|
||||||
+ next_token(TC_FUNCTION);
|
+ next_token(TC_FUNCTION);
|
||||||
+ pos++;
|
+ g_pos++;
|
||||||
+ f = newfunc(t.string);
|
+ f = newfunc(t_string);
|
||||||
+ f->type = AWKFUNC;
|
+ f->type = AWKFUNC;
|
||||||
+ f->x.body.first = NULL;
|
+ f->x.body.first = NULL;
|
||||||
+ f->nargs = 0;
|
+ f->nargs = 0;
|
||||||
+ while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
|
+ while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
|
||||||
+ v = findvar(ahash, t.string);
|
+ v = findvar(ahash, t_string);
|
||||||
+ v->x.aidx = (f->nargs)++;
|
+ v->x.aidx = (f->nargs)++;
|
||||||
+
|
+
|
||||||
+ if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
|
+ if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
|
||||||
@@ -382,10 +383,12 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+
|
+
|
||||||
+/* include an awk file and run its BEGIN{} section */
|
+/* include an awk file and run its BEGIN{} section */
|
||||||
+static xhash *includes = NULL;
|
+static xhash *includes = NULL;
|
||||||
+static void include_file(char *filename)
|
+static void include_file(const char *filename)
|
||||||
+{
|
+{
|
||||||
+ char *s;
|
+ char *s;
|
||||||
+ var *v;
|
+ var *v;
|
||||||
|
+ int oldlnr = g_lineno;
|
||||||
|
+ const char *oldprg = g_progname;
|
||||||
+
|
+
|
||||||
+ if (!includes)
|
+ if (!includes)
|
||||||
+ includes = hash_init();
|
+ includes = hash_init();
|
||||||
@@ -402,13 +405,17 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ fprintf(stderr, "Could not open file.\n");
|
+ fprintf(stderr, "Could not open file.\n");
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
|
+ g_lineno = 1;
|
||||||
|
+ g_progname = xstrdup(filename);
|
||||||
+ parse_include(s+1);
|
+ parse_include(s+1);
|
||||||
+ free(s);
|
+ free(s);
|
||||||
|
+ g_lineno = oldlnr;
|
||||||
|
+ g_progname = oldprg;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static var *include(var *res, var *args, int nargs)
|
+static var *include(var *res, var *args, int nargs)
|
||||||
+{
|
+{
|
||||||
+ char *s;
|
+ const char *s;
|
||||||
+
|
+
|
||||||
+ s = getvar_s(args);
|
+ s = getvar_s(args);
|
||||||
+ if (s && (strlen(s) > 0))
|
+ if (s && (strlen(s) > 0))
|
||||||
@@ -424,7 +431,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ node *n;
|
+ node *n;
|
||||||
+
|
+
|
||||||
+ memset(&body, 0, sizeof(body));
|
+ memset(&body, 0, sizeof(body));
|
||||||
+ pos = str;
|
+ g_pos = str;
|
||||||
+ seq = &body;
|
+ seq = &body;
|
||||||
+
|
+
|
||||||
+ /* end of expression, assume that there's going to be a free byte
|
+ /* end of expression, assume that there's going to be a free byte
|
||||||
@@ -456,7 +463,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+
|
+
|
||||||
+ if (!e || !e->var)
|
+ if (!e || !e->var)
|
||||||
+ return;
|
+ return;
|
||||||
+ lineno = e->line;
|
+ g_lineno = e->line;
|
||||||
+ switch (e->t) {
|
+ switch (e->t) {
|
||||||
+ case T_TEXT:
|
+ case T_TEXT:
|
||||||
+ s = malloc(strlen(e->var) + 2);
|
+ s = malloc(strlen(e->var) + 2);
|
||||||
@@ -502,38 +509,36 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* awk method render(), which opens a template file and processes all awk ssi calls */
|
+/* awk method render(), which opens a template file and processes all awk ssi calls */
|
||||||
+static void render_file(char *filename)
|
+static void render_file(const char *filename)
|
||||||
+{
|
+{
|
||||||
+ struct template_cb tcb;
|
+ struct template_cb tcb;
|
||||||
+ struct template_element *e;
|
+ struct template_element *e;
|
||||||
+ FILE *f;
|
+ FILE *f;
|
||||||
+ char *oldprg;
|
+ const char *oldprg = g_progname;
|
||||||
+ int oldlnr;
|
+ int oldlnr = g_lineno;
|
||||||
+
|
+
|
||||||
+ if (!filename)
|
+ if (!filename)
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
+ oldlnr = lineno;
|
|
||||||
+ oldprg = programname;
|
|
||||||
+ programname = filename;
|
|
||||||
+
|
|
||||||
+ f = fopen(filename, "r");
|
+ f = fopen(filename, "r");
|
||||||
+ if (!f)
|
+ if (!f)
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
|
+ g_progname = xstrdup(filename);
|
||||||
|
+ g_lineno = 1;
|
||||||
+ memset(&tcb, 0, sizeof(tcb));
|
+ memset(&tcb, 0, sizeof(tcb));
|
||||||
+ tcb.handle_element = render_element;
|
+ tcb.handle_element = render_element;
|
||||||
+ e = parse_template(&tcb, f);
|
+ e = parse_template(&tcb, f);
|
||||||
+ execute_template(&tcb, e);
|
+ execute_template(&tcb, e);
|
||||||
+ free_template(&tcb, e);
|
+ free_template(&tcb, e);
|
||||||
+ fclose(f);
|
+ fclose(f);
|
||||||
+ programname = oldprg;
|
+ g_progname = oldprg;
|
||||||
+ lineno = oldlnr;
|
+ g_lineno = oldlnr;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static var *render(var *res, var *args, int nargs)
|
+static var *render(var *res, var *args, int nargs)
|
||||||
+{
|
+{
|
||||||
+ char *s;
|
+ const char *s;
|
||||||
+
|
+
|
||||||
+ s = getvar_s(args);
|
+ s = getvar_s(args);
|
||||||
+ if (!s)
|
+ if (!s)
|
||||||
@@ -555,7 +560,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* registers a global c function for the awk interpreter */
|
+/* registers a global c function for the awk interpreter */
|
||||||
+static void register_cfunc(char *name, awk_cfunc cfunc, int nargs)
|
+static void register_cfunc(const char *name, awk_cfunc cfunc, int nargs)
|
||||||
+{
|
+{
|
||||||
+ func *f;
|
+ func *f;
|
||||||
+
|
+
|
||||||
@@ -573,7 +578,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ setvar_u(findvar(formvar, name), value);
|
+ setvar_u(findvar(formvar, name), value);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static char *cgi_getvar(char *name)
|
+static const char *cgi_getvar(const char *name)
|
||||||
+{
|
+{
|
||||||
+ if (!formvar) {
|
+ if (!formvar) {
|
||||||
+ formvar = hash_init();
|
+ formvar = hash_init();
|
||||||
@@ -589,8 +594,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+/* function call for accessing cgi form variables */
|
+/* function call for accessing cgi form variables */
|
||||||
+static var *getvar(var *res, var *args, int nargs)
|
+static var *getvar(var *res, var *args, int nargs)
|
||||||
+{
|
+{
|
||||||
+ char *s;
|
+ const char *s, *svar;
|
||||||
+ char *svar;
|
|
||||||
+
|
+
|
||||||
+ s = getvar_s(args);
|
+ s = getvar_s(args);
|
||||||
+ if (!s)
|
+ if (!s)
|
||||||
@@ -608,7 +612,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+/* call an awk function without arguments by string reference */
|
+/* call an awk function without arguments by string reference */
|
||||||
+static var *call(var *res, var *args, int nargs)
|
+static var *call(var *res, var *args, int nargs)
|
||||||
+{
|
+{
|
||||||
+ char *s = getvar_s(args);
|
+ const char *s = getvar_s(args);
|
||||||
+ func *f;
|
+ func *f;
|
||||||
+
|
+
|
||||||
+ if (!s)
|
+ if (!s)
|
||||||
@@ -629,10 +633,10 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ char *tmp, *s = NULL;
|
+ char *tmp, *s = NULL;
|
||||||
+
|
+
|
||||||
+ zero_out_var(&tv);
|
+ zero_out_var(&tv);
|
||||||
+ programname = name;
|
+ g_progname = name;
|
||||||
+
|
+
|
||||||
+ /* read the main controller source */
|
+ /* read the main controller source */
|
||||||
+ s = get_file(programname);
|
+ s = get_file(g_progname);
|
||||||
+ if (!s) {
|
+ if (!s) {
|
||||||
+ fprintf(stderr, "Could not open file\n");
|
+ fprintf(stderr, "Could not open file\n");
|
||||||
+ return 1;
|
+ return 1;
|
||||||
@@ -650,7 +654,7 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+
|
+
|
||||||
+ action = newvar("ACTION");
|
+ action = newvar("ACTION");
|
||||||
+ if (!(strlen(getvar_s(action)) > 0)) {
|
+ if (!(strlen(getvar_s(action)) > 0)) {
|
||||||
+ tmp = cgi_getvar("action");
|
+ tmp = (char *) cgi_getvar("action");
|
||||||
+ if (!tmp || (strlen(tmp) <= 0))
|
+ if (!tmp || (strlen(tmp) <= 0))
|
||||||
+ tmp = strdup("default");
|
+ tmp = strdup("default");
|
||||||
+
|
+
|
||||||
@@ -694,21 +698,21 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
+
|
||||||
+ /* fill in ARGV array */
|
+ /* fill in ARGV array */
|
||||||
+ setvar_i(V[ARGC], argc + 1);
|
+ setvar_i(intvar[ARGC], argc + 1);
|
||||||
+ setari_u(V[ARGV], 0, "awx");
|
+ setari_u(intvar[ARGV], 0, "awx");
|
||||||
+ i = 0;
|
+ i = 0;
|
||||||
+ while (*args)
|
+ while (*args)
|
||||||
+ setari_u(V[ARGV], ++i, *args++);
|
+ setari_u(intvar[ARGV], ++i, *args++);
|
||||||
+
|
+
|
||||||
+ while((c = getopt(argc, argv, "i:f:")) != EOF) {
|
+ while((c = getopt(argc, argv, "i:f:")) != EOF) {
|
||||||
+ switch(c) {
|
+ switch(c) {
|
||||||
+ case 'i':
|
+ case 'i':
|
||||||
+ programname = optarg;
|
+ g_progname = optarg;
|
||||||
+ include_file(optarg);
|
+ include_file(optarg);
|
||||||
+ break;
|
+ break;
|
||||||
+ case 'f':
|
+ case 'f':
|
||||||
+ ret = 0;
|
+ ret = 0;
|
||||||
+ programname = optarg;
|
+ g_progname = optarg;
|
||||||
+ render_file(optarg);
|
+ render_file(optarg);
|
||||||
+ goto done;
|
+ goto done;
|
||||||
+ }
|
+ }
|
||||||
@@ -734,10 +738,10 @@ Index: busybox-1.4.2/editors/awx.c
|
|||||||
+ return awk_main(argc, argv);
|
+ return awk_main(argc, argv);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
Index: busybox-1.4.2/editors/awx_parser.h
|
Index: busybox-1.7.2/editors/awx_parser.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/editors/awx_parser.h 2007-06-04 13:21:37.928210704 +0200
|
+++ busybox-1.7.2/editors/awx_parser.h 2007-10-05 01:43:59.487506840 +0200
|
||||||
@@ -0,0 +1,38 @@
|
@@ -0,0 +1,38 @@
|
||||||
+#ifndef __TEMPLATE_PARSER_H
|
+#ifndef __TEMPLATE_PARSER_H
|
||||||
+#define __TEMPLATE_PARSER_H
|
+#define __TEMPLATE_PARSER_H
|
||||||
@@ -777,10 +781,10 @@ Index: busybox-1.4.2/editors/awx_parser.h
|
|||||||
+void free_template(struct template_cb *cb, struct template_element *e);
|
+void free_template(struct template_cb *cb, struct template_element *e);
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
Index: busybox-1.4.2/editors/awx_parser.l
|
Index: busybox-1.7.2/editors/awx_parser.l
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/editors/awx_parser.l 2007-06-04 13:21:37.929210552 +0200
|
+++ busybox-1.7.2/editors/awx_parser.l 2007-10-05 01:43:59.547510259 +0200
|
||||||
@@ -0,0 +1,302 @@
|
@@ -0,0 +1,302 @@
|
||||||
+%{
|
+%{
|
||||||
+#include <stdio.h>
|
+#include <stdio.h>
|
||||||
@@ -1084,10 +1088,10 @@ Index: busybox-1.4.2/editors/awx_parser.l
|
|||||||
+ free(e);
|
+ free(e);
|
||||||
+ return free_template(cb, next);
|
+ return free_template(cb, next);
|
||||||
+}
|
+}
|
||||||
Index: busybox-1.4.2/editors/Config.in
|
Index: busybox-1.7.2/editors/Config.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/editors/Config.in 2007-06-04 13:21:31.486190040 +0200
|
--- busybox-1.7.2.orig/editors/Config.in 2007-10-05 01:39:50.097294897 +0200
|
||||||
+++ busybox-1.4.2/editors/Config.in 2007-06-04 13:21:37.929210552 +0200
|
+++ busybox-1.7.2/editors/Config.in 2007-10-05 01:43:59.583512308 +0200
|
||||||
@@ -12,6 +12,13 @@
|
@@ -12,6 +12,13 @@
|
||||||
Awk is used as a pattern scanning and processing language. This is
|
Awk is used as a pattern scanning and processing language. This is
|
||||||
the BusyBox implementation of that programming language.
|
the BusyBox implementation of that programming language.
|
||||||
@@ -1102,11 +1106,11 @@ Index: busybox-1.4.2/editors/Config.in
|
|||||||
config FEATURE_AWK_MATH
|
config FEATURE_AWK_MATH
|
||||||
bool "Enable math functions (requires libm)"
|
bool "Enable math functions (requires libm)"
|
||||||
default y
|
default y
|
||||||
Index: busybox-1.4.2/editors/Kbuild
|
Index: busybox-1.7.2/editors/Kbuild
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/editors/Kbuild 2007-06-04 13:21:31.492189128 +0200
|
--- busybox-1.7.2.orig/editors/Kbuild 2007-10-05 01:39:50.105295361 +0200
|
||||||
+++ busybox-1.4.2/editors/Kbuild 2007-06-04 13:21:37.929210552 +0200
|
+++ busybox-1.7.2/editors/Kbuild 2007-10-05 01:43:59.627514818 +0200
|
||||||
@@ -10,3 +10,12 @@
|
@@ -12,3 +12,12 @@
|
||||||
lib-$(CONFIG_PATCH) += patch.o
|
lib-$(CONFIG_PATCH) += patch.o
|
||||||
lib-$(CONFIG_SED) += sed.o
|
lib-$(CONFIG_SED) += sed.o
|
||||||
lib-$(CONFIG_VI) += vi.o
|
lib-$(CONFIG_VI) += vi.o
|
||||||
@@ -1119,22 +1123,22 @@ Index: busybox-1.4.2/editors/Kbuild
|
|||||||
+editors/awx_parser.o: editors/awx_parser.c FORCE
|
+editors/awx_parser.o: editors/awx_parser.c FORCE
|
||||||
+ $(call cmd,force_checksrc)
|
+ $(call cmd,force_checksrc)
|
||||||
+ $(call if_changed_rule,cc_o_c)
|
+ $(call if_changed_rule,cc_o_c)
|
||||||
Index: busybox-1.4.2/include/applets.h
|
Index: busybox-1.7.2/include/applets.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/include/applets.h 2007-06-04 13:21:36.732392496 +0200
|
--- busybox-1.7.2.orig/include/applets.h 2007-10-05 01:43:59.203490652 +0200
|
||||||
+++ busybox-1.4.2/include/applets.h 2007-06-04 13:21:37.929210552 +0200
|
+++ busybox-1.7.2/include/applets.h 2007-10-05 01:43:59.647515958 +0200
|
||||||
@@ -60,6 +60,7 @@
|
@@ -76,6 +76,7 @@
|
||||||
USE_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
USE_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||||
USE_ASH(APPLET_NOUSAGE(ash, ash, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_ASH(APPLET_NOUSAGE(ash, ash, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
USE_AWK(APPLET(awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
USE_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awk))
|
||||||
+USE_AWX(APPLET_NOUSAGE(awx, awx, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
+USE_AWX(APPLET_NOUSAGE(awx, awx, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||||
USE_BASENAME(APPLET(basename, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
USE_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_NEVER, basename))
|
||||||
USE_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
//USE_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
|
//USE_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
Index: busybox-1.4.2/include/cgi.h
|
Index: busybox-1.7.2/include/cgi.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/include/cgi.h 2007-06-04 13:21:37.929210552 +0200
|
+++ busybox-1.7.2/include/cgi.h 2007-10-05 01:43:59.667517098 +0200
|
||||||
@@ -0,0 +1,8 @@
|
@@ -0,0 +1,8 @@
|
||||||
+#ifndef CGI_H
|
+#ifndef CGI_H
|
||||||
+#define CGI_H
|
+#define CGI_H
|
||||||
@@ -1144,10 +1148,10 @@ Index: busybox-1.4.2/include/cgi.h
|
|||||||
+int cgi_init(var_handler);
|
+int cgi_init(var_handler);
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
Index: busybox-1.4.2/libbb/cgi.c
|
Index: busybox-1.7.2/libbb/cgi.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ busybox-1.4.2/libbb/cgi.c 2007-06-04 13:21:37.930210400 +0200
|
+++ busybox-1.7.2/libbb/cgi.c 2007-10-05 01:43:59.707519378 +0200
|
||||||
@@ -0,0 +1,457 @@
|
@@ -0,0 +1,457 @@
|
||||||
+/* --------------------------------------------------------------------------
|
+/* --------------------------------------------------------------------------
|
||||||
+ * functions for processing cgi form data
|
+ * functions for processing cgi form data
|
||||||
@@ -1606,14 +1610,15 @@ Index: busybox-1.4.2/libbb/cgi.c
|
|||||||
+
|
+
|
||||||
+ return retval;
|
+ return retval;
|
||||||
+}
|
+}
|
||||||
Index: busybox-1.4.2/libbb/Kbuild
|
Index: busybox-1.7.2/libbb/Kbuild
|
||||||
===================================================================
|
===================================================================
|
||||||
--- busybox-1.4.2.orig/libbb/Kbuild 2007-06-04 13:21:37.710243840 +0200
|
--- busybox-1.7.2.orig/libbb/Kbuild 2007-10-05 01:43:59.387501141 +0200
|
||||||
+++ busybox-1.4.2/libbb/Kbuild 2007-06-04 13:21:37.930210400 +0200
|
+++ busybox-1.7.2/libbb/Kbuild 2007-10-05 01:43:59.751521884 +0200
|
||||||
@@ -118,3 +118,6 @@
|
@@ -99,6 +99,7 @@
|
||||||
lib-$(CONFIG_MDEV) += xregcomp.o
|
lib-y += xreadlink.o
|
||||||
lib-$(CONFIG_LESS) += xregcomp.o
|
|
||||||
lib-$(CONFIG_DEVFSD) += xregcomp.o
|
# conditionally compiled objects:
|
||||||
+
|
|
||||||
+lib-$(CONFIG_AWX) += cgi.o
|
+lib-$(CONFIG_AWX) += cgi.o
|
||||||
+
|
lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o
|
||||||
|
lib-$(CONFIG_LOSETUP) += loop.o
|
||||||
|
lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
--- busybox/modutils/insmod.c 2007-05-11 12:10:43.000000000 +0200
|
|
||||||
+++ busybox/modutils/insmod.c 2007-05-11 12:12:15.000000000 +0200
|
|
||||||
@@ -75,6 +75,30 @@
|
|
||||||
extern int insmod_ng_main( int argc, char **argv);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+static char *m_filename;
|
|
||||||
+static char *m_fullName;
|
|
||||||
+#define _PATH_MODULES "/lib/modules"
|
|
||||||
+
|
|
||||||
+static int check_module_name_match(const char *filename, struct stat *statbuf,
|
|
||||||
+ void *userdata, int depth)
|
|
||||||
+{
|
|
||||||
+ char *fullname = (char *) userdata;
|
|
||||||
+
|
|
||||||
+ if (fullname[0] == '\0')
|
|
||||||
+ return FALSE;
|
|
||||||
+ else {
|
|
||||||
+ char *tmp, *tmp1 = xstrdup(filename);
|
|
||||||
+ tmp = bb_get_last_path_component(tmp1);
|
|
||||||
+ if (strcmp(tmp, fullname) == 0) {
|
|
||||||
+ free(tmp1);
|
|
||||||
+ /* Stop searching if we find a match */
|
|
||||||
+ m_filename = xstrdup(filename);
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+ free(tmp1);
|
|
||||||
+ }
|
|
||||||
+ return TRUE;
|
|
||||||
+}
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_2_4_MODULES
|
|
||||||
|
|
||||||
@@ -680,7 +704,6 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
-#define _PATH_MODULES "/lib/modules"
|
|
||||||
enum { STRVERSIONLEN = 64 };
|
|
||||||
|
|
||||||
/*======================================================================*/
|
|
||||||
@@ -793,37 +816,6 @@
|
|
||||||
static int n_ext_modules_used;
|
|
||||||
extern int delete_module(const char *);
|
|
||||||
|
|
||||||
-static char *m_filename;
|
|
||||||
-static char *m_fullName;
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-/*======================================================================*/
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-static int check_module_name_match(const char *filename, struct stat *statbuf,
|
|
||||||
- void *userdata, int depth)
|
|
||||||
-{
|
|
||||||
- char *fullname = (char *) userdata;
|
|
||||||
-
|
|
||||||
- if (fullname[0] == '\0')
|
|
||||||
- return FALSE;
|
|
||||||
- else {
|
|
||||||
- char *tmp, *tmp1 = xstrdup(filename);
|
|
||||||
- tmp = bb_get_last_path_component(tmp1);
|
|
||||||
- if (strcmp(tmp, fullname) == 0) {
|
|
||||||
- free(tmp1);
|
|
||||||
- /* Stop searching if we find a match */
|
|
||||||
- m_filename = xstrdup(filename);
|
|
||||||
- return FALSE;
|
|
||||||
- }
|
|
||||||
- free(tmp1);
|
|
||||||
- }
|
|
||||||
- return TRUE;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-/*======================================================================*/
|
|
||||||
-
|
|
||||||
static struct obj_file *arch_new_file(void)
|
|
||||||
{
|
|
||||||
struct arch_file *f;
|
|
||||||
@@ -4265,14 +4257,97 @@
|
|
||||||
long ret;
|
|
||||||
size_t len;
|
|
||||||
void *map;
|
|
||||||
- char *filename, *options;
|
|
||||||
+ char *options, *tmp;
|
|
||||||
+ struct stat st;
|
|
||||||
+#if ENABLE_FEATURE_CLEAN_UP
|
|
||||||
+ FILE *fp = 0;
|
|
||||||
+#else
|
|
||||||
+ FILE *fp;
|
|
||||||
+#endif
|
|
||||||
+ int k_version = 0;
|
|
||||||
+ struct utsname myuname;
|
|
||||||
|
|
||||||
- filename = *++argv;
|
|
||||||
- if (!filename)
|
|
||||||
+ if (argc < 2)
|
|
||||||
bb_show_usage();
|
|
||||||
|
|
||||||
+#if !ENABLE_FEATURE_2_4_MODULES
|
|
||||||
+ /* Grab the module name */
|
|
||||||
+ tmp = basename(xstrdup(argv[1]));
|
|
||||||
+ len = strlen(tmp);
|
|
||||||
+
|
|
||||||
+ if (uname(&myuname) == 0) {
|
|
||||||
+ if (myuname.release[0] == '2') {
|
|
||||||
+ k_version = myuname.release[2] - '0';
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (len > 3 && tmp[len - 3] == '.' && tmp[len - 2] == 'k' && tmp[len - 1] == 'o') {
|
|
||||||
+ len -= 3;
|
|
||||||
+ tmp[len] = '\0';
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ m_fullName = xasprintf("%s.ko", tmp);
|
|
||||||
+
|
|
||||||
+ /* Get a filedesc for the module. Check we we have a complete path */
|
|
||||||
+ if (stat(argv[1], &st) < 0 || !S_ISREG(st.st_mode)
|
|
||||||
+ || (fp = fopen(argv[1], "r")) == 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... */
|
|
||||||
+ if (k_version) { /* uname succeedd */
|
|
||||||
+ char *module_dir;
|
|
||||||
+ char *tmdn;
|
|
||||||
+ char real_module_dir[FILENAME_MAX];
|
|
||||||
+
|
|
||||||
+ tmdn = concat_path_file(_PATH_MODULES, myuname.release);
|
|
||||||
+ /* Jump through hoops in case /lib/modules/`uname -r`
|
|
||||||
+ * is a symlink. We do not want recursive_action to
|
|
||||||
+ * follow symlinks, but we do want to follow the
|
|
||||||
+ * /lib/modules/`uname -r` dir, So resolve it ourselves
|
|
||||||
+ * if it is a link... */
|
|
||||||
+ if (realpath(tmdn, real_module_dir) == NULL)
|
|
||||||
+ module_dir = tmdn;
|
|
||||||
+ else
|
|
||||||
+ module_dir = real_module_dir;
|
|
||||||
+ recursive_action(module_dir, TRUE, FALSE, FALSE,
|
|
||||||
+ check_module_name_match, 0, m_fullName, 0);
|
|
||||||
+ free(tmdn);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Check if we have found anything yet */
|
|
||||||
+ if (m_filename == 0 || ((fp = fopen(m_filename, "r")) == NULL)) {
|
|
||||||
+ char module_dir[FILENAME_MAX];
|
|
||||||
+
|
|
||||||
+ free(m_filename);
|
|
||||||
+ m_filename = 0;
|
|
||||||
+ if (realpath (_PATH_MODULES, module_dir) == NULL)
|
|
||||||
+ strcpy(module_dir, _PATH_MODULES);
|
|
||||||
+ /* No module found under /lib/modules/`uname -r`, this
|
|
||||||
+ * time cast the net a bit wider. Search /lib/modules/ */
|
|
||||||
+ if (!recursive_action(module_dir, TRUE, FALSE, FALSE,
|
|
||||||
+ check_module_name_match, 0, m_fullName, 0)
|
|
||||||
+ ) {
|
|
||||||
+ if (m_filename == 0
|
|
||||||
+ || ((fp = fopen(m_filename, "r")) == NULL)
|
|
||||||
+ ) {
|
|
||||||
+ bb_error_msg("%s: no module by that name found", m_fullName);
|
|
||||||
+#if ENABLE_FEATURE_CLEAN_UP
|
|
||||||
+ if(fp)
|
|
||||||
+ fclose(fp);
|
|
||||||
+ free(m_filename);
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+ } else
|
|
||||||
+ bb_error_msg_and_die("%s: no module by that name found", m_fullName);
|
|
||||||
+ }
|
|
||||||
+ } else
|
|
||||||
+ m_filename = xstrdup(argv[1]);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* Rest is options */
|
|
||||||
options = xstrdup("");
|
|
||||||
+ argv++;
|
|
||||||
while (*++argv) {
|
|
||||||
int optlen = strlen(options);
|
|
||||||
options = xrealloc(options, optlen + 2 + strlen(*argv) + 2);
|
|
||||||
@@ -4300,13 +4375,13 @@
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
len = MAXINT(ssize_t);
|
|
||||||
- map = xmalloc_open_read_close(filename, &len);
|
|
||||||
+ map = xmalloc_open_read_close(m_filename, &len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = syscall(__NR_init_module, map, len, options);
|
|
||||||
if (ret != 0) {
|
|
||||||
bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
|
|
||||||
- filename, moderror(errno), ret);
|
|
||||||
+ m_filename, moderror(errno), ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
Reference in New Issue
Block a user