upgrade busybox to v1.11.1 and add current upstream fixes

SVN-Revision: 12348
master
Imre Kaloz 16 years ago
parent e3d9bc5779
commit 1e82faaa5e
  1. 4
      package/busybox/Makefile
  2. 90
      package/busybox/config/Config.in
  3. 78
      package/busybox/config/archival/Config.in
  4. 2
      package/busybox/config/console-tools/Config.in
  5. 27
      package/busybox/config/coreutils/Config.in
  6. 59
      package/busybox/config/e2fsprogs/Config.in
  7. 17
      package/busybox/config/editors/Config.in
  8. 24
      package/busybox/config/findutils/Config.in
  9. 37
      package/busybox/config/init/Config.in
  10. 42
      package/busybox/config/libbb/Config.in
  11. 108
      package/busybox/config/loginutils/Config.in
  12. 153
      package/busybox/config/miscutils/Config.in
  13. 72
      package/busybox/config/modutils/Config.in
  14. 154
      package/busybox/config/networking/Config.in
  15. 82
      package/busybox/config/networking/udhcp/Config.in
  16. 21
      package/busybox/config/printutils/Config.in
  17. 15
      package/busybox/config/procps/Config.in
  18. 7
      package/busybox/config/selinux/Config.in
  19. 58
      package/busybox/config/shell/Config.in
  20. 12
      package/busybox/config/sysklogd/Config.in
  21. 318
      package/busybox/config/util-linux/Config.in
  22. 25
      package/busybox/patches/000-autoconf.patch
  23. 20
      package/busybox/patches/001-init_avoid_loop_opening_tty.patch
  24. 10
      package/busybox/patches/110-wget_getopt_fix.patch
  25. 6
      package/busybox/patches/140-trylink_bash.patch
  26. 20
      package/busybox/patches/200-etc_crontabs.patch
  27. 26
      package/busybox/patches/240-udhcpc_retries.patch
  28. 94
      package/busybox/patches/241-udhcpc-oversized_packets.patch
  29. 20
      package/busybox/patches/242-udhcpc_msgs.patch
  30. 12
      package/busybox/patches/243-udhcpc_changed_ifindex.patch
  31. 17
      package/busybox/patches/250-ash_export-n.patch
  32. 50
      package/busybox/patches/300-netmsg.patch
  33. 45
      package/busybox/patches/310-passwd_access.patch
  34. 50
      package/busybox/patches/340-lock_util.patch
  35. 58
      package/busybox/patches/350-httpd_redir.patch
  36. 72
      package/busybox/patches/360-awk_multi_f.patch
  37. 39
      package/busybox/patches/401-darwin_includes.patch
  38. 10
      package/busybox/patches/410-httpd_cgi_headers.patch
  39. 12
      package/busybox/patches/430-uniq_memleak.patch
  40. 12
      package/busybox/patches/440-httpd_chdir.patch
  41. 12
      package/busybox/patches/450-usage_compressed_fix.patch
  42. 10
      package/busybox/patches/460-truncated_ping_results.patch
  43. 320
      package/busybox/patches/470-insmod_search.patch
  44. 40
      package/busybox/patches/480-disable_braindead_optimization.patch
  45. 486
      package/busybox/patches/500-ipkg.patch
  46. 88
      package/busybox/patches/501-libbb_hash.patch
  47. 103
      package/busybox/patches/510-awx.patch
  48. 18
      package/busybox/patches/520-ipkg_secure.patch
  49. 6
      package/busybox/patches/521-ipkg_upgrade_env.patch
  50. 31
      package/busybox/patches/523-conffiles_fix.patch
  51. 28
      package/busybox/patches/524-memory_usage.patch
  52. 10
      package/busybox/patches/524-udhcpc_renew.patch
  53. 5
      package/busybox/patches/525-clean_temp.patch
  54. 43
      package/busybox/patches/526-ipkg_fix_pkg_comparison.patch
  55. 9
      package/busybox/patches/901-basename.patch
  56. 55
      package/busybox/patches/902-tar.patch
  57. 155
      package/busybox/patches/903-ash.patch
  58. 28
      package/busybox/patches/904-build.patch

@ -9,13 +9,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.8.2
PKG_VERSION:=1.11.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
http://distfiles.gentoo.org/distfiles/
PKG_MD5SUM:=5794c6187c7cc8176c52b96af9bf2478
PKG_MD5SUM:=c64bbb5c0c3e19f12892941a0ae86c48
include $(INCLUDE_DIR)/package.mk

@ -12,22 +12,6 @@ menu "Busybox Settings"
menu "General Configuration"
config BUSYBOX_CONFIG_NITPICK
bool "See lots more (probably unnecessary) configuration options."
default n
help
Some BusyBox applets have more configuration options than anyone
will ever care about. To avoid drowining people in complexity, most
of the applet features that can be set to a sane default value are
hidden, unless you hit the above switch.
This is better than to telling people to edit the busybox source
code, but not by much.
See http://en.wikipedia.org/wiki/Fibber_McGee_and_Molly#The_Closet
You have been warned.
config BUSYBOX_CONFIG_DESKTOP
bool "Enable options for full-blown desktop systems"
default n
@ -36,10 +20,21 @@ config BUSYBOX_CONFIG_DESKTOP
Select this only if you plan to use busybox on full-blown
desktop machine with common Linux distro, not on an embedded box.
config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
bool "Assume that 1:1 char/glyph correspondence is not true"
default n
help
This makes various applets aware that one byte is not
one character on screen.
Busybox aims to eventually work correctly with Unicode displays.
Any older encodings are not guaranteed to work.
Probably by the time when busybox will be fully Unicode-clean,
other encodings will be mainly of historic interest.
choice
prompt "Buffer allocation policy"
default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
depends on BUSYBOX_CONFIG_NITPICK
help
There are 3 ways BusyBox can handle buffer allocations:
- Use malloc. This costs code size for the call to xmalloc.
@ -110,7 +105,7 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT
busybox to support locale settings.
config BUSYBOX_CONFIG_GETOPT_LONG
bool "Enable support for --long-options"
bool "Support for --long-options"
default y
help
Enable this if you want busybox applets to use the gnu --long-option
@ -129,7 +124,6 @@ config BUSYBOX_CONFIG_FEATURE_DEVPTS
config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
bool "Clean up all memory before exiting (usually not needed)"
default n
depends on BUSYBOX_CONFIG_NITPICK
help
As a size optimization, busybox normally exits without explicitly
freeing dynamically allocated memory or closing files. This saves
@ -279,10 +273,31 @@ config BUSYBOX_CONFIG_STATIC
Most people will leave this set to 'N'.
config BUSYBOX_CONFIG_PIE
bool "Build BusyBox as a position independent executable"
default n
depends on !BUSYBOX_CONFIG_STATIC
help
(TODO: what is it and why/when is it useful?)
Most people will leave this set to 'N'.
config BUSYBOX_CONFIG_NOMMU
bool "Force NOMMU build"
default n
help
Busybox tries to detect whether architecture it is being
built against supports MMU or not. If this detection fails,
or if you want to build NOMMU version of busybox for testing,
you may force NOMMU build here.
Most people will leave this set to 'N'.
# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
# build system does not support that
config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
bool "Build shared libbusybox"
default n
depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS && !BUSYBOX_CONFIG_PIE && !BUSYBOX_CONFIG_STATIC
help
Build a shared library libbusybox.so.N.N.N which contains all
busybox code.
@ -369,6 +384,16 @@ config BUSYBOX_CONFIG_LFS
cp, mount, tar, and many others. If you want to access files larger
than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX
string "Cross Compiler prefix"
default ""
help
If you want to build BusyBox with a cross compiler, then you
will need to set this to the cross-compiler prefix, for example,
"i386-uclibc-". Note that CROSS_COMPILE environment variable
or "make CROSS_COMPILE=xxx ..." will override this selection.
For native build leave it empty.
endmenu
menu 'Debugging Options'
@ -384,6 +409,17 @@ config BUSYBOX_CONFIG_DEBUG
Most people should answer N.
config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
bool "Disable compiler optimizations."
default n
depends on BUSYBOX_CONFIG_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.
config BUSYBOX_CONFIG_WERROR
bool "Abort compilation on any warning"
default n
@ -392,18 +428,6 @@ config BUSYBOX_CONFIG_WERROR
Most people should answer N.
# 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
prompt "Additional debugging library"
default BUSYBOX_CONFIG_NO_DEBUG_LIB
@ -554,4 +578,4 @@ source package/busybox/config/shell/Config.in
source package/busybox/config/sysklogd/Config.in
source package/busybox/config/runit/Config.in
source package/busybox/config/selinux/Config.in
source package/busybox/config/ipsvd/Config.in
source package/busybox/config/printutils/Config.in

@ -29,7 +29,7 @@ config BUSYBOX_CONFIG_AR
probably say N here.
config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
bool "Enable support for long filenames (not need for debs)"
bool "Support for long filenames (not need for debs)"
default n
depends on BUSYBOX_CONFIG_AR
help
@ -78,6 +78,14 @@ config BUSYBOX_CONFIG_CPIO
Unless you have a specific application which requires cpio, you should
probably say N here.
config BUSYBOX_CONFIG_FEATURE_CPIO_O
bool "Support for archive creation"
default n
depends on BUSYBOX_CONFIG_CPIO
help
This implementation of cpio can create cpio archives in the "newc"
format only.
config BUSYBOX_CONFIG_DPKG
bool "dpkg"
default n
@ -99,7 +107,7 @@ config BUSYBOX_CONFIG_DPKG_DEB
probably say N here.
config BUSYBOX_CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
bool "extract only (-x)"
bool "Extract only (-x)"
default n
depends on BUSYBOX_CONFIG_DPKG_DEB
help
@ -137,8 +145,6 @@ config BUSYBOX_CONFIG_IPKG
select BUSYBOX_CONFIG_MD5SUM
select BUSYBOX_CONFIG_WGET
select BUSYBOX_CONFIG_DIFF
select BUSYBOX_CONFIG_TAR
select BUSYBOX_CONFIG_GUNZIP
help
ipkg is the itsy package management system.
@ -177,6 +183,14 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
If you enable this option you'll be able to create
tar archives using the `-c' option.
config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
bool "Enable -z option"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option tar will be able to call gzip,
when creating or extracting tar gziped archives.
config BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
bool "Enable -j option to handle .tar.bz2 files"
default y
@ -193,22 +207,6 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LZMA
If you enable this option you'll be able to extract
archives compressed with lzma.
config BUSYBOX_CONFIG_FEATURE_TAR_FROM
bool "Enable -X (exclude from) and -T (include from) options)"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option you'll be able to specify
a list of files to include or exclude from an archive.
config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
bool "Enable -z option"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option tar will be able to call gzip,
when creating or extracting tar gziped archives.
config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
bool "Enable -Z option"
default n
@ -217,8 +215,24 @@ config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
If you enable this option tar will be able to call uncompress,
when extracting .tar.Z archives.
config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
bool "Let tar autodetect gz/bz2 compresses tarballs"
default n
depends on BUSYBOX_CONFIG_FEATURE_TAR_GZIP || BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
help
With this option tar can automatically detect gzip/bzip2 compressed
tarballs. Currently it works only on seekable streams.
config BUSYBOX_CONFIG_FEATURE_TAR_FROM
bool "Enable -X (exclude from) and -T (include from) options)"
default y
depends on BUSYBOX_CONFIG_TAR
help
If you enable this option you'll be able to specify
a list of files to include or exclude from an archive.
config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
bool "Enable support for old tar header format"
bool "Support for old tar header format"
default n
depends on BUSYBOX_CONFIG_TAR
help
@ -236,7 +250,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
It is said to be fixed in newer Sun tar, but "old" tarballs still exist.
config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
bool "Enable support for some GNU tar extensions"
bool "Support for GNU tar extensions (long filenames)"
default y
depends on BUSYBOX_CONFIG_TAR
help
@ -248,7 +262,16 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
default n
depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_GETOPT_LONG
help
Enable use of long options, increases size by about 400 Bytes
Enable use of long options, increases size by about 400 Bytes
config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
bool "Enable use of user and group names"
default n
depends on BUSYBOX_CONFIG_TAR
help
Enables use of user and group names in tar. This affects contents
listings (-t) and preserving permissions when unpacking (-p).
+200 bytes.
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
@ -273,7 +296,7 @@ config BUSYBOX_CONFIG_UNLZMA
should probably say N here.
config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
bool "Optimze unlzma for speed"
bool "Optimize unlzma for speed"
default n
depends on BUSYBOX_CONFIG_UNLZMA
help
@ -293,13 +316,6 @@ config BUSYBOX_CONFIG_UNZIP
comment "Common options for cpio and tar"
depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
config BUSYBOX_CONFIG_FEATURE_UNARCHIVE_TAPE
bool "Enable tape drive support"
default n
depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
help
I don't think this is needed anymore.
comment "Common options for dpkg and dpkg_deb"
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB

@ -72,7 +72,7 @@ config BUSYBOX_CONFIG_RESIZE
terminal.
config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
bool "print environment variables"
bool "Print environment variables"
default n
depends on BUSYBOX_CONFIG_RESIZE
help

@ -135,6 +135,13 @@ config BUSYBOX_CONFIG_DF
df reports the amount of disk space used and available
on filesystems.
config BUSYBOX_CONFIG_FEATURE_DF_INODE
bool "Enable -i (inode information)"
default n
depends on BUSYBOX_CONFIG_DF
help
This option enables support for df -i.
config BUSYBOX_CONFIG_DIRNAME
bool "dirname"
default y
@ -481,6 +488,14 @@ config BUSYBOX_CONFIG_RMDIR
help
rmdir is used to remove empty directories.
config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
bool "Enable long options"
default n
depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_GETOPT_LONG
help
Support long options for the rmdir applet, including
--ignore-fail-on-non-empty for compatibility with GNU rmdir.
config BUSYBOX_CONFIG_SEQ
bool "seq"
default y
@ -513,7 +528,7 @@ config BUSYBOX_CONFIG_SORT
sort is used to sort lines of text in specified files.
config BUSYBOX_CONFIG_FEATURE_SORT_BIG
bool "full SuSv3 compliant sort (Support -ktcsbdfiozgM)"
bool "Full SuSv3 compliant sort (support -ktcsbdfiozgM)"
default n
depends on BUSYBOX_CONFIG_SORT
help
@ -531,7 +546,7 @@ config BUSYBOX_CONFIG_SPLIT
split a file into pieces.
config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
bool "fancy extensions"
bool "Fancy extensions"
default n
depends on BUSYBOX_CONFIG_SPLIT
help
@ -572,6 +587,12 @@ config BUSYBOX_CONFIG_SYNC
help
sync is used to flush filesystem buffers.
config BUSYBOX_CONFIG_TAC
bool "tac"
default n
help
tac is used to concatenate and print files in reverse.
config BUSYBOX_CONFIG_TAIL
bool "tail"
default y
@ -595,7 +616,7 @@ config BUSYBOX_CONFIG_TEE
to standard output and files.
config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
bool "Enable block i/o (larger/faster) instead of byte i/o."
bool "Enable block I/O (larger/faster) instead of byte I/O"
default y
depends on BUSYBOX_CONFIG_TEE
help

@ -12,13 +12,13 @@ config BUSYBOX_CONFIG_CHATTR
chattr changes the file attributes on a second extended file system.
### config E2FSCK
### bool "e2fsck"
### default n
### help
### e2fsck is used to check Linux second extended file systems (ext2fs).
### e2fsck also supports ext2 filesystems countaining a journal (ext3).
### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
### provided.
### bool "e2fsck"
### default n
### help
### e2fsck is used to check Linux second extended file systems (ext2fs).
### e2fsck also supports ext2 filesystems countaining a journal (ext3).
### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
### provided.
config BUSYBOX_CONFIG_FSCK
bool "fsck"
@ -35,33 +35,34 @@ config BUSYBOX_CONFIG_LSATTR
lsattr lists the file attributes on a second extended file system.
### config MKE2FS
### bool "mke2fs"
### default n
### help
### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
### bool "mke2fs"
### default n
### help
### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
### config TUNE2FS
### bool "tune2fs"
### default n
### help
### tune2fs allows the system administrator to adjust various tunable
### filesystem parameters on Linux ext2/ext3 filesystems.
### bool "tune2fs"
### default n
### help
### tune2fs allows the system administrator to adjust various tunable
### filesystem parameters on Linux ext2/ext3 filesystems.
### config E2LABEL
### bool "e2label"
### default n
### depends on TUNE2FS
### help
### e2label will display or change the filesystem label on the ext2
### filesystem located on device.
### bool "e2label"
### default n
### depends on TUNE2FS
### help
### e2label will display or change the filesystem label on the ext2
### filesystem located on device.
### NB: this one is now provided by util-linux/volume_id/*
### config FINDFS
### bool "findfs"
### default n
### depends on TUNE2FS
### help
### findfs will search the disks in the system looking for a filesystem
### which has a label matching label or a UUID equal to uuid.
### bool "findfs"
### default n
### depends on TUNE2FS
### help
### findfs will search the disks in the system looking for a filesystem
### which has a label matching label or a UUID equal to uuid.
endmenu

@ -97,14 +97,23 @@ config BUSYBOX_CONFIG_VI
you may wish to use something else.
config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
int "Maximum line length in vi"
int "Maximum screen width 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.
Contrary to what you may think, this is not eating much.
Make it smaller than 4k only if you are very limited on memory.
config BUSYBOX_CONFIG_FEATURE_VI_8BIT
bool "Allow vi to display 8-bit chars (otherwise shows dots)"
default n
depends on BUSYBOX_CONFIG_VI
help
If your terminal can display characters with high bit set,
you may want to enable this. Note: vi is not Unicode-capable.
If your terminal combines several 8-bit bytes into one character
(as in Unicode mode), this will not work properly.
config BUSYBOX_CONFIG_FEATURE_VI_COLON
bool "Enable \":\" colon commands (no \"ex\" mode)"

@ -22,7 +22,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
interpreted by other programs.
config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
bool "Enable modified time matching (-mtime) option"
bool "Enable modified time matching (-mtime option)"
default n
depends on BUSYBOX_CONFIG_FIND
help
@ -30,7 +30,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
files, in days.
config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
bool "Enable modified time matching (-mmin) option"
bool "Enable modified time matching (-mmin option)"
default n
depends on BUSYBOX_CONFIG_FIND
help
@ -38,14 +38,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
files, in minutes.
config BUSYBOX_CONFIG_FEATURE_FIND_PERM
bool "Enable permissions matching (-perm) option"
bool "Enable permissions matching (-perm option)"
default y
depends on BUSYBOX_CONFIG_FIND
help
Enable searching based on file permissions.
config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
bool "Enable filetype matching (-type) option"
bool "Enable filetype matching (-type option)"
default y
depends on BUSYBOX_CONFIG_FIND
help
@ -53,7 +53,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
directory, socket, device, etc.).
config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
bool "Enable stay in filesystem (-xdev) option"
bool "Enable 'stay in filesystem' option (-xdev)"
default y
depends on BUSYBOX_CONFIG_FIND
help
@ -75,14 +75,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
a modified time that is more recent than the specified FILE.
config BUSYBOX_CONFIG_FEATURE_FIND_INUM
bool "Enable inode number matching (-inum) option"
bool "Enable inode number matching (-inum option)"
default n
depends on BUSYBOX_CONFIG_FIND
help
Support the 'find -inum' option for searching by inode number.
config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
bool "Enable (-exec) option allowing execution of commands"
bool "Enable -exec option allowing execution of commands"
default y
depends on BUSYBOX_CONFIG_FIND
help
@ -90,14 +90,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
the files matched.
config BUSYBOX_CONFIG_FEATURE_FIND_USER
bool "Enable username/uid matching (-user) option"
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"
bool "Enable group/gid matching (-group option)"
default y
depends on BUSYBOX_CONFIG_FIND
help
@ -127,14 +127,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
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"
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"
bool "Enable -prune option allowing to exclude subdirectories"
default y
depends on BUSYBOX_CONFIG_FIND
help
@ -165,7 +165,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
The -regex option matches whole pathname against regular expression.
config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
bool "Enable (-context) option for matching security context"
bool "Enable -context option for matching security context"
default n
depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
help

@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_INIT
init is the first program run when the system boots.
config BUSYBOX_CONFIG_DEBUG_INIT
bool "debugging aid"
bool "Debugging aid"
default n
depends on BUSYBOX_CONFIG_INIT
help
@ -27,16 +27,39 @@ config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
help
Allow init to read an inittab file when the system boot.
config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
bool "Support killing processes that have been removed from inittab"
default n
depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB
help
When respawn entries are removed from inittab and a SIGHUP is
sent to init, this feature will kill the processes that have
been removed.
config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
range 0 1024
default 0
help
With nonzero setting, init sends TERM, forks, child waits N
seconds, sends KILL and exits. Setting it too high is unwise
(child will hang around for too long and can actually kill
wrong process!)
config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
bool "Support running commands with a controlling-tty"
bool "Run commands with leading dash with controlling tty"
default n
depends on BUSYBOX_CONFIG_INIT
help
If this option is enabled a command starting with hyphen (-)
is run in its own session (setsid(2)) and possibly with a
controlling tty (TIOCSCTTY). This is not the traditional init
behavour, but is often what you want in an embedded system where
the console is only accessed during development or for maintenance.
If this option is enabled, init will try to give a controlling
tty to any command which has leading hyphen (often it's "-/bin/sh").
More precisely, init will do "ioctl(STDIN_FILENO, TIOCSCTTY, 0)".
If device attached to STDIN_FILENO can be a ctty but is not yet
a ctty for other session, it will become this process' ctty.
This is not the traditional init behavour, but is often what you want
in an embedded system where the console is only accessed during
development or for maintenance.
NB: using cttyhack applet may work better.
config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
bool "Enable init to write to syslog"

@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_PASSWORD_MINLEN
Minimum allowable password length.
config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
int " MD5: Trade Bytes for Speed"
int "MD5: Trade Bytes for Speed"
default 2
range 0 3
help
@ -57,14 +57,6 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
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
@ -110,6 +102,31 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
Setting this option allows for prompts to use things like \w and
\$ and escape codes.
config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
bool "Give more precise messages when copy fails (cp, mv etc)"
default n
help
Error messages with this feature enabled:
$ cp file /does_not_exist/file
cp: cannot create '/does_not_exist/file': Path does not exist
$ cp file /vmlinuz/file
cp: cannot stat '/vmlinuz/file': Path has non-directory component
If this feature is not enabled, they will be, respectively:
cp: cannot remove '/does_not_exist/file': No such file or directory
cp: cannot stat '/vmlinuz/file': Not a directory
respectively.
This will cost you ~60 bytes.
config BUSYBOX_CONFIG_FEATURE_COPYBUF_KB
int "Copy buffer size, in kilobytes"
range 1 1024
default 4
help
Size of buffer used by cp, mv, install etc.
Buffers which are 4 kb or less will be allocated on stack.
Bigger buffers will be allocated with mmap, with fallback to 4 kb
stack buffer if mmap fails.
config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
default n
@ -127,4 +144,11 @@ config BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR
Use ioctl names rather than hex values in error messages
(e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
saves about 1400 bytes.
config BUSYBOX_CONFIG_FEATURE_HWIB
bool "Support infiniband HW"
default n
help
Support for printing infiniband addresses in
network applets.
endmenu

@ -13,45 +13,71 @@ config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
readable by root and thus the encrypted passwords are no longer
publicly readable.
config BUSYBOX_CONFIG_USE_BB_PWD_GRP
bool "Use internal password and group functions rather than system functions"
default n
help
If you leave this disabled, busybox will use the system's password
and group functions. And if you are using the GNU C library
(glibc), you will then need to install the /etc/nsswitch.conf
configuration file and the required /lib/libnss_* libraries in
order for the password and group functions to work. This generally
makes your embedded system quite a bit larger.
Enabling this option will cause busybox to directly access the
system's /etc/password, /etc/group files (and your system will be
smaller, and I will get fewer emails asking about how glibc NSS
works). When this option is enabled, you will not be able to use
PAM to access remote LDAP password servers and whatnot. And if you
want hostname resolution to work with glibc, you still need the
/lib/libnss_* libraries.
If you need to use glibc's nsswitch.conf mechanism
(e.g. if user/group database is NOT stored in /etc/passwd etc),
you must NOT use this option.
If you enable this option, it will add about 1.5k.
config BUSYBOX_CONFIG_USE_BB_SHADOW
bool " Use busybox shadow password functions"
bool "Use internal shadow password functions"
default n
depends on BUSYBOX_CONFIG_USE_BB_PWD_GRP && BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
help
If you leave this disabled, busybox will use the system's shadow
password handling functions. And if you are using the GNU C library
(glibc), you will then need to install the /etc/nsswitch.conf
configuration file and the required /lib/libnss_* libraries in
order for the shadow password functions to work. This generally
makes your embedded system quite a bit larger.
Enabling this option will cause busybox to directly access the
system's /etc/shadow file when handling shadow passwords. This
makes your system smaller and I will get fewer emails asking about
how glibc NSS works). When this option is enabled, you will not be
able to use PAM to access shadow passwords from remote LDAP
password servers and whatnot.
config BUSYBOX_CONFIG_USE_BB_PWD_GRP
bool "Use internal password and group functions rather than system functions"
If you leave this disabled, busybox will use the system's shadow
password handling functions. And if you are using the GNU C library
(glibc), you will then need to install the /etc/nsswitch.conf
configuration file and the required /lib/libnss_* libraries in
order for the shadow password functions to work. This generally
makes your embedded system quite a bit larger.
Enabling this option will cause busybox to directly access the
system's /etc/shadow file when handling shadow passwords. This
makes your system smaller (and I will get fewer emails asking about
how glibc NSS works). When this option is enabled, you will not be
able to use PAM to access shadow passwords from remote LDAP
password servers and whatnot.
config BUSYBOX_CONFIG_USE_BB_CRYPT
bool "Use internal DES and MD5 crypt functions"
default n
help
If you leave this disabled, busybox will use the system's password
and group functions. And if you are using the GNU C library
(glibc), you will then need to install the /etc/nsswitch.conf
configuration file and the required /lib/libnss_* libraries in
order for the password and group functions to work. This generally
makes your embedded system quite a bit larger.
Busybox has internal DES and MD5 crypt functions.
They produce results which are identical to corresponding
standard C library functions.
Enabling this option will cause busybox to directly access the
system's /etc/password, /etc/group files (and your system will be
smaller, and I will get fewer emails asking about how glibc NSS
works). When this option is enabled, you will not be able to use
PAM to access remote LDAP password servers and whatnot. And if you
want hostname resolution to work with glibc, you still need the
/lib/libnss_* libraries.
If you leave this disabled, busybox will use the system's
crypt functions. Most C libraries use large (~70k)
static buffers there, and also combine them with more general
DES encryption/decryption.
If you enable this option, it will add about 1.5k to busybox.
For busybox, having large static buffers is undesirable,
especially on NOMMU machines. Busybox also doesn't need
DES encryption/decryption and can do with smaller code.
If you enable this option, it will add about 4.8k of code
if you are building dynamically linked executable.
In static build, it makes code _smaller_ by about 1.2k,
and likely many kilobytes less of bss.
config BUSYBOX_CONFIG_ADDGROUP
bool "addgroup"
@ -82,12 +108,31 @@ config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
If called with two non-option arguments, deluser
or delgroup will remove an user from a specified group.
config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
bool "Enable sanity check on user/group names in adduser and addgroup"
default n
depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
help
Enable sanity check on user and group names in adduser and addgroup.
To avoid problems, the user or group name should consist only of
letters, digits, underscores, periods, at signs and dashes,
and not start with a dash (as defined by IEEE Std 1003.1-2001).
For compatibility with Samba machine accounts "$" is also supported
at the end of the user or group name.
config BUSYBOX_CONFIG_ADDUSER
bool "adduser"
default n
help
Utility for creating a new user account.
config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
bool "Enable long options"
default n
depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_GETOPT_LONG
help
Support long options for the adduser applet.
config BUSYBOX_CONFIG_DELUSER
bool "deluser"
default n
@ -236,4 +281,3 @@ config BUSYBOX_CONFIG_VLOCK
work properly.
endmenu

@ -19,6 +19,73 @@ config BUSYBOX_CONFIG_BBCONFIG
The bbconfig applet will print the config file with which
busybox was built.
config BUSYBOX_CONFIG_CHAT
bool "chat"
default n
help
Simple chat utility.
config BUSYBOX_CONFIG_FEATURE_CHAT_NOFAIL
bool "Enable NOFAIL expect strings"
depends on BUSYBOX_CONFIG_CHAT
default n
help
When enabled expect strings which are started with a dash trigger
no-fail mode. That is when expectation is not met within timeout
the script is not terminated but sends next SEND string and waits
for next EXPECT string. This allows to compose far more flexible
scripts.
config BUSYBOX_CONFIG_FEATURE_CHAT_TTY_HIFI
bool "Force STDIN to be a TTY"
depends on BUSYBOX_CONFIG_CHAT
default n
help
Original chat always treats STDIN as a TTY device and sets for it
so-called raw mode. This option turns on such behaviour.
config BUSYBOX_CONFIG_FEATURE_CHAT_IMPLICIT_CR
bool "Enable implicit Carriage Return"
depends on BUSYBOX_CONFIG_CHAT
default n
help
When enabled make chat to terminate all SEND strings with a "\r"
unless "\c" is met anywhere in the string.
config BUSYBOX_CONFIG_FEATURE_CHAT_SWALLOW_OPTS
bool "Swallow options"
depends on BUSYBOX_CONFIG_CHAT
default n
help
Busybox chat require no options. To make it not fail when used
in place of original chat (which has a bunch of options) turn
this on.
config BUSYBOX_CONFIG_FEATURE_CHAT_SEND_ESCAPES
bool "Support weird SEND escapes"
depends on BUSYBOX_CONFIG_CHAT
default n
help
Original chat uses some escape sequences in SEND arguments which
are not sent to device but rather performs special actions.
E.g. "\K" means to send a break sequence to device.
"\d" delays execution for a second, "\p" -- for a 1/100 of second.
Before turning this option on think twice: do you really need them?
config BUSYBOX_CONFIG_FEATURE_CHAT_VAR_ABORT_LEN
bool "Support variable-length ABORT conditions"
depends on BUSYBOX_CONFIG_CHAT
default n
help
Original chat uses fixed 50-bytes length ABORT conditions. Say N here.
config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
bool "Support revoking of ABORT conditions"
depends on BUSYBOX_CONFIG_CHAT
default n
help
Support CLR_ABORT directive.
config BUSYBOX_CONFIG_CHRT
bool "chrt"
default n
@ -39,15 +106,13 @@ config BUSYBOX_CONFIG_CROND
$ cat /var/spool/cron/crontabs/root
# Run daily cron jobs at 4:40 every day:
40 4 * * * /etc/cron/daily > /dev/null 2>&1
Note that Busybox binary must be setuid root for this applet to
work properly.
config BUSYBOX_CONFIG_DEBUG_CROND_OPTION
bool "Support debug option -d"
bool "Support option -d to redirect output to stderr"
depends on BUSYBOX_CONFIG_CROND
default n
help
Support option -d to enter debug mode.
-d sets loglevel to 0 (most verbose) and directs all output to stderr.
config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
bool "Using /usr/sbin/sendmail?"
@ -63,6 +128,8 @@ config BUSYBOX_CONFIG_CRONTAB
help
Crontab manipulates the crontab for a particular user. Only
the superuser may specify a different user and/or crontab directory.
Note that Busybox binary must be setuid root for this applet to
work properly.
config BUSYBOX_CONFIG_DC
bool "dc"
@ -111,7 +178,7 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
Increases logging to stderr or syslog.
config BUSYBOX_CONFIG_FEATURE_DEVFS
bool " Use devfs names for all devices (obsolete)"
bool "Use devfs names for all devices (obsolete)"
default n
help
This is obsolete and will be going away at the end of 2008..
@ -126,6 +193,41 @@ config BUSYBOX_CONFIG_EJECT
help
Used to eject cdroms. (defaults to /dev/cdrom)
config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
bool "SCSI support"
default n
depends on BUSYBOX_CONFIG_EJECT
help
Add the -s option to eject, this allows to eject SCSI-Devices and
usb-storage devices.
config BUSYBOX_CONFIG_FBSPLASH
bool "fbsplash"
default n
help
Shows splash image and progress bar on framebuffer device.
Can be used during boot phase of an embedded device. ~2kb.
Usage:
- use kernel option 'vga=xxx' or otherwise enable fb device.
- put somewhere fbsplash.cfg file and an image in .ppm format.
- $ setsid fbsplash [params] &
-c: hide cursor
-d /dev/fbN: framebuffer device (if not /dev/fb0)
-s path_to_image_file (can be "-" for stdin)
-i path_to_cfg_file (can be "-" for stdin)
-f path_to_fifo (can be "-" for stdin)
- if you want to run it only in presence of kernel parameter:
grep -q "fbsplash=on" </proc/cmdline && setsid fbsplash [params] &
- commands for fifo:
"NN" (ASCII decimal number) - percentage to show on progress bar
"exit" - well you guessed it
config BUSYBOX_CONFIG_INOTIFYD
bool "inotifyd"
default n
help
Simple inotify daemon. Reports filesystem changes. Requires kernel >= 2.6.13
config BUSYBOX_CONFIG_LAST
bool "last"
default n
@ -133,6 +235,24 @@ config BUSYBOX_CONFIG_LAST
help
'last' displays a list of the last users that logged into the system.
choice
prompt "Choose last implementation"
depends on BUSYBOX_CONFIG_LAST
default BUSYBOX_CONFIG_FEATURE_LAST_SMALL
config BUSYBOX_CONFIG_FEATURE_LAST_SMALL
bool "small"
help
This is a small version of last with just the basic set of
features.
config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
bool "huge"
help
'last' displays detailed information about the last users that
logged into the system (mimics sysvinit last). +900 bytes.
endchoice
config BUSYBOX_CONFIG_LESS
bool "less"
default y
@ -282,6 +402,12 @@ config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
endchoice
config BUSYBOX_CONFIG_MAN
bool "man"
default n
help
Format and display manual pages.
config BUSYBOX_CONFIG_MICROCOM
bool "microcom"
default n
@ -320,7 +446,7 @@ config BUSYBOX_CONFIG_READAHEAD
This applet just calls the readahead(2) system call on each file.
It is mainly useful in system startup scripts to preload files
or executables before they are used. When used at the right time
(in particular when a CPU boundprocess is running) it can
(in particular when a CPU bound process is running) it can
significantly speed up system startup.
As readahead(2) blocks until each file has been read, it is best to
@ -341,6 +467,12 @@ config BUSYBOX_CONFIG_RX
help
Receive files using the Xmodem protocol.
config BUSYBOX_CONFIG_SETSID
bool "setsid"
default n
help
setsid runs a program in a new session
config BUSYBOX_CONFIG_STRINGS
bool "strings"
default y
@ -348,12 +480,6 @@ config BUSYBOX_CONFIG_STRINGS
strings prints the printable character sequences for each file
specified.
config BUSYBOX_CONFIG_SETSID
bool "setsid"
default n
help
setsid runs a program in a new session
config BUSYBOX_CONFIG_TASKSET
bool "taskset"
default n
@ -362,7 +488,7 @@ config BUSYBOX_CONFIG_TASKSET
This requires sched_{g,s}etaffinity support in your libc.
config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
bool "fancy output"
bool "Fancy output"
default n
depends on BUSYBOX_CONFIG_TASKSET
help
@ -398,4 +524,3 @@ config BUSYBOX_CONFIG_WATCHDOG
hung, and will cause the hardware to reboot.
endmenu

@ -5,6 +5,36 @@
menu "Linux Module Utilities"
config BUSYBOX_CONFIG_DEPMOD
bool "depmod"
default n
help
depmod generates modules.dep (FIXME: elaborate)
config BUSYBOX_CONFIG_FEATURE_DEPMOD_PRUNE_FANCY
bool "fancy dependency pruning"
default n
depends on BUSYBOX_CONFIG_DEPMOD
help
By default modules.dep contains all dependencies as listed by
the modules.
If you enable this option then we remove implied modules from
the dependencies.
This makes depmod somewhat bigger but generates a smaller
modules.dep file.
If unsure, say N.
config BUSYBOX_CONFIG_FEATURE_DEPMOD_ALIAS
bool "alias support"
default n
depends on BUSYBOX_CONFIG_DEPMOD
help
By default modules.dep does not contain alias information.
Enable this to emit aliases of the form:
alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
config BUSYBOX_CONFIG_INSMOD
bool "insmod"
default y
@ -73,7 +103,7 @@ config BUSYBOX_CONFIG_LSMOD
lsmod is used to display a list of loaded modules.
config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
bool "lsmod pretty output for 2.6.x Linux kernels "
bool "Pretty output for 2.6.x Linux kernels"
default y
depends on BUSYBOX_CONFIG_LSMOD
help
@ -92,7 +122,7 @@ config BUSYBOX_CONFIG_MODPROBE
config BUSYBOX_CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS
bool
prompt "Multiple options parsing" if BUSYBOX_CONFIG_NITPICK
prompt "Multiple options parsing"
default n
depends on BUSYBOX_CONFIG_MODPROBE
help
@ -109,7 +139,7 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS
config BUSYBOX_CONFIG_FEATURE_MODPROBE_FANCY_ALIAS
bool
prompt "Fancy alias parsing" if BUSYBOX_CONFIG_NITPICK
prompt "Fancy alias parsing"
default n
depends on BUSYBOX_CONFIG_MODPROBE && BUSYBOX_CONFIG_FEATURE_2_6_MODULES
help
@ -117,8 +147,20 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_FANCY_ALIAS
mismatch between module name and file name, along with bus-specific
aliases (such as pci:... or usb:... aliases).
config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
bool
prompt "Blacklist support"
default n
depends on BUSYBOX_CONFIG_MODPROBE && BUSYBOX_CONFIG_FEATURE_2_6_MODULES
help
Say 'y' here to enable support for the 'blacklist' command in
modprobe.conf. This prevents the alias resolver to resolve
blacklisted modules. This is useful if you want to prevent your
hardware autodetection scripts to load modules like evdev, frame
buffer drivers etc.
comment "Options common to multiple modutils"
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_LSMOD
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_LSMOD || BUSYBOX_CONFIG_DEPMOD
config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
# Simulate indentation
@ -139,6 +181,9 @@ config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
help
Support module loading for 2.2.x and 2.4.x Linux kernels.
Note:
This is automatically enabled if 2.6 modules are not enabled.
config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
# Simulate indentation
bool "Support version 2.6.x Linux kernels"
@ -147,12 +192,27 @@ config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
help
Support module loading for newer 2.6.x Linux kernels.
config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
# Simulate indentation
string "Default directory containing modules"
default "/lib/modules"
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
help
Directory that contains kernel modules.
Defaults to "/lib/modules"
config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
# Simulate indentation
string "Default name of modules.dep"
default "modules.dep"
depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
help
Filename that contains kernel modules dependencies.
Defaults to "modules.dep"
config BUSYBOX_CONFIG_FEATURE_QUERY_MODULE_INTERFACE
bool
default n
depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && !BUSYBOX_CONFIG_FEATURE_2_6_MODULES
endmenu

@ -12,6 +12,21 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
Enable IPv6 support in busybox.
This adds IPv6 support in the networking applets.
config BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS
bool "Preferentially use IPv4 addresses from DNS queries"
default y
depends on BUSYBOX_CONFIG_FEATURE_IPV6
help
Use IPv4 address of network host if it has one.
If this option is off, the first returned address will be used.
This may cause problems when your DNS server is IPv6-capable and
is returning IPv6 host addresses too. If IPv6 address
precedes IPv4 one in DNS reply, busybox network applets
(e.g. wget) will use IPv6 address. On an IPv6-incapable host
or network applets will fail to connect to the host
using IPv6 address.
config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
bool "Verbose resolution errors"
default y
@ -32,6 +47,32 @@ config BUSYBOX_CONFIG_ARPING
help
Ping hosts by ARP packets.
config BUSYBOX_CONFIG_BRCTL
bool "brctl"
default n
help
Manage ethernet bridges.
Supports addbr/delbr and addif/delif.
config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
bool "Fancy options"
default n
depends on BUSYBOX_CONFIG_BRCTL
help
Add support for extended option like:
setageing, setfd, sethello, setmaxage,
setpathcost, setportprio, setbridgeprio,
stp
This adds about 600 bytes.
config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
bool "Support show, showmac and showstp"
default n
depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
help
Add support for option which prints the current config:
showmacs, showstp, show
config BUSYBOX_CONFIG_DNSD
bool "dnsd"
default n
@ -101,7 +142,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE
instead of read/write loop.
config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
bool "Support reloading the global config file using hup signal"
bool "Support reloading of global config file on HUP signal"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
@ -151,7 +192,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
when specific URLs are requested.
config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
bool "Enable support for running scripts through an interpreter"
bool "Support for running scripts through an interpreter"
default y
depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
help
@ -162,7 +203,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
*.php:/path/to/your/php
config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
bool "Support the REMOTE_PORT environment variable for CGI"
bool "Set REMOTE_PORT environment variable for CGI"
default y
depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
help
@ -170,17 +211,17 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
references that contain a unique port number.
config BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR
bool "Enable the -e option for shell script CGI simplification."
bool "Enable -e option (useful for CGIs written as shell scripts)"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
This option allows html encoding arbitrary
strings for display of the browser. Output goes to stdout.
For example, httpd -e "<Hello World>" as
This option allows html encoding of arbitrary strings for display
by the browser. Output goes to stdout.
For example, httpd -e "<Hello World>" produces
"&#60Hello&#32World&#62".
config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
bool "Enable support for custom error pages"
bool "Support for custom error pages"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
@ -193,7 +234,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
message.
config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
bool "Enable support for reverse proxy"
bool "Support for reverse proxy"
default n
depends on BUSYBOX_CONFIG_HTTPD
help
@ -251,6 +292,13 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
Setting this will make ifconfig attempt to find the broadcast
automatically if the value '+' is used.
config BUSYBOX_CONFIG_IFENSLAVE
bool "ifenslave"
default n
help
Userspace application to bind several interfaces
to a logical interface (use with kernel bonding driver).
config BUSYBOX_CONFIG_IFUPDOWN
bool "ifupdown"
default n
@ -315,14 +363,14 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN
work.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
bool "Enable support for IPv4"
bool "Support for IPv4"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN
help
If you want ifup/ifdown to talk IPv4, leave this on.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
bool "Enable support for IPv6"
bool "Support for IPv6"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN && BUSYBOX_CONFIG_FEATURE_IPV6
help
@ -330,7 +378,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
### UNUSED
###config FEATURE_IFUPDOWN_IPX
### bool "Enable support for IPX"
### bool "Support for IPX"
### default n
### depends on IFUPDOWN
### help
@ -346,7 +394,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
a weird network setup you don't need it.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
bool "Enable support for external dhcp clients"
bool "Support for external dhcp clients"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN
help
@ -449,7 +497,7 @@ config BUSYBOX_CONFIG_FEATURE_IP_RULE
Add support for rule commands to "ip".
config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
bool "Support short forms of ip commands."
bool "Support short forms of ip commands"
default n
depends on BUSYBOX_CONFIG_IP
help
@ -528,19 +576,32 @@ config BUSYBOX_CONFIG_NAMEIF
Renamed interfaces MUST be in the down state.
It is possible to use a file (default: /etc/mactab)
with list of new interface names and MACs.
Maximum interface name length: IF_NAMESIZE = 16
Maximum interface name length: IFNAMSIZ = 16
File fields are separated by space or tab.
File format:
# Comment
new_interface_name XX:XX:XX:XX:XX:XX
config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
bool "Extended nameif"
default n
depends on BUSYBOX_CONFIG_NAMEIF
help
This extends the nameif syntax to support the bus_info and driver
checks. The syntax is compatible to the normal nameif.
File format:
new_interface_name driver=asix bus=usb-0000:00:08.2-3
new_interface_name bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
new_interface_name mac=00:80:C8:38:91:B5
new_interface_name 00:80:C8:38:91:B5
config BUSYBOX_CONFIG_NC
bool "nc"
default y
help
A simple Unix utility which reads and writes data across network
connections.
config BUSYBOX_CONFIG_NETMSG
bool "netmsg"
default y
@ -570,7 +631,7 @@ config BUSYBOX_CONFIG_NETSTAT
netstat prints information about the Linux networking subsystem.
config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
bool " Enable wide netstat output"
bool "Enable wide netstat output"
default y
depends on BUSYBOX_CONFIG_NETSTAT
help
@ -597,12 +658,6 @@ config BUSYBOX_CONFIG_PING6
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
bool "Enable fancy ping output"
default y
@ -611,12 +666,30 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_PING
Make the output from the ping applet include statistics, and at the
same time provide full support for ICMP packets.
config BUSYBOX_CONFIG_PSCAN
bool "pscan"
default n
help
Simple network port scanner.
config BUSYBOX_CONFIG_ROUTE
bool "route"
default y
help
Route displays or manipulates the kernel's IP routing tables.
config BUSYBOX_CONFIG_SENDMAIL
bool "sendmail"
default n
help
Barebones sendmail.
config BUSYBOX_CONFIG_FETCHMAIL
bool "fetchmail"
default n
help
Barebones fetchmail.
config BUSYBOX_CONFIG_SLATTACH
bool "slattach"
default n
@ -707,28 +780,41 @@ config BUSYBOX_CONFIG_TFTP
is usually used for simple, small transfers such as a root image
for a network-enabled bootloader.
config BUSYBOX_CONFIG_TFTPD
bool "tftpd"
default n
help
This enables the Trivial File Transfer Protocol server program.
It expects that stdin is a datagram socket and a packet
is already pending on it. It will exit after one transfer.
In other words: it should be run from inetd in nowait mode,
or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
config BUSYBOX_CONFIG_FEATURE_TFTP_GET
bool "Enable \"get\" command"
default n
depends on BUSYBOX_CONFIG_TFTP
depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
Add support for the GET command within the TFTP client. This allows
a client to retrieve a file from a TFTP server.
Also enable upload support in tftpd, if tftpd is selected.
config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
bool "Enable \"put\" command"
default n
depends on BUSYBOX_CONFIG_TFTP
depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
Add support for the PUT command within the TFTP client. This allows
a client to transfer a file to a TFTP server.
Also enable download support in tftpd, if tftpd is selected.
config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
bool "Enable \"blocksize\" command"
bool "Enable \"blksize\" protocol option"
default n
depends on BUSYBOX_CONFIG_TFTP
depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
Allow the client to specify the desired block size for transfers.
Allow tftp to specify block size, and tftpd to understand
"blksize" option.
config BUSYBOX_CONFIG_DEBUG_TFTP
bool "Enable debug"
@ -816,4 +902,16 @@ config BUSYBOX_CONFIG_ZCIP
See http://www.zeroconf.org for further details, and "zcip.script"
in the busybox examples.
config BUSYBOX_CONFIG_TCPSVD
bool "tcpsvd"
default n
help
tcpsvd listens on a TCP port and runs a program for each new connection
config BUSYBOX_CONFIG_UDPSVD
bool "udpsvd"
default n
help
udpsvd listens on an UDP port and runs a program for each new connection
endmenu

@ -4,14 +4,12 @@
#
config BUSYBOX_CONFIG_APP_UDHCPD
bool "udhcp Server (udhcpd)"
bool "udhcp server (udhcpd)"
default n
help
uDHCPd is a DHCP server geared primarily toward embedded systems,
udhcpd is a DHCP server geared primarily toward embedded systems,
while striving to be fully functional and RFC compliant.
See http://udhcp.busybox.net for further details.
config BUSYBOX_CONFIG_APP_DHCPRELAY
bool "dhcprelay"
default n
@ -30,40 +28,58 @@ config BUSYBOX_CONFIG_APP_DUMPLEASES
Lease times are stored in the file by time remaining in lease, or
by the absolute time that it expires in seconds from epoch.
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
time a new lease has been accepted, thus eliminating the need
to send SIGUSR1 for the initial writing or updating. Any timed
rewriting remains undisturbed
config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
string "Absolute path to lease file"
default "/var/run/udhcpd.leases"
depends on BUSYBOX_CONFIG_APP_UDHCPD
help
udhcpd stores addresses in a lease file. This is the absolute path
of the file. Normally it is safe to leave it untouched.
config BUSYBOX_CONFIG_APP_UDHCPC
bool "udhcp Client (udhcpc)"
bool "udhcp client (udhcpc)"
default y
help
uDHCPc is a DHCP client geared primarily toward embedded systems,
udhcpc is a DHCP client geared primarily toward embedded systems,
while striving to be fully functional and RFC compliant.
The udhcp client negotiates a lease with the DHCP server and
notifies a set of scripts when a lease is obtained or lost.
runs a script when a lease is obtained or lost.
See http://udhcp.busybox.net for further details.
config BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING
bool "Verify that the offered address is free, using ARP ping"
default n
depends on BUSYBOX_CONFIG_APP_UDHCPC
help
If selected, udhcpc will send ARP probes and make sure
the offered address is really not in use by anyone. The client
will DHCPDECLINE the offer if the address is in use,
and restart the discover process.
config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
bool "Enable '-P port' option for udhcpd and udhcpc"
default n
depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
help
At the cost of ~300 bytes, enables -P port option.
This feature is typically not needed.
config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
bool "Compile udhcp with noisy debugging messages"
default n
depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
help
If selected, udhcpd will output extra debugging output. If using
this option, compile uDHCP with "-g", and do not fork the daemon to
the background.
See http://udhcp.busybox.net for further details.
If selected, udhcpd will output extra debugging output.
config BUSYBOX_CONFIG_FEATURE_RFC3397
bool "Support for RFC3397 domain search (experimental)"
@ -72,3 +88,35 @@ config BUSYBOX_CONFIG_FEATURE_RFC3397
help
If selected, both client and server will support passing of domain
search lists via option 119, specified in RFC3397.
config BUSYBOX_CONFIG_DHCPC_DEFAULT_SCRIPT
string "Absolute path to config script"
default "/usr/share/udhcpc/default.script"
depends on BUSYBOX_CONFIG_APP_UDHCPC
help
This script is called after udhcpc receives an answer. See
examples/udhcp for a working example. Normally it is safe
to leave this untouched.
config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
int "DHCP options slack buffer size"
default 80
range 0 924
depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
help
Some buggy DHCP servers send DHCP offer packets with option
field larger than we expect (which might also be considered a
buffer overflow attempt). These packets are normally discarded.
If circumstances beyond your control force you to support such
servers, this may help. The upper limit (924) makes dhcpc accept
even 1500 byte packets (maximum-sized ethernet packets).
This option does not make dhcp[cd] emit non-standard
sized packets.
Known buggy DHCP servers:
3Com OfficeConnect Remote 812 ADSL Router:
seems to confuse maximum allowed UDP packet size with
maximum size of entire IP packet, and sends packets which are
28 bytes too large.
Seednet (ISP) VDSL: sends packets 2 bytes too large.

@ -0,0 +1,21 @@
menu "Print Utilities"
config BUSYBOX_CONFIG_LPD
bool "lpd"
default n
help
lpd is a print spooling daemon.
config BUSYBOX_CONFIG_LPR
bool "lpr"
default n
help
lpr sends files (or standard input) to a print spooling daemon.
config BUSYBOX_CONFIG_LPQ
bool "lpq"
default n
help
lpq is a print spool queue examination and manipulation program.
endmenu

@ -99,6 +99,21 @@ config BUSYBOX_CONFIG_FEATURE_PS_WIDE
If given once, 132 chars are printed and given more than
one, the length is unlimited.
config BUSYBOX_CONFIG_FEATURE_PS_TIME
bool "Enable time and elapsed time output"
default n
depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
help
Support -o time and -o etime output specifiers.
config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
bool "Support Linux prior to 2.4.0 and non-ELF systems"
default n
depends on BUSYBOX_CONFIG_FEATURE_PS_TIME
help
Include support for measuring HZ on old kernels and non-ELF systems
(if you are on Linux 2.4.0+ and use ELF, you don't need this)
config BUSYBOX_CONFIG_RENICE
bool "renice"
default n

@ -112,5 +112,12 @@ config BUSYBOX_CONFIG_SETSEBOOL
Enable support for change boolean.
semanage and -P option is not supported yet.
config BUSYBOX_CONFIG_SESTATUS
bool "sestatus"
default n
depends on BUSYBOX_CONFIG_SELINUX
help
Displays the status of SELinux.
endmenu

@ -20,9 +20,9 @@ config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
select BUSYBOX_CONFIG_HUSH
bool "hush"
config BUSYBOX_CONFIG_FEATURE_SH_IS_LASH
select BUSYBOX_CONFIG_LASH
bool "lash"
####config FEATURE_SH_IS_LASH
#### select LASH
#### bool "lash"
config BUSYBOX_CONFIG_FEATURE_SH_IS_MSH
select BUSYBOX_CONFIG_MSH
@ -36,7 +36,6 @@ endchoice
config BUSYBOX_CONFIG_ASH
bool "ash"
default y
select BUSYBOX_CONFIG_TEST
help
Tha 'ash' shell adds about 60k in the default configuration and is
the most complete and most pedantically correct shell included with
@ -47,6 +46,13 @@ config BUSYBOX_CONFIG_ASH
comment "Ash Shell Options"
depends on BUSYBOX_CONFIG_ASH
config BUSYBOX_CONFIG_ASH_BASH_COMPAT
bool "bash-compatible extensions"
default y
depends on BUSYBOX_CONFIG_ASH
help
Enable bash-conpatible extensions.
config BUSYBOX_CONFIG_ASH_JOB_CONTROL
bool "Job control"
default y
@ -104,15 +110,20 @@ config BUSYBOX_CONFIG_ASH_GETOPTS
config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
bool "Builtin version of 'echo'"
default y
select BUSYBOX_CONFIG_ECHO
depends on BUSYBOX_CONFIG_ASH
help
Enable support for echo, builtin to ash.
config BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF
bool "Builtin version of 'printf'"
default y
depends on BUSYBOX_CONFIG_ASH
help
Enable support for printf, builtin to ash.
config BUSYBOX_CONFIG_ASH_BUILTIN_TEST
bool "Builtin version of 'test'"
default y
select BUSYBOX_CONFIG_TEST
depends on BUSYBOX_CONFIG_ASH
help
Enable support for test, builtin to ash.
@ -163,9 +174,6 @@ config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
config BUSYBOX_CONFIG_HUSH
bool "hush"
default n
select BUSYBOX_CONFIG_TRUE
select BUSYBOX_CONFIG_FALSE
select BUSYBOX_CONFIG_TEST
help
hush is a very small shell (just 18k) and it has fairly complete
Bourne shell grammar. It even handles all the normal flow control
@ -228,24 +236,13 @@ config BUSYBOX_CONFIG_HUSH_LOOPS
config BUSYBOX_CONFIG_LASH
bool "lash"
default n
select BUSYBOX_CONFIG_TRUE
select BUSYBOX_CONFIG_FALSE
select BUSYBOX_CONFIG_TEST
select BUSYBOX_CONFIG_HUSH
help
lash is the very smallest shell (adds just 10k) and it is quite
usable as a command prompt, but it is not suitable for any but the
most trivial scripting (such as an initrd that calls insmod a few
times) since it does not understand any Bourne shell grammar. It
does handle pipes, redirects, and job control though. Adding in
command editing makes it a very nice lightweight command prompt.
lash is deprecated and will be removed, please migrate to hush.
config BUSYBOX_CONFIG_MSH
bool "msh"
default n
select BUSYBOX_CONFIG_TRUE
select BUSYBOX_CONFIG_FALSE
select BUSYBOX_CONFIG_TEST
help
The minix shell (adds just 30k) is quite complete and handles things
like for/do/done, case/esac and all the things you expect a Bourne
@ -297,6 +294,23 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
# that exact location with that exact name, this option will not work at
# all.
config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
bool "Run 'nofork' applets directly"
default n
depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
help
This option causes busybox shells [currently only ash]
to not execute typical fork/exec/wait sequence, but call <applet>_main
directly, if possible. (Sometimes it is not possible: for example,
this is not possible in pipes).
This will be done only for some applets (those which are marked
NOFORK in include/applets.h).
This may significantly speed up some shell scripts.
This feature is relatively new. Use with care.
config BUSYBOX_CONFIG_CTTYHACK
bool "cttyhack"
default n

@ -42,6 +42,14 @@ config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
measure to prevent system logs from being tampered with
by an intruder.
config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP
bool "Support -D (drop dups) option"
default n
depends on BUSYBOX_CONFIG_SYSLOGD
help
Option -D instructs syslogd to drop consecutive messages
which are totally the same.
config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
bool "Circular Buffer support"
default y
@ -57,7 +65,7 @@ config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
break badly.
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
range 4 2147483647
depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
@ -76,7 +84,7 @@ config BUSYBOX_CONFIG_LOGREAD
stored in the syslogd circular buffer.
config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
bool "logread double buffering"
bool "Double buffering"
default n
depends on BUSYBOX_CONFIG_LOGREAD
help

@ -18,7 +18,7 @@ config BUSYBOX_CONFIG_DMESG
wish to enable the 'dmesg' utility.
config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
bool "pretty dmesg output"
bool "Pretty dmesg output"
default y
depends on BUSYBOX_CONFIG_DMESG
help
@ -93,7 +93,7 @@ config BUSYBOX_CONFIG_FDISK
'disk slices' that are defined on a hard drive.
config BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
bool "support over 4GB disks"
bool "Support over 4GB disks"
default y
depends on BUSYBOX_CONFIG_FDISK
help
@ -150,6 +150,17 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
partition, and similarly evil things. Unless you have a very good
reason you would be wise to leave this disabled.
config BUSYBOX_CONFIG_FINDFS
bool "findfs"
default n
select BUSYBOX_CONFIG_VOLUMEID
help
This is similar to the findfs program that is part of the e2fsprogs
package. However, the e2fsprogs version only support ext2/3. This
version supports those in addition to FAT, swap, and ReiserFS.
WARNING:
With all submodules selected, it will add ~8k to busybox.
config BUSYBOX_CONFIG_FREERAMDISK
bool "freeramdisk"
default n
@ -210,6 +221,23 @@ config BUSYBOX_CONFIG_HEXDUMP
The hexdump utility is used to display binary data in a readable
way that is comparable to the output from most hex editors.
config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
bool "Support -R, reverse of 'hexdump -Cv'"
default n
depends on BUSYBOX_CONFIG_HEXDUMP
help
The hexdump utility is used to display binary data in an ascii
readable way. This option creates binary data from an ascii input.
NB: this option is non-standard. It's unwise to use it in scripts
aimed to be portable.
config BUSYBOX_CONFIG_HD
bool "hd"
default n
select BUSYBOX_CONFIG_HEXDUMP
help
hd is an alias to hexdump -C.
config BUSYBOX_CONFIG_HWCLOCK
bool "hwclock"
default y
@ -284,6 +312,22 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
bool "Support subdirs/symlinks"
default n
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
help
Add support for renaming devices and creating symlinks.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
bool "Support regular expressions substitutions when renaming device"
default n
depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
help
Add support for regular expressions substitutions when renaming device.
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
bool "Support command execution at device addition/removal"
default n
@ -319,7 +363,7 @@ config BUSYBOX_CONFIG_MKSWAP
the swap space using the 'swapon' utility.
config BUSYBOX_CONFIG_FEATURE_MKSWAP_V0
bool "version 0 support"
bool "Version 0 support"
default n
depends on BUSYBOX_CONFIG_MKSWAP
# depends on MKSWAP && BUSYBOX_CONFIG_DEPRECATED
@ -341,7 +385,7 @@ config BUSYBOX_CONFIG_MORE
config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
bool "Use termios to manipulate the screen"
default n
depends on BUSYBOX_CONFIG_MORE
depends on BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TOP
help
This option allows utilities such as 'more' and 'top' to determine
the size of the screen. If you leave this disabled, your utilities
@ -349,6 +393,216 @@ config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
will be unable to determine the current screen size, and will be
unable to move the cursor.
config BUSYBOX_CONFIG_VOLUMEID
bool "Routines for detecting label and uuid on common filesystems"
default n
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
bool "Ext filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
bool "Reiser filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
bool "fat filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
bool "hfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
bool "jfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_UFS
### bool "ufs filesystem"
### default n
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
bool "xfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
bool "ntfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
bool "iso9660 filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
bool "udf filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
bool "luks filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
bool "linux swap filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_LVM
### bool "lvm"
### default n
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
bool "cramfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_HPFS
### bool "hpfs filesystem"
### default n
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
bool "romfs filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
bool "sysv filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_MINIX
### bool "minix filesystem"
### default n
### depends on VOLUMEID
### help
### TODO
### These only detect partition tables - not used (yet?)
### config FEATURE_VOLUMEID_MAC
### bool "mac filesystem"
### default n
### depends on VOLUMEID
### help
### TODO
###
### config FEATURE_VOLUMEID_MSDOS
### bool "msdos filesystem"
### default n
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
bool "ocfs2 filesystem"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_HIGHPOINTRAID
### bool "highpoint raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_ISWRAID
### bool "intel raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_LSIRAID
### bool "lsi raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_VIARAID
### bool "via raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_SILICONRAID
### bool "silicon raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_NVIDIARAID
### bool "nvidia raid"
### default n
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_PROMISERAID
### bool "promise raid"
### default n
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
bool "linuxraid"
default n
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_MOUNT
bool "mount"
default y
@ -360,15 +614,42 @@ config BUSYBOX_CONFIG_MOUNT
NFS filesystems. Most people using BusyBox will also want to enable
the 'mount' utility.
config BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
bool "Support option -f"
default n
depends on BUSYBOX_CONFIG_MOUNT
help
Enable support for faking a file system mount.
config BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE
bool "Support option -v"
default n
depends on BUSYBOX_CONFIG_MOUNT
help
Enable multi-level -v[vv...] verbose messages. Useful if you
debug mount problems and want to see what is exactly passed
to the kernel.
config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS
bool "Support mount helpers"
default n
depends on BUSYBOX_CONFIG_MOUNT
help
Enable mounting of virtual file systems via external helpers.
E.g. mount obexfs#-b00.11.22.33.44.55 /mnt will in effect call
obexfs -b00.11.22.33.44.55 /mnt
The idea is to use such virtual filesystems in /etc/fstab
E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
"obexfs -b00.11.22.33.44.55 /mnt"
Also "mount -t sometype [-o opts] fs /mnt" will try
"sometype [-o opts] fs /mnt" if simple mount syscall fails.
The idea is to use such virtual filesystems in /etc/fstab.
config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
bool "Support specifiying devices by label or UUID"
default n
depends on BUSYBOX_CONFIG_MOUNT
select BUSYBOX_CONFIG_VOLUMEID
help
This allows for specifying a device by label or uuid, rather than by
name. This feature utilizes the same functionality as findfs.
config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
bool "Support mounting NFS file systems"
@ -430,6 +711,18 @@ config BUSYBOX_CONFIG_READPROFILE
help
This allows you to parse /proc/profile for basic profiling.
config BUSYBOX_CONFIG_RTCWAKE
bool "rtcwake"
default n
help
Enter a system sleep state until specified wakeup time.
config BUSYBOX_CONFIG_SCRIPT
bool "script"
default n
help
The script makes typescript of terminal session.
config BUSYBOX_CONFIG_SETARCH
bool "setarch"
default n
@ -450,6 +743,13 @@ config BUSYBOX_CONFIG_SWAPONOFF
space. If you are not using any swap space, you can leave this
option disabled.
config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
bool "Support priority option -p"
default n
depends on BUSYBOX_CONFIG_SWAPONOFF
help
Enable support for setting swap device priority in swapon.
config BUSYBOX_CONFIG_SWITCH_ROOT
bool "switch_root"
default y
@ -479,7 +779,7 @@ config BUSYBOX_CONFIG_UMOUNT
also want to enable 'umount'.
config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
bool "umount -a option"
bool "Support option -a"
default y
depends on BUSYBOX_CONFIG_UMOUNT
help
@ -508,6 +808,7 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
bool "Support for the old /etc/mtab file"
default n
depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
select BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
help
Historically, Unix systems kept track of the currently mounted
partitions in the file "/etc/mtab". These days, the kernel exports
@ -528,4 +829,3 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
your kernel.
endmenu

@ -1,13 +1,18 @@
Index: busybox-1.7.2/applets/Kbuild
===================================================================
--- busybox-1.7.2.orig/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
@@ -20,6 +20,6 @@
HOSTCFLAGS_usage.o = -I$(srctree)/include
applets/applets.o: include/usage_compressed.h
-applets/usage: .config $(srctree)/applets/usage_compressed
--- a/applets/Kbuild
+++ b/applets/Kbuild
@@ -18,13 +18,13 @@
applets/applets.o: include/usage_compressed.h include/applet_tables.h
-applets/usage: .config $(srctree)/applets/usage_compressed
+applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
applets/applet_tables: .config
quiet_cmd_gen_usage_compressed = GEN include/usage_compressed.h
cmd_gen_usage_compressed = $(srctree)/applets/usage_compressed include/usage_compressed.h applets
-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)
quiet_cmd_gen_applet_tables = GEN include/applet_tables.h

@ -0,0 +1,20 @@
--- a/init/init.c
+++ b/init/init.c
@@ -505,12 +505,11 @@
for (a = init_action_list; a; a = tmp) {
tmp = a->next;
if (a->action_type & action_type) {
- // Pointless: run() will error out if open of device fails.
- ///* a->terminal of "" means "init's console" */
- //if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
- // //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
- // delete_init_action(a);
- //} else
+ /* a->terminal of "" means "init's console" */
+ if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
+ //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
+ delete_init_action(a);
+ } else
if (a->action_type & (SYSINIT | WAIT | CTRLALTDEL | SHUTDOWN | RESTART)) {
waitfor(run(a));
delete_init_action(a);

@ -1,8 +1,6 @@
Index: busybox-1.7.2/networking/wget.c
===================================================================
--- busybox-1.7.2.orig/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
@@ -140,7 +140,7 @@
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -437,7 +437,7 @@
"directory-prefix\0" Required_argument "P"
"proxy\0" Required_argument "Y"
"user-agent\0" Required_argument "U"
@ -10,4 +8,4 @@ Index: busybox-1.7.2/networking/wget.c
+ "passive-ftp\0" No_argument "\xfd"
"header\0" Required_argument "\xfe"
;
applet_long_options = wget_longopts;
#endif

@ -1,7 +1,5 @@
Index: busybox-1.7.2/scripts/trylink
===================================================================
--- busybox-1.7.2.orig/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
--- a/scripts/trylink
+++ b/scripts/trylink
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash

@ -1,9 +1,7 @@
Index: busybox-1.7.2/miscutils/crond.c
===================================================================
--- busybox-1.7.2.orig/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
@@ -15,7 +15,7 @@
#include "libbb.h"
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -24,7 +24,7 @@
#ifndef CRONTABS
-#define CRONTABS "/var/spool/cron/crontabs"
@ -11,10 +9,8 @@ Index: busybox-1.7.2/miscutils/crond.c
#endif
#ifndef TMPDIR
#define TMPDIR "/var/spool/cron"
Index: busybox-1.7.2/miscutils/crontab.c
===================================================================
--- busybox-1.7.2.orig/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
--- a/miscutils/crontab.c
+++ b/miscutils/crontab.c
@@ -13,7 +13,7 @@
#include "libbb.h"
@ -22,5 +18,5 @@ Index: busybox-1.7.2/miscutils/crontab.c
-#define CRONTABS "/var/spool/cron/crontabs"
+#define CRONTABS "/etc/crontabs"
#endif
#ifndef TMPDIR
#define TMPDIR "/var/spool/cron"
#ifndef CRONUPDATE
#define CRONUPDATE "cron.update"

@ -1,22 +1,20 @@
Index: busybox-1.7.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
@@ -334,7 +334,7 @@
/* timeout dropped to zero */
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -352,7 +352,7 @@
switch (state) {
case INIT_SELECTING:
- if (packet_num < client_config.retries) {
+ if (!client_config.retries || (packet_num < client_config.retries)) {
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
@@ -360,7 +360,7 @@
break;
@@ -382,7 +382,7 @@
continue;
case RENEW_REQUESTED:
case REQUESTING:
- if (packet_num < client_config.retries) {
+ if (!client_config.retries || (packet_num < client_config.retries)) {
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
/* send request packet */
if (state == RENEW_REQUESTED)
send_renew(xid, server_addr, requested_ip); /* unicast */
if (state == RENEW_REQUESTED) /* unicast */
send_renew(xid, server_addr, requested_ip);

@ -1,89 +1,75 @@
Index: busybox-1.7.2/networking/udhcp/packet.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/packet.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/packet.c 2007-10-30 15:35:01.000000000 -0500
@@ -121,6 +121,10 @@
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
@@ -114,6 +114,10 @@
return ~sum;
}
+int udhcp_get_payload_len(struct dhcpMessage *payload)
+{
+ return sizeof(struct dhcpMessage) - MAX_OPTIONS_LEN + end_option(payload->options) + sizeof(payload->options[0]);
+ return sizeof(struct dhcpMessage) - DHCP_OPTIONS_BUFSIZE + end_option(payload->options) + sizeof(payload->options[0]);
+}
/* Construct a ip/udp header for a packet, and specify the source and dest hardware address */
void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void);
@@ -132,6 +136,7 @@
int result;
struct sockaddr_ll dest;
struct udp_dhcp_packet packet;
/* Construct a ip/udp header for a packet, send packet */
int udhcp_send_raw_packet(struct dhcpMessage *payload,
@@ -125,11 +129,7 @@
int fd;
int result = -1;
const char *msg;
-
- enum {
- IP_UPD_DHCP_SIZE = sizeof(struct udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
- UPD_DHCP_SIZE = IP_UPD_DHCP_SIZE - offsetof(struct udp_dhcp_packet, udp),
- };
+ int p_len = udhcp_get_payload_len(payload);
fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
if (fd < 0) {
@@ -141,6 +146,7 @@
@@ -139,7 +139,7 @@
memset(&dest, 0, sizeof(dest));
memset(&packet, 0, sizeof(packet));
- packet.data = *payload; /* struct copy */
+ memcpy(&(packet.data), payload, p_len);
dest.sll_family = AF_PACKET;
dest.sll_protocol = htons(ETH_P_IP);
@@ -158,12 +164,13 @@
@@ -156,23 +156,18 @@
packet.ip.daddr = dest_ip;
packet.udp.source = htons(source_port);
packet.udp.dest = htons(dest_port);
- packet.udp.len = htons(sizeof(packet.udp) + sizeof(struct dhcpMessage)); /* cheat on the psuedo-header */
- /* size, excluding IP header: */
- packet.udp.len = htons(UPD_DHCP_SIZE);
- /* for UDP checksumming, ip.len is set to UDP packet len */
+ p_len += sizeof(packet.udp);
+ packet.udp.len = htons(p_len);
packet.ip.tot_len = packet.udp.len;
- memcpy(&(packet.data), payload, sizeof(struct dhcpMessage));
- packet.udp.check = udhcp_checksum(&packet, sizeof(struct udp_dhcp_packet));
- packet.udp.check = udhcp_checksum(&packet, IP_UPD_DHCP_SIZE);
- /* but for sending, it is set to IP packet len */
- packet.ip.tot_len = htons(IP_UPD_DHCP_SIZE);
+ p_len += sizeof(packet.ip);
+ packet.udp.check = udhcp_checksum(&packet, p_len);
- packet.ip.tot_len = htons(sizeof(struct udp_dhcp_packet));
+ packet.ip.tot_len = htons(p_len);
packet.ip.ihl = sizeof(packet.ip) >> 2;
packet.ip.version = IPVERSION;
packet.ip.ttl = IPDEFTTL;
@@ -172,7 +179,7 @@
if (sizeof(struct udp_dhcp_packet) != 576)
BUG_sizeof_struct_udp_dhcp_packet_must_be_576();
packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip));
- result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0,
- /* Currently we send full-sized DHCP packets (zero padded).
- * If you need to change this: last byte of the packet is
- * packet.data.options[end_option(packet.data.options)]
- */
- result = sendto(fd, &packet, IP_UPD_DHCP_SIZE, 0,
+ result = sendto(fd, &packet, p_len, 0,
(struct sockaddr *) &dest, sizeof(dest));
if (result <= 0) {
bb_perror_msg("sendto");
@@ -216,7 +223,7 @@
return -1;
(struct sockaddr *) &dest, sizeof(dest));
msg = "sendto";
ret_close:
@@ -224,8 +219,7 @@
goto ret_close;
}
- result = write(fd, payload, sizeof(struct dhcpMessage));
+ result = write(fd, payload, udhcp_get_payload_len(payload));
- /* Currently we send full-sized DHCP packets (see above) */
- result = safe_write(fd, payload, DHCP_SIZE);
+ result = safe_write(fd, payload, udhcp_get_payload_len(payload));
msg = "write";
ret_close:
close(fd);
return result;
}
Index: busybox-1.7.2/networking/udhcp/common.h
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/common.h 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/common.h 2007-10-30 15:35:01.000000000 -0500
@@ -21,6 +21,8 @@
#include <netinet/udp.h>
#include <netinet/ip.h>
+#define MAX_OPTIONS_LEN 308
+
struct dhcpMessage {
uint8_t op;
uint8_t htype;
@@ -37,7 +39,7 @@
uint8_t sname[64];
uint8_t file[128];
uint32_t cookie;
- uint8_t options[308]; /* 312 - cookie */
+ uint8_t options[MAX_OPTIONS_LEN]; /* 312 - cookie */
};
struct udp_dhcp_packet {

@ -1,8 +1,6 @@
Index: busybox-1.7.2/networking/udhcp/clientpacket.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/clientpacket.c 2007-10-30 15:35:00.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/clientpacket.c 2007-10-30 15:35:02.000000000 -0500
@@ -74,6 +74,7 @@
--- a/networking/udhcp/clientpacket.c
+++ b/networking/udhcp/clientpacket.c
@@ -101,6 +101,7 @@
int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcpMessage packet;
@ -10,13 +8,11 @@ Index: busybox-1.7.2/networking/udhcp/clientpacket.c
init_packet(&packet, DHCPDISCOVER);
packet.xid = xid;
@@ -81,7 +82,8 @@
add_simple_option(packet.options, DHCP_REQUESTED_IP, requested);
@@ -113,6 +114,7 @@
add_param_req_option(&packet);
add_requests(&packet);
- bb_info_msg("Sending discover...");
+ if (msgs++ < 3)
+ bb_info_msg("Sending discover...");
return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
bb_info_msg("Sending discover...");
return udhcp_send_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
}

@ -1,10 +1,8 @@
Index: busybox-1.7.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:02.000000000 -0500
@@ -309,6 +309,12 @@
jump_in:
tv.tv_usec = 0;
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -319,6 +319,12 @@
for (;;) {
unsigned timestamp_before_wait;
+ /* When running on a bridge, the ifindex may have changed (e.g. if
+ * member interfaces were added/removed or if the status of the

@ -1,15 +1,11 @@
Index: busybox-1.7.2/shell/ash.c
===================================================================
--- busybox-1.7.2.orig/shell/ash.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/shell/ash.c 2007-10-30 15:35:02.000000000 -0500
@@ -11310,8 +11310,18 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11875,8 +11875,17 @@
const char *p;
char **aptr;
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
+ int mask = ~0;
+ int nopt;
- if (nextopt("p") != 'p') {
+ while ((nopt = nextopt("np"))) {
+ if (nopt == 'n') {
+ mask = ~flag;
@ -17,12 +13,13 @@ Index: busybox-1.7.2/shell/ash.c
+ break;
+ }
+ }
+
- if (nextopt("p") != 'p') {
+ if (nopt != 'p') {
aptr = argptr;
name = *aptr;
if (name) {
@@ -11323,10 +11333,11 @@
@@ -11888,10 +11897,12 @@
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;
@ -30,7 +27,7 @@ Index: busybox-1.7.2/shell/ash.c
continue;
}
}
- setvar(name, p, flag);
setvar(name, p, flag);
+ setvar(name, p, flag & mask);
} while ((name = *++aptr) != NULL);
return 0;

@ -1,37 +1,43 @@
Index: busybox-1.7.2/include/applets.h
===================================================================
--- busybox-1.7.2.orig/include/applets.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/applets.h 2007-10-30 15:35:03.000000000 -0500
@@ -241,6 +241,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -257,6 +257,7 @@
USE_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_NEVER))
USE_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+USE_NETMSG(APPLET_NOUSAGE(netmsg, netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
+USE_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
Index: busybox-1.7.2/networking/Config.in
===================================================================
--- busybox-1.7.2.orig/networking/Config.in 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/Config.in 2007-10-30 15:35:03.000000000 -0500
@@ -508,6 +508,12 @@
help
--- a/include/usage.h
+++ b/include/usage.h
@@ -2815,6 +2815,9 @@
#endif
+#define netmsg_trivial_usage NOUSAGE_STR
+#define netmsg_full_usage ""
+
#define netstat_trivial_usage \
"[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
#define netstat_full_usage "\n\n" \
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -602,6 +602,12 @@
A simple Unix utility which reads and writes data across network
connections.
+
+config NETMSG
+ bool "netmsg"
+ default n
+ help
+ simple program for sending udp broadcast messages
+
config NC_SERVER
bool "Netcat server options (-l)"
Index: busybox-1.7.2/networking/Kbuild
===================================================================
--- busybox-1.7.2.orig/networking/Kbuild 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/Kbuild 2007-10-30 15:35:03.000000000 -0500
@@ -21,6 +21,7 @@
default n
--- a/networking/Kbuild
+++ b/networking/Kbuild
@@ -24,6 +24,7 @@
lib-$(CONFIG_IPCALC) += ipcalc.o
lib-$(CONFIG_NAMEIF) += nameif.o
lib-$(CONFIG_NC) += nc.o
@ -39,10 +45,8 @@ Index: busybox-1.7.2/networking/Kbuild
lib-$(CONFIG_NETSTAT) += netstat.o
lib-$(CONFIG_NSLOOKUP) += nslookup.o
lib-$(CONFIG_PING) += ping.o
Index: busybox-1.7.2/networking/netmsg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.7.2/networking/netmsg.c 2007-10-30 15:35:03.000000000 -0500
--- /dev/null
+++ b/networking/netmsg.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>

@ -1,45 +0,0 @@
Copyright (C) 2006 OpenWrt.org
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
@@ -1527,12 +1527,26 @@
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
char *cipher;
char *pp;
+ char *ppnew = NULL;
+ struct passwd *pwd = NULL;
if (strncmp(p, request, u - request) != 0) {
/* user doesn't match */
continue;
}
pp = strchr(p, ':');
+ if(pp && pp[1] == '$' && pp[2] == 'p' &&
+ pp[3] == '$' && pp[4] &&
+ (pwd = getpwnam(&pp[4])) != NULL) {
+ if(pwd->pw_passwd && pwd->pw_passwd[0] == '!') {
+ prev = NULL;
+ continue;
+ }
+ ppnew = xrealloc(ppnew, 5 + strlen(pwd->pw_passwd));
+ ppnew[0] = ':';
+ strcpy(ppnew + 1, pwd->pw_passwd);
+ pp = ppnew;
+ }
if (pp && pp[1] == '$' && pp[2] == '1'
&& pp[3] == '$' && pp[4]
) {
@@ -1543,6 +1557,10 @@
/* unauthorized */
continue;
}
+ if (ppnew) {
+ free(ppnew);
+ ppnew = NULL;
+ }
}
if (strcmp(p, request) == 0) {

@ -1,20 +1,28 @@
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 16:54:28.318054115 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:39:21.487529096 +0100
@@ -218,6 +218,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -220,6 +220,7 @@
USE_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_NEVER))
+USE_LOCK(APPLET_NOUSAGE(lock, lock, _BB_DIR_BIN, _BB_SUID_NEVER))
+USE_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER, logname))
Index: busybox-1.8.1/miscutils/Config.in
===================================================================
--- busybox-1.8.1.orig/miscutils/Config.in 2007-11-10 16:54:16.477379354 +0100
+++ busybox-1.8.1/miscutils/Config.in 2007-11-10 16:54:28.366056851 +0100
@@ -244,6 +244,12 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -2138,6 +2138,9 @@
#define loadkmap_example_usage \
"$ loadkmap < /etc/i18n/lang-keymap\n"
+#define lock_trivial_usage NOUSAGE_STR
+#define lock_full_usage ""
+
#define logger_trivial_usage \
"[OPTION]... [MESSAGE]"
#define logger_full_usage "\n\n" \
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -364,6 +364,12 @@
Enables the 'hdparm -d' option to get/set using_dma flag.
This is dangerous stuff, so you should probably say N.
@ -27,22 +35,18 @@ Index: busybox-1.8.1/miscutils/Config.in
config MAKEDEVS
bool "makedevs"
default n
Index: busybox-1.8.1/miscutils/Kbuild
===================================================================
--- busybox-1.8.1.orig/miscutils/Kbuild 2007-11-10 16:54:16.481379580 +0100
+++ busybox-1.8.1/miscutils/Kbuild 2007-11-10 16:54:28.370057076 +0100
@@ -16,6 +16,7 @@
lib-$(CONFIG_HDPARM) += hdparm.o
lib-$(CONFIG_LAST) += last.o
--- a/miscutils/Kbuild
+++ b/miscutils/Kbuild
@@ -20,6 +20,7 @@
lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
lib-$(CONFIG_LESS) += less.o
+lib-$(CONFIG_LOCK) += lock.o
lib-$(CONFIG_MAKEDEVS) += makedevs.o
lib-$(CONFIG_MAN) += man.o
lib-$(CONFIG_MICROCOM) += microcom.o
lib-$(CONFIG_MOUNTPOINT) += mountpoint.o
Index: busybox-1.8.1/miscutils/lock.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/miscutils/lock.c 2007-11-10 17:40:37.203843924 +0100
--- /dev/null
+++ b/miscutils/lock.c
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>

@ -1,31 +1,27 @@
Index: busybox-1.8.1/include/usage.h
===================================================================
--- busybox-1.8.1.orig/include/usage.h 2007-11-10 16:54:16.433376848 +0100
+++ busybox-1.8.1/include/usage.h 2007-11-10 16:54:29.970148260 +0100
@@ -1418,7 +1418,8 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -1558,7 +1558,8 @@
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
" [-h home]" \
- " [-d/-e string]"
+ " [-d/-e string]" \
+ " [-R <path> [-H <host>]]"
#define httpd_full_usage \
"Listen for incoming HTTP requests" \
"\n\nOptions:" \
@@ -1436,6 +1437,8 @@
"\n -h HOME Home directory (default .)" \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
+ "\n -R PATH Redirect target path" \
+ "\n -H HOST Redirect target host" \
#define httpd_full_usage "\n\n" \
"Listen for incoming HTTP requests\n" \
"\nOptions:" \
@@ -1576,6 +1577,8 @@
"\n -h HOME Home directory (default .)" \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
+ "\n -R PATH Redirect target path" \
+ "\n -H HOST Redirect target host" \
#define hwclock_trivial_usage \
USE_GETOPT_LONG( \
Index: busybox-1.8.1/networking/httpd.c
===================================================================
--- busybox-1.8.1.orig/networking/httpd.c 2007-11-10 16:54:28.346055711 +0100
+++ busybox-1.8.1/networking/httpd.c 2007-11-10 16:54:56.639668071 +0100
@@ -253,6 +253,8 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -247,6 +247,8 @@
const char *found_mime_type;
const char *found_moved_temporarily;
@ -34,8 +30,8 @@ Index: busybox-1.8.1/networking/httpd.c
Htaccess_IP *ip_a_d; /* config allow/deny lines */
USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
@@ -297,6 +299,8 @@
#define home_httpd (G.home_httpd )
@@ -292,6 +294,8 @@
#define index_page (G.index_page )
#define found_mime_type (G.found_mime_type )
#define found_moved_temporarily (G.found_moved_temporarily)
+#define redirect_path (G.redirect_path )
@ -43,7 +39,7 @@ Index: busybox-1.8.1/networking/httpd.c
#define last_mod (G.last_mod )
#define ip_a_d (G.ip_a_d )
#define g_realm (G.g_realm )
@@ -988,8 +992,11 @@
@@ -991,8 +995,11 @@
}
#endif
if (responseNum == HTTP_MOVED_TEMPORARILY) {
@ -56,21 +52,21 @@ Index: busybox-1.8.1/networking/httpd.c
(g_query ? "?" : ""),
(g_query ? g_query : ""));
}
@@ -1907,8 +1914,12 @@
*++urlp = '\0'; /* so keep last character */
tptr = urlp; /* end ptr */
@@ -1912,8 +1919,12 @@
} while (*++tptr);
*++urlp = '\0'; /* terminate after last character */
+ /* redirect active */
+ if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0))
+ found_moved_temporarily = redirect_path;
+
/* If URL is a directory, add '/' */
- if (tptr[-1] != '/') {
+ if (!redirect_path && (tptr[-1] != '/')) {
- if (urlp[-1] != '/') {
+ if (!redirect_path && (urlp[-1] != '/')) {
if (is_directory(urlcopy + 1, 1, &sb)) {
found_moved_temporarily = urlcopy;
}
@@ -2252,7 +2263,9 @@
@@ -2263,7 +2274,9 @@
#endif
enum {
@ -81,10 +77,10 @@ Index: busybox-1.8.1/networking/httpd.c
d_opt_decode_url,
h_opt_home_httpd,
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
@@ -2301,12 +2314,13 @@
@@ -2312,12 +2325,13 @@
/* We do not "absolutize" path given by -h (home) opt.
* If user gives relative path in -h, $SCRIPT_FILENAME can end up
* relative too. */
* If user gives relative path in -h,
* $SCRIPT_FILENAME will not be set. */
- opt = getopt32(argv, "c:d:h:"
+ opt = getopt32(argv, "R:H:c:d:h:"
USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")

@ -1,72 +0,0 @@
Index: busybox-1.7.2/editors/awk.c
===================================================================
--- busybox-1.7.2.orig/editors/awk.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/editors/awk.c 2007-10-30 15:35:03.000000000 -0500
@@ -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,39 +0,0 @@
Index: busybox-1.7.2/include/platform.h
===================================================================
--- busybox-1.7.2.orig/include/platform.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/platform.h 2007-10-30 15:35:04.000000000 -0500
@@ -137,9 +137,11 @@
# include <netinet/in.h>
#endif
+#ifndef __APPLE__
#ifndef __socklen_t_defined
typedef int socklen_t;
#endif
+#endif
/* ---- Compiler dependent settings ------------------------- */
#if (defined __digital__ && defined __unix__)
@@ -179,7 +181,7 @@
#define HAVE_STDINT_H
#else
/* Largest integral types. */
-#if __BIG_ENDIAN__
+#if __BIG_ENDIAN__ && !__APPLE__
typedef long intmax_t;
typedef unsigned long uintmax_t;
#else
Index: busybox-1.7.2/include/libbb.h
===================================================================
--- busybox-1.7.2.orig/include/libbb.h 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/include/libbb.h 2007-10-30 15:35:04.000000000 -0500
@@ -31,7 +31,9 @@
#include <sys/mman.h>
#include <sys/socket.h>
#include <sys/stat.h>
+#ifndef __APPLE__
#include <sys/statfs.h>
+#endif
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>

@ -1,9 +1,7 @@
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
@@ -1316,10 +1316,10 @@
if (full_write(1, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1247,10 +1247,10 @@
if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
break;
}
- /* Commented out:

@ -1,13 +1,11 @@
Index: busybox-1.7.2/coreutils/uniq.c
===================================================================
--- busybox-1.7.2.orig/coreutils/uniq.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/coreutils/uniq.c 2007-10-30 15:35:04.000000000 -0500
@@ -83,6 +83,8 @@
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -82,6 +82,8 @@
if (!s0 || strcmp(e0, e1)) {
if (!s0 || strncmp(e0, e1, max_chars)) {
break;
+ } else {
+ free(s1);
}
++dups; /* Note: Testing for overflow seems excessive. */
++dups; /* note: testing for overflow seems excessive. */

@ -1,10 +1,8 @@
Index: busybox-1.7.2/networking/httpd.c
===================================================================
--- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
@@ -1618,6 +1618,7 @@
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
int credentials = -1; /* if not required this is Ok */
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1797,6 +1797,7 @@
char *header_ptr = header_ptr;
Htaccess_Proxy *proxy_entry;
#endif
+ xchdir(home_httpd);

@ -1,12 +0,0 @@
Index: busybox-1.7.2/applets/usage_compressed
===================================================================
--- busybox-1.7.2.orig/applets/usage_compressed 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/applets/usage_compressed 2007-10-30 15:35:04.000000000 -0500
@@ -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,7 +1,5 @@
Index: busybox-1.7.2/networking/ping.c
===================================================================
--- busybox-1.7.2.orig/networking/ping.c 2007-10-30 15:34:59.000000000 -0500
+++ busybox-1.7.2/networking/ping.c 2007-10-30 15:35:05.000000000 -0500
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -91,7 +91,7 @@
struct sockaddr_in pingaddr;
struct icmp *pkt;
@ -10,7 +8,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp_socket();
pingaddr = lsa->sin;
pingaddr = lsa->u.sin;
@@ -101,7 +101,7 @@
pkt->icmp_type = ICMP_ECHO;
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
@ -28,7 +26,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp6_socket();
pingaddr = lsa->sin6;
pingaddr = lsa->u.sin6;
@@ -147,7 +147,7 @@
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));

@ -1,7 +1,5 @@
Index: busybox-1.8.1/modutils/insmod.c
===================================================================
--- busybox-1.8.1.orig/modutils/insmod.c 2007-11-10 02:40:49.000000000 +0100
+++ busybox-1.8.1/modutils/insmod.c 2007-11-10 17:28:44.391223047 +0100
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -61,21 +61,117 @@
#include "libbb.h"
#include <libgen.h>
@ -27,9 +25,9 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_2_6_MODULES
-static int insmod_ng_main(int argc, char **argv);
+int insmod_main_26(int argc, char **argv);
+#endif
#endif
+int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+
+static char *g_filename = NULL;
+#define _PATH_MODULES "/lib/modules"
+
@ -69,7 +67,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ if (k_version <= 4)
+ suffix = ".o";
+ else
#endif
+#endif
+ suffix = ".ko";
+
+ len = strlen(filename);
@ -111,7 +109,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ ret = 0;
+ else
+ free(g_filename);
+
+done:
+ free(filename);
+
@ -125,23 +123,50 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_INSMOD_LOADINKMEM
#define LOADBITS 0
#else
@@ -673,7 +769,6 @@
#endif
@@ -184,7 +280,6 @@
/* Microblaze */
#if defined(__microblaze__)
#define USE_SINGLE
-#include <linux/elf-em.h>
#define MATCH_MACHINE(x) (x == EM_XILINX_MICROBLAZE)
#define SHT_RELM SHT_RELA
#define Elf32_RelM Elf32_Rela
@@ -452,7 +547,7 @@
/* The system calls unchanged between 2.0 and 2.1. */
unsigned long create_module(const char *, size_t);
-int delete_module(const char *module, unsigned int flags);
+int delete_module(const char *);
-#define _PATH_MODULES "/lib/modules"
#endif /* module.h */
@@ -652,7 +747,7 @@
static enum obj_reloc arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
- /*struct obj_section *symsec,*/
+ struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value);
@@ -673,6 +768,7 @@
#define SPFX ""
#endif
+
enum { STRVERSIONLEN = 64 };
/*======================================================================*/
@@ -789,27 +884,6 @@
@@ -788,28 +884,6 @@
static char *m_fullName;
-/*======================================================================*/
-
-
-static int check_module_name_match(const char *filename, struct stat *statbuf,
- void *userdata, int depth)
-static int check_module_name_match(const char *filename,
- struct stat *statbuf ATTRIBUTE_UNUSED,
- void *userdata, int depth ATTRIBUTE_UNUSED)
-{
- char *fullname = (char *) userdata;
- char *tmp;
@ -161,7 +186,170 @@ Index: busybox-1.8.1/modutils/insmod.c
/*======================================================================*/
@@ -3897,145 +3971,57 @@
@@ -835,27 +909,18 @@
static enum obj_reloc
arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
- /*struct obj_section *symsec,*/
+ struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) v)
{
-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
- || defined(__sh__) || defined(__s390__) || defined(__x86_64__)
struct arch_file *ifile = (struct arch_file *) f;
-#endif
enum obj_reloc ret = obj_reloc_ok;
ElfW(Addr) *loc = (ElfW(Addr) *) (targsec->contents + rel->r_offset);
-#if defined(__arm__) || defined(__H8300H__) || defined(__H8300S__) \
- || defined(__i386__) || defined(__mc68000__) || defined(__microblaze__) \
- || defined(__mips__) || defined(__nios2__) || defined(__powerpc__) \
- || defined(__s390__) || defined(__sh__) || defined(__x86_64__)
ElfW(Addr) dot = targsec->header.sh_addr + rel->r_offset;
-#endif
#if defined(USE_GOT_ENTRIES) || defined(USE_PLT_ENTRIES)
struct arch_symbol *isym = (struct arch_symbol *) sym;
#endif
-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
- || defined(__sh__) || defined(__s390__)
+#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) || defined(__sh__) || defined(__s390__)
#if defined(USE_GOT_ENTRIES)
ElfW(Addr) got = ifile->got ? ifile->got->header.sh_addr : 0;
#endif
@@ -953,7 +1018,6 @@
case R_386_PLT32:
case R_386_PC32:
- case R_386_GOTOFF:
*loc += v - dot;
break;
@@ -972,6 +1036,9 @@
case R_386_GOT32:
goto bb_use_got;
+
+ case R_386_GOTOFF:
+ *loc += v - got;
break;
#elif defined(__microblaze__)
@@ -1758,7 +1825,7 @@
#if defined(USE_SINGLE)
-static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *single,
+static int arch_single_init(ElfW(RelM) *rel, struct arch_single_entry *single,
int offset, int size)
{
if (single->allocated == 0) {
@@ -1906,7 +1973,7 @@
#if defined(USE_GOT_ENTRIES)
if (got_allocate) {
got_offset += arch_single_init(
- /*rel,*/ &intsym->gotent,
+ rel, &intsym->gotent,
got_offset, GOT_ENTRY_SIZE);
got_needed = 1;
@@ -1920,7 +1987,7 @@
plt_offset, PLT_ENTRY_SIZE);
#else
plt_offset += arch_single_init(
- /*rel,*/ &intsym->pltent,
+ rel, &intsym->pltent,
plt_offset, PLT_ENTRY_SIZE);
#endif
plt_needed = 1;
@@ -1958,8 +2025,7 @@
while (n > 0) {
ch = *name++;
h = (h << 4) + ch;
- g = (h & 0xf0000000);
- if (g != 0) {
+ if ((g = (h & 0xf0000000)) != 0) {
h ^= g >> 24;
h &= ~g;
}
@@ -2038,7 +2104,7 @@
int n_type = ELF_ST_TYPE(info);
int n_binding = ELF_ST_BIND(info);
- for (sym = f->symtab[hash]; sym; sym = sym->next) {
+ for (sym = f->symtab[hash]; sym; sym = sym->next)
if (f->symbol_cmp(sym->name, name) == 0) {
int o_secidx = sym->secidx;
int o_info = sym->info;
@@ -2097,14 +2163,14 @@
return sym;
}
}
- }
/* Completely new symbol. */
sym = arch_new_symbol();
sym->next = f->symtab[hash];
f->symtab[hash] = sym;
sym->ksymidx = -1;
- if (ELF_ST_BIND(info) == STB_LOCAL && symidx != (unsigned long)(-1)) {
+
+ if (ELF_ST_BIND(info) == STB_LOCAL && symidx != -1) {
if (symidx >= f->local_symtab_size)
bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
name, (long) symidx, (long) f->local_symtab_size);
@@ -3227,7 +3293,7 @@
/* Do it! */
switch (arch_apply_relocation
- (f, targsec, /*symsec,*/ intsym, rel, value)
+ (f, targsec, symsec, intsym, rel, value)
) {
case obj_reloc_ok:
break;
@@ -3306,11 +3372,11 @@
/*======================================================================*/
-static struct obj_file *obj_load(FILE * fp, int loadprogbits ATTRIBUTE_UNUSED)
+static struct obj_file *obj_load(FILE * fp, int loadprogbits)
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
- size_t shnum, i;
+ int shnum, i;
char *shstrtab;
/* Read the file header. */
@@ -3582,7 +3648,7 @@
while (ptr < endptr) {
value = strchr(ptr, '=');
if (value && strncmp(ptr, "license", value-ptr) == 0) {
- unsigned i;
+ int i;
if (license)
*license = value+1;
for (i = 0; i < ARRAY_SIZE(gpl_licenses); ++i) {
@@ -3686,9 +3752,6 @@
* start of some sections. this info is used by ksymoops to do better
* debugging.
*/
-#if !ENABLE_FEATURE_INSMOD_VERSION_CHECKING
-#define get_module_version(f, str) get_module_version(str)
-#endif
static int
get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
{
@@ -3721,8 +3784,7 @@
struct obj_symbol *sym;
char *name, *absolute_filename;
char str[STRVERSIONLEN];
- unsigned i;
- int l, lm_name, lfilename, use_ksymtab, version;
+ int i, l, lm_name, lfilename, use_ksymtab, version;
struct stat statbuf;
/* WARNING: was using realpath, but replaced by readlink to stop using
@@ -3909,145 +3971,57 @@
void print_load_map(struct obj_file *f);
#endif
@ -257,10 +445,8 @@ Index: busybox-1.8.1/modutils/insmod.c
- } else {
- free(tmp1);
- tmp1 = NULL; /* flag for free(m_name) before exit() */
+ tmp = xstrdup(arg1);
+ m_name = basename(tmp);
}
- }
-
- /* Get a filedesc for the module. Check that we have a complete path */
- if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
- || (fp = fopen(arg1, "r")) == NULL
@ -271,7 +457,7 @@ Index: busybox-1.8.1/modutils/insmod.c
- char *module_dir;
- char *tmdn;
-
- tmdn = concat_path_file(_PATH_MODULES, myuname.release);
- tmdn = concat_path_file(CONFIG_DEFAULT_MODULES_DIR, 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
@ -293,9 +479,9 @@ Index: busybox-1.8.1/modutils/insmod.c
-
- free(m_filename);
- m_filename = NULL;
- module_dir = xmalloc_readlink(_PATH_MODULES);
- module_dir = xmalloc_readlink(CONFIG_DEFAULT_MODULES_DIR);
- if (!module_dir)
- module_dir = xstrdup(_PATH_MODULES);
- module_dir = xstrdup(CONFIG_DEFAULT_MODULES_DIR);
- /* No module found under /lib/modules/`uname -r`, this
- * time cast the net a bit wider. Search /lib/modules/ */
- r = recursive_action(module_dir, ACTION_RECURSE,
@ -308,10 +494,12 @@ Index: busybox-1.8.1/modutils/insmod.c
- ) {
- bb_error_msg_and_die("%s: module not found", m_fullName);
- }
- }
+ tmp = xstrdup(arg1);
+ m_name = basename(tmp);
}
- } else
- m_filename = xstrdup(arg1);
-
- if (flag_verbose)
- printf("Using %s\n", m_filename);
-
@ -329,7 +517,7 @@ Index: busybox-1.8.1/modutils/insmod.c
f = obj_load(fp, LOADBITS);
@@ -4062,7 +4048,7 @@
@@ -4074,7 +4048,7 @@
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s",
flag_force_load ? "warning: " : "",
@ -338,7 +526,7 @@ Index: busybox-1.8.1/modutils/insmod.c
if (!flag_force_load)
goto out;
}
@@ -4104,7 +4090,7 @@
@@ -4116,7 +4090,7 @@
hide_special_symbols(f);
#if ENABLE_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
@ -347,7 +535,37 @@ Index: busybox-1.8.1/modutils/insmod.c
#endif /* FEATURE_INSMOD_KSYMOOPS_SYMBOLS */
new_create_module_ksymtab(f);
@@ -4147,18 +4133,19 @@
@@ -4125,7 +4099,7 @@
m_size = obj_load_size(f);
m_addr = create_module(m_name, m_size);
- if (m_addr == (ElfW(Addr))(-1)) switch (errno) {
+ if (m_addr == -1) switch (errno) {
case EEXIST:
bb_error_msg_and_die("a module named %s already exists", m_name);
case ENOMEM:
@@ -4141,36 +4115,37 @@
* now we can load them directly into the kernel memory
*/
if (!obj_load_progbits(fp, f, (char*)m_addr)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
#endif
if (!obj_relocate(f, m_addr)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
if (!new_init_module(m_name, f, m_size)) {
- delete_module(m_name, 0);
+ delete_module(m_name);
goto out;
}
if (flag_print_load_map)
print_load_map(f);
@ -372,19 +590,34 @@ Index: busybox-1.8.1/modutils/insmod.c
}
#endif /* ENABLE_FEATURE_2_4_MODULES */
@@ -4190,23 +4177,32 @@
@@ -4182,15 +4157,8 @@
#if ENABLE_FEATURE_2_6_MODULES
#include <sys/mman.h>
-
-#if defined __UCLIBC__ && !ENABLE_FEATURE_2_4_MODULES
-/* big time suckage. The old prototype above renders our nice fwd-decl wrong */
-extern int init_module(void *module, unsigned long len, const char *options);
-#else
#include <asm/unistd.h>
#include <sys/syscall.h>
-#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
-#endif
/* We use error numbers in a loose translation... */
static const char *moderror(int err)
@@ -4209,22 +4177,32 @@
}
}
-#if !ENABLE_FEATURE_2_4_MODULES
-int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int insmod_main(int argc, char **argv)
-int insmod_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#else
-static int insmod_ng_main(int argc, char **argv)
-static int insmod_ng_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#endif
+int insmod_main_26(int argc, char **argv)
{
- long ret;
- size_t len;
+ char *filename, *options;
+ struct utsname myuname;
@ -414,12 +647,20 @@ Index: busybox-1.8.1/modutils/insmod.c
/* Rest is options */
options = xzalloc(1);
optlen = 0;
@@ -4216,36 +4212,47 @@
@@ -4234,41 +4212,47 @@
optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv);
}
-#if 0
- /* Any special reason why mmap? It isn't performace critical... */
- /* Any special reason why mmap? It isn't performance critical. -vda */
- /* Yes, xmalloc'ing can use *alot* of RAM. Don't forget that there are
- * modules out there that are half a megabyte! mmap()ing is way nicer
- * for small mem boxes, i guess. */
- /* But after load, these modules will take up that 0.5mb in kernel
- * anyway. Using malloc here causes only a transient spike to 1mb,
- * after module is loaded, we go back to normal 0.5mb usage
- * (in kernel). Also, mmap isn't magic - when we touch mapped data,
- * we use memory. -vda */
- int fd;
- struct stat st;
- unsigned long len;
@ -440,18 +681,19 @@ Index: busybox-1.8.1/modutils/insmod.c
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);
+ ret = syscall(__NR_init_module, map, len, options);
+ if (ret != 0) {
+ bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
+ g_filename, moderror(errno), ret);
}
+ }
+done:
+ if (g_filename && (g_filename != filename))
+ free(g_filename);
- if (init_module(map, len, options) != 0)
- bb_error_msg_and_die("cannot insert '%s': %s",
- filename, moderror(errno));
- return 0;
+ return ret;
}

@ -1,40 +0,0 @@
Index: busybox-1.8.1/editors/awk.c
===================================================================
--- busybox-1.8.1.orig/editors/awk.c 2007-11-10 23:53:16.950053243 +0100
+++ busybox-1.8.1/editors/awk.c 2007-11-10 23:53:23.422422084 +0100
@@ -446,7 +446,7 @@
tsplitter fsplitter, rsplitter;
};
#define G1 (ptr_to_globals[-1])
-#define G (*(struct globals2 *const)ptr_to_globals)
+#define G (*(struct globals2 *)ptr_to_globals)
/* For debug. nm --size-sort awk.o | grep -vi ' [tr] ' */
/* char G1size[sizeof(G1)]; - 0x6c */
/* char Gsize[sizeof(G)]; - 0x1cc */
Index: busybox-1.8.1/include/libbb.h
===================================================================
--- busybox-1.8.1.orig/include/libbb.h 2007-11-10 23:53:38.135260518 +0100
+++ busybox-1.8.1/include/libbb.h 2007-11-10 23:54:15.773405393 +0100
@@ -1111,8 +1111,10 @@
struct globals;
/* '*const' ptr makes gcc optimize code much better.
* Magic prevents ptr_to_globals from going into rodata.
- * If you want to assign a value, use PTR_TO_GLOBALS = xxx */
-extern struct globals *const ptr_to_globals;
+ * If you want to assign a value, use PTR_TO_GLOBALS = xxx
+ * unfortunately the above hack doesn't work properly :P
+ */
+extern struct globals *ptr_to_globals;
#define PTR_TO_GLOBALS (*(struct globals**)&ptr_to_globals)
Index: busybox-1.8.1/libbb/messages.c
===================================================================
--- busybox-1.8.1.orig/libbb/messages.c 2007-11-10 23:52:47.116353117 +0100
+++ busybox-1.8.1/libbb/messages.c 2007-11-10 23:52:57.752959269 +0100
@@ -74,4 +74,4 @@
struct globals;
/* Make it reside in R/W memory: */
-struct globals *const ptr_to_globals __attribute__ ((section (".data")));
+struct globals *ptr_to_globals __attribute__ ((section (".data")));

@ -1,8 +1,6 @@
Index: busybox-1.8.1/archival/Config.in
===================================================================
--- busybox-1.8.1.orig/archival/Config.in 2007-11-10 17:39:21.063504932 +0100
+++ busybox-1.8.1/archival/Config.in 2007-11-10 17:40:53.320762376 +0100
@@ -131,6 +131,15 @@
--- a/archival/Config.in
+++ b/archival/Config.in
@@ -139,6 +139,15 @@
gzip is used to compress files.
It's probably the most widely used UNIX compression program.
@ -18,11 +16,9 @@ Index: busybox-1.8.1/archival/Config.in
config RPM2CPIO
bool "rpm2cpio"
default n
Index: busybox-1.8.1/archival/dpkg.c
===================================================================
--- busybox-1.8.1.orig/archival/dpkg.c 2007-11-10 17:39:21.071505389 +0100
+++ busybox-1.8.1/archival/dpkg.c 2007-11-10 17:40:53.320762376 +0100
@@ -1455,6 +1455,10 @@
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -1482,6 +1482,10 @@
return ar_handle->sub_archive->buffer;
}
@ -33,7 +29,7 @@ Index: busybox-1.8.1/archival/dpkg.c
static void data_extract_all_prefix(archive_handle_t *archive_handle)
{
char *name_ptr = archive_handle->file_header->name;
@@ -1466,6 +1470,8 @@
@@ -1493,6 +1497,8 @@
}
}
@ -42,10 +38,8 @@ Index: busybox-1.8.1/archival/dpkg.c
static void unpack_package(deb_file_t *deb_file)
{
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
Index: busybox-1.8.1/archival/ipkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/ipkg.c 2007-11-10 17:41:16.866104145 +0100
--- /dev/null
+++ b/archival/ipkg.c
@@ -0,0 +1,27 @@
+/* ipkg.c - the itsy package management system
+
@ -74,10 +68,8 @@ Index: busybox-1.8.1/archival/ipkg.c
+{
+ return ipkg_op(argc, argv);
+}
Index: busybox-1.8.1/archival/Kbuild
===================================================================
--- busybox-1.8.1.orig/archival/Kbuild 2007-11-10 17:39:21.083506071 +0100
+++ busybox-1.8.1/archival/Kbuild 2007-11-10 17:40:53.332763058 +0100
--- a/archival/Kbuild
+++ b/archival/Kbuild
@@ -16,6 +16,7 @@
lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o
lib-$(CONFIG_GUNZIP) += bbunzip.o
@ -86,10 +78,8 @@ Index: busybox-1.8.1/archival/Kbuild
lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o
lib-$(CONFIG_RPM) += rpm.o
lib-$(CONFIG_TAR) += tar.o
Index: busybox-1.8.1/archival/libipkg/args.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/args.c 2007-11-10 17:40:53.336763287 +0100
--- /dev/null
+++ b/archival/libipkg/args.c
@@ -0,0 +1,242 @@
+/* args.c - parse command-line args
+
@ -333,10 +323,8 @@ Index: busybox-1.8.1/archival/libipkg/args.c
+{
+ bb_error_msg("version %s\n", IPKG_VERSION);
+}
Index: busybox-1.8.1/archival/libipkg/args.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/args.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/args.h
@@ -0,0 +1,72 @@
+/* args.h - parse command-line args
+
@ -410,10 +398,8 @@ Index: busybox-1.8.1/archival/libipkg/args.h
+void args_usage(char *complaint);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/conffile.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile.c
@@ -0,0 +1,64 @@
+/* conffile.c - the itsy package management system
+
@ -479,10 +465,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.c
+
+ return ret;
+}
Index: busybox-1.8.1/archival/libipkg/conffile.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile.h
@@ -0,0 +1,30 @@
+/* conffile.h - the itsy package management system
+
@ -514,10 +498,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/conffile_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile_list.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile_list.c
@@ -0,0 +1,47 @@
+/* conffile_list.c - the itsy package management system
+
@ -566,10 +548,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.c
+ return nv_pair_list_pop(list);
+}
+
Index: busybox-1.8.1/archival/libipkg/conffile_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/conffile_list.h 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/conffile_list.h
@@ -0,0 +1,36 @@
+/* conffile_list.h - the itsy package management system
+
@ -607,10 +587,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/file_util.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/file_util.c 2007-11-10 17:40:53.340763516 +0100
--- /dev/null
+++ b/archival/libipkg/file_util.c
@@ -0,0 +1,132 @@
+/* file_util.c - convenience routines for common stat operations
+
@ -744,10 +722,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.c
+ return hash_file(file_name, HASH_MD5);
+}
+
Index: busybox-1.8.1/archival/libipkg/file_util.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/file_util.h 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/file_util.h
@@ -0,0 +1,29 @@
+/* file_util.h - convenience routines for common file operations
+
@ -778,10 +754,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.h
+char *file_md5sum_alloc(const char *file_name);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/hash_table.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/hash_table.c 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/hash_table.c
@@ -0,0 +1,155 @@
+/* hash.c - hash tables for ipkg
+
@ -938,10 +912,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.c
+ }
+}
+
Index: busybox-1.8.1/archival/libipkg/hash_table.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/hash_table.h 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/hash_table.h
@@ -0,0 +1,44 @@
+/* hash.h - hash tables for ipkg
+
@ -987,10 +959,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.h
+void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data);
+
+#endif /* _HASH_TABLE_H_ */
Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.c 2007-11-10 17:40:53.344763742 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_cmd.c
@@ -0,0 +1,1431 @@
+/* ipkg_cmd.c - the itsy package management system
+
@ -2423,10 +2393,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_cmd.h
@@ -0,0 +1,46 @@
+/* ipkg_cmd.h - the itsy package management system
+
@ -2474,10 +2442,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
+int pkg_mark_provides(pkg_t *pkg);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_conf.c 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_conf.c
@@ -0,0 +1,711 @@
+/* ipkg_conf.c - the itsy package management system
+
@ -3190,10 +3156,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
+ sprintf_alloc(&root_filename, "%s%s", (conf->offline_root ? conf->offline_root : ""), filename);
+ return root_filename;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_conf.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_conf.h
@@ -0,0 +1,107 @@
+/* ipkg_conf.h - the itsy package management system
+
@ -3302,10 +3266,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
+char *root_filename_alloc(ipkg_conf_t *conf, char *filename);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_configure.c 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_configure.c
@@ -0,0 +1,40 @@
+/* ipkg_configure.c - the itsy package management system
+
@ -3347,10 +3309,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
+ return 0;
+}
+
Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_configure.h 2007-11-10 17:40:53.348763971 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_configure.h
@@ -0,0 +1,25 @@
+/* ipkg_configure.h - the itsy package management system
+
@ -3377,10 +3337,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
+int ipkg_configure(ipkg_conf_t *ipkg_conf, pkg_t *pkg);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_download.c 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_download.c
@@ -0,0 +1,195 @@
+/* ipkg_download.c - the itsy package management system
+
@ -3577,10 +3535,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
+ }
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_download.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_download.h
@@ -0,0 +1,30 @@
+/* ipkg_download.h - the itsy package management system
+
@ -3612,10 +3568,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
+int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg.h
@@ -0,0 +1,74 @@
+/* ipkg.h - the itsy package management system
+
@ -3691,10 +3645,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg.h
+extern ipkg_conf_t *global_conf;
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_includes.h 2007-11-10 17:40:53.352764197 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_includes.h
@@ -0,0 +1,79 @@
+#ifndef IPKG_INCLUDES_H
+#define IPKG_INCLUDES_H
@ -3775,10 +3727,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
+#endif
+
+#endif /* IPKG_INCLUDES_H */
Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_install.c 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_install.c
@@ -0,0 +1,1942 @@
+/* ipkg_install.c - the itsy package management system
+
@ -5722,10 +5672,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
+}
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_install.h 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_install.h
@@ -0,0 +1,35 @@
+/* ipkg_install.h - the itsy package management system
+
@ -5762,10 +5710,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
+int name_mark_dependencies_for_installation(ipkg_conf_t *conf, const char *pkg_name, pkg_vec_t *pkgs_needed);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_message.c 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_message.c
@@ -0,0 +1,61 @@
+/* ipkg_message.c - the itsy package management system
+
@ -5828,10 +5774,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
+ }
+}
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_message.h 2007-11-10 17:40:53.356764426 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_message.h
@@ -0,0 +1,32 @@
+/* ipkg_message.h - the itsy package management system
+
@ -5865,10 +5809,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
+extern void ipkg_message(ipkg_conf_t *conf, message_level_t level, const char *fmt, ...);
+
+#endif /* _IPKG_MESSAGE_H_ */
Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_remove.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_remove.c
@@ -0,0 +1,383 @@
+/* ipkg_remove.c - the itsy package management system
+
@ -6253,10 +6195,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_remove.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_remove.h
@@ -0,0 +1,33 @@
+/* ipkg_remove.h - the itsy package management system
+
@ -6291,10 +6231,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
+
+
+#endif
Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_upgrade.c
@@ -0,0 +1,77 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@ -6373,10 +6311,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
+ new->state_flag |= SF_USER;
+ return ipkg_install_pkg(conf, new,1);
+}
Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_upgrade.h
@@ -0,0 +1,18 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@ -6396,10 +6332,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
+#include "ipkg.h"
+
+int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_utils.c 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_utils.c
@@ -0,0 +1,181 @@
+/* ipkg_utils.c - the itsy package management system
+
@ -6582,10 +6516,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/ipkg_utils.h 2007-11-10 17:40:53.360764656 +0100
--- /dev/null
+++ b/archival/libipkg/ipkg_utils.h
@@ -0,0 +1,29 @@
+/* ipkg_utils.h - the itsy package management system
+
@ -6616,10 +6548,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
+int line_is_blank(const char *line);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/Kbuild
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/Kbuild 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/Kbuild
@@ -0,0 +1,60 @@
+# Makefile for busybox
+#
@ -6681,10 +6611,8 @@ Index: busybox-1.8.1/archival/libipkg/Kbuild
+IPKG_ARCH:=$(TARGET_ARCH)
+endif
+CFLAGS += -DIPKG_LIB -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(IPKG_ARCH)\""
Index: busybox-1.8.1/archival/libipkg/libipkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/libipkg.c 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/libipkg.c
@@ -0,0 +1,527 @@
+/* ipkglib.c - the itsy package management system
+
@ -7213,10 +7141,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.c
+}
+
+#endif /* IPKG_LIB */
Index: busybox-1.8.1/archival/libipkg/libipkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/libipkg.h 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/libipkg.h
@@ -0,0 +1,88 @@
+/* ipkglib.h - the itsy package management system
+
@ -7306,10 +7232,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.h
+
+
+#endif
Index: busybox-1.8.1/archival/libipkg/nv_pair.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair.c 2007-11-10 17:40:53.364764882 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair.c
@@ -0,0 +1,40 @@
+/* nv_pair.c - the itsy package management system
+
@ -7351,10 +7275,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/nv_pair.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair.h 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair.h
@@ -0,0 +1,32 @@
+/* nv_pair.h - the itsy package management system
+
@ -7388,10 +7310,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair_list.c 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair_list.c
@@ -0,0 +1,98 @@
+/* nv_pair_list.c - the itsy package management system
+
@ -7491,10 +7411,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
+ }
+ return NULL;
+}
Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/nv_pair_list.h 2007-11-10 17:40:53.372765337 +0100
--- /dev/null
+++ b/archival/libipkg/nv_pair_list.h
@@ -0,0 +1,60 @@
+/* nv_pair_list.h - the itsy package management system
+
@ -7556,10 +7474,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg.c
@@ -0,0 +1,1747 @@
+/* pkg.c - the itsy package management system
+
@ -9308,10 +9224,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.c
+ }
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_depends.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_depends.c
@@ -0,0 +1,1031 @@
+/* pkg_depends.c - the itsy package management system
+
@ -10344,10 +10258,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_depends.h 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_depends.h
@@ -0,0 +1,105 @@
+/* pkg_depends.h - the itsy package management system
+
@ -10454,10 +10366,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
+int pkg_dependence_satisfied(ipkg_conf_t *conf, depend_t *depend);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest.c 2007-11-10 17:40:53.376765566 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest.c
@@ -0,0 +1,92 @@
+/* pkg_dest.c - the itsy package management system
+
@ -10551,10 +10461,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
+
+ dest->root_dir = NULL;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest.h
@@ -0,0 +1,38 @@
+/* pkg_dest.h - the itsy package management system
+
@ -10594,10 +10502,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.c 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest_list.c
@@ -0,0 +1,85 @@
+/* pkg_dest_list.c - the itsy package management system
+
@ -10684,10 +10590,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
+{
+ return (pkg_dest_list_elt_t *) void_list_pop((void_list_t *) list);
+}
Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_dest_list.h
@@ -0,0 +1,50 @@
+/* pkg_dest_list.h - the itsy package management system
+
@ -10739,10 +10643,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_extract.c 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_extract.c
@@ -0,0 +1,224 @@
+/* pkg_extract.c - the itsy package management system
+
@ -10968,10 +10870,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_extract.h 2007-11-10 17:40:53.380765796 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_extract.h
@@ -0,0 +1,32 @@
+/* pkg_extract.c - the itsy package management system
+
@ -11005,10 +10905,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
+int pkg_extract_data_file_names_to_stream(pkg_t *pkg, FILE *file);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg.h 2007-11-10 17:40:53.384766022 +0100
--- /dev/null
+++ b/archival/libipkg/pkg.h
@@ -0,0 +1,229 @@
+/* pkg.h - the itsy package management system
+
@ -11239,10 +11137,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.h
+int pkg_write_changed_filelists(ipkg_conf_t *conf);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_hash.c 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_hash.c
@@ -0,0 +1,616 @@
+/* ipkg_hash.c - the itsy package management system
+
@ -11860,10 +11756,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_hash.h 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_hash.h
@@ -0,0 +1,61 @@
+/* pkg_hash.h - the itsy package management system
+
@ -11926,10 +11820,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_parse.c 2007-11-10 17:40:53.388766251 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_parse.c
@@ -0,0 +1,366 @@
+/* pkg_parse.c - the itsy package management system
+
@ -12297,10 +12189,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
+
+ return 0;
+}
Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_parse.h 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_parse.h
@@ -0,0 +1,31 @@
+/* pkg_parse.h - the itsy package management system
+
@ -12333,10 +12223,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
+int pkg_valorize_other_field(pkg_t *pkg, char ***raw);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_src.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src.c 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src.c
@@ -0,0 +1,43 @@
+/* pkg_src.c - the itsy package management system
+
@ -12381,10 +12269,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.c
+}
+
+
Index: busybox-1.8.1/archival/libipkg/pkg_src.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src.h 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src.h
@@ -0,0 +1,34 @@
+/* pkg_src.h - the itsy package management system
+
@ -12420,10 +12306,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.h
+void pkg_src_deinit(pkg_src_t *src);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src_list.c 2007-11-10 17:40:53.392766477 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src_list.c
@@ -0,0 +1,75 @@
+/* pkg_src_list.c - the itsy package management system
+
@ -12500,10 +12384,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
+{
+ return (pkg_src_list_elt_t *) void_list_pop((void_list_t *) list);
+}
Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_src_list.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_src_list.h
@@ -0,0 +1,57 @@
+/* pkg_src_list.h - the itsy package management system
+
@ -12562,10 +12444,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
+
+#endif
+
Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_vec.c 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_vec.c
@@ -0,0 +1,230 @@
+/* pkg_vec.c - the itsy package management system
+
@ -12797,10 +12677,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
+ qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+}
+
Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/pkg_vec.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/pkg_vec.h
@@ -0,0 +1,64 @@
+/* pkg_vec.h - the itsy package management system
+
@ -12866,10 +12744,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
+void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *));
+#endif
+
Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/sprintf_alloc.h 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/sprintf_alloc.h
@@ -0,0 +1,25 @@
+/* sprintf_alloca.c -- like sprintf with memory allocation
+
@ -12896,10 +12772,8 @@ Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
+#define sprintf_alloc(str, fmt, args...) *str = xasprintf(fmt, ## args)
+
+#endif
Index: busybox-1.8.1/archival/libipkg/str_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_list.c 2007-11-10 17:40:53.396766706 +0100
--- /dev/null
+++ b/archival/libipkg/str_list.c
@@ -0,0 +1,76 @@
+/* str_list.c - the itsy package management system
+
@ -12977,10 +12851,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.c
+ (void *)target_str,
+ (void_list_cmp_t)strcmp);
+}
Index: busybox-1.8.1/archival/libipkg/str_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_list.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_list.h
@@ -0,0 +1,51 @@
+/* str_list.h - the itsy package management system
+
@ -13033,10 +12905,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.h
+char *str_list_remove_elt(str_list_t *list, const char *target_str);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/str_util.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_util.c 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_util.c
@@ -0,0 +1,63 @@
+/* str_utils.c - the itsy package management system
+
@ -13101,10 +12971,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.c
+ return str ? strdup(str) : NULL;
+}
+
Index: busybox-1.8.1/archival/libipkg/str_util.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/str_util.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/str_util.h
@@ -0,0 +1,27 @@
+/* str_utils.h - the itsy package management system
+
@ -13133,10 +13001,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.h
+char *str_dup_safe(const char *str);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/user.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/user.c 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/user.c
@@ -0,0 +1,58 @@
+/* user.c - the itsy package management system
+
@ -13196,10 +13062,8 @@ Index: busybox-1.8.1/archival/libipkg/user.c
+
+ return response;
+}
Index: busybox-1.8.1/archival/libipkg/user.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/user.h 2007-11-10 17:40:53.400766935 +0100
--- /dev/null
+++ b/archival/libipkg/user.h
@@ -0,0 +1,23 @@
+/* user.c - the itsy package management system
+
@ -13224,10 +13088,8 @@ Index: busybox-1.8.1/archival/libipkg/user.h
+
+char *get_user_response(const char *format, ...);
+
Index: busybox-1.8.1/archival/libipkg/void_list.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/void_list.c 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/void_list.c
@@ -0,0 +1,194 @@
+/* void_list.c - the itsy package management system
+
@ -13423,10 +13285,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.c
+ else
+ return NULL;
+}
Index: busybox-1.8.1/archival/libipkg/void_list.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/void_list.h 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/void_list.h
@@ -0,0 +1,59 @@
+/* void_list.h - the itsy package management system
+
@ -13487,10 +13347,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.h
+void *void_list_remove_elt(void_list_t *list, const void *target_data, void_list_cmp_t cmp);
+
+#endif
Index: busybox-1.8.1/archival/libipkg/xsystem.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/xsystem.c 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/xsystem.c
@@ -0,0 +1,64 @@
+/* xsystem.c - system(3) with error messages
+
@ -13556,10 +13414,8 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.c
+ return -1;
+}
+
Index: busybox-1.8.1/archival/libipkg/xsystem.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/archival/libipkg/xsystem.h 2007-11-10 17:40:53.404767161 +0100
--- /dev/null
+++ b/archival/libipkg/xsystem.h
@@ -0,0 +1,34 @@
+/* xsystem.h - system(3) with error messages
+
@ -13595,11 +13451,9 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.h
+
+#endif
+
Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
===================================================================
--- busybox-1.8.1.orig/archival/libunarchive/data_extract_all.c 2007-11-10 17:39:21.471528185 +0100
+++ busybox-1.8.1/archival/libunarchive/data_extract_all.c 2007-11-10 17:40:53.404767161 +0100
@@ -129,3 +129,17 @@
--- a/archival/libunarchive/data_extract_all.c
+++ b/archival/libunarchive/data_extract_all.c
@@ -144,3 +144,17 @@
}
}
}
@ -13617,10 +13471,8 @@ Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
+ }
+}
+
Index: busybox-1.8.1/archival/libunarchive/Kbuild
===================================================================
--- busybox-1.8.1.orig/archival/libunarchive/Kbuild 2007-11-10 17:39:21.479528641 +0100
+++ busybox-1.8.1/archival/libunarchive/Kbuild 2007-11-10 17:40:53.408767391 +0100
--- a/archival/libunarchive/Kbuild
+++ b/archival/libunarchive/Kbuild
@@ -54,6 +54,7 @@
lib-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o
lib-$(CONFIG_GUNZIP) += decompress_unzip.o
@ -13629,11 +13481,9 @@ Index: busybox-1.8.1/archival/libunarchive/Kbuild
lib-$(CONFIG_RPM2CPIO) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_RPM) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_FEATURE_RPM_BZ2) += decompress_bunzip2.o
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:39:21.487529096 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:40:53.408767391 +0100
@@ -198,6 +198,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -200,6 +200,7 @@
USE_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
USE_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
@ -13641,11 +13491,9 @@ Index: busybox-1.8.1/include/applets.h
USE_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_NEVER))
Index: busybox-1.8.1/include/unarchive.h
===================================================================
--- busybox-1.8.1.orig/include/unarchive.h 2007-11-10 17:39:21.495529554 +0100
+++ busybox-1.8.1/include/unarchive.h 2007-11-10 17:40:53.408767391 +0100
@@ -74,6 +74,7 @@
--- a/include/unarchive.h
+++ b/include/unarchive.h
@@ -82,6 +82,7 @@
extern void data_skip(archive_handle_t *archive_handle);
extern void data_extract_all(archive_handle_t *archive_handle);
@ -13653,11 +13501,9 @@ Index: busybox-1.8.1/include/unarchive.h
extern void data_extract_to_stdout(archive_handle_t *archive_handle);
extern void data_extract_to_buffer(archive_handle_t *archive_handle);
Index: busybox-1.8.1/include/usage.h
===================================================================
--- busybox-1.8.1.orig/include/usage.h 2007-11-10 17:40:53.208755993 +0100
+++ busybox-1.8.1/include/usage.h 2007-11-10 17:40:53.412767617 +0100
@@ -1294,6 +1294,82 @@
--- a/include/usage.h
+++ b/include/usage.h
@@ -1425,6 +1425,82 @@
"$ ls -la /tmp/busybox*\n" \
"-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
@ -13739,12 +13585,10 @@ Index: busybox-1.8.1/include/usage.h
+
#define halt_trivial_usage \
"[-d delay] [-n] [-f]"
#define halt_full_usage \
Index: busybox-1.8.1/Makefile
===================================================================
--- busybox-1.8.1.orig/Makefile 2007-11-10 17:39:21.511530465 +0100
+++ busybox-1.8.1/Makefile 2007-11-10 17:40:53.412767617 +0100
@@ -428,6 +428,7 @@
#define halt_full_usage "\n\n" \
--- a/Makefile
+++ b/Makefile
@@ -444,6 +444,7 @@
libs-y := \
archival/ \

@ -1,8 +1,25 @@
Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
===================================================================
--- busybox-1.8.1.orig/coreutils/md5_sha1_sum.c 2007-11-10 02:40:51.000000000 +0100
+++ busybox-1.8.1/coreutils/md5_sha1_sum.c 2007-11-10 17:05:59.957468399 +0100
@@ -8,75 +8,10 @@
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1211,6 +1211,7 @@
extern const char bb_uuenc_tbl_std[];
void bb_uuencode(char *store, const void *s, int length, const char *tbl);
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
typedef struct sha1_ctx_t {
uint32_t count[2];
uint32_t hash[5];
@@ -1232,6 +1233,8 @@
void md5_begin(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);
+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);
uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -8,72 +8,10 @@
#include "libbb.h"
@ -19,7 +36,7 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- /* xzalloc zero-terminates */
- char *hex_value = xzalloc((hash_length * 2) + 1);
- bin2hex(hex_value, (char*)hash_value, hash_length);
- return hex_value;
- return (unsigned char *)hex_value;
-}
-
-static uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
@ -34,12 +51,9 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- void (*update)(const void*, size_t, void*);
- void (*final)(void*, void*);
-
- src_fd = STDIN_FILENO;
- if (NOT_LONE_DASH(filename)) {
- src_fd = open_or_warn(filename, O_RDONLY);
- if (src_fd < 0) {
- return NULL;
- }
- src_fd = open_or_warn_stdin(filename);
- if (src_fd < 0) {
- return NULL;
- }
-
- /* figure specific hash algorithims */
@ -76,46 +90,21 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
-}
-
int md5_sha1_sum_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int md5_sha1_sum_main(int argc, char **argv)
int md5_sha1_sum_main(int argc ATTRIBUTE_UNUSED, char **argv)
{
Index: busybox-1.8.1/include/libbb.h
===================================================================
--- busybox-1.8.1.orig/include/libbb.h 2007-11-10 16:55:07.048261223 +0100
+++ busybox-1.8.1/include/libbb.h 2007-11-10 17:04:07.543062264 +0100
@@ -1022,6 +1022,7 @@
extern const char bb_uuenc_tbl_std[];
void bb_uuencode(char *store, const void *s, int length, const char *tbl);
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
typedef struct sha1_ctx_t {
uint32_t count[2];
uint32_t hash[5];
@@ -1043,6 +1044,8 @@
void md5_begin(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);
+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);
uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
Index: busybox-1.8.1/libbb/Kbuild
===================================================================
--- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 02:40:52.000000000 +0100
+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
@@ -39,6 +39,7 @@
--- a/libbb/Kbuild
+++ b/libbb/Kbuild
@@ -40,6 +40,7 @@
lib-y += get_last_path_component.o
lib-y += get_line_from_file.o
lib-y += getopt32.o
+lib-y += hash.o
lib-y += getpty.o
lib-y += herror_msg.o
lib-y += herror_msg_and_die.o
lib-y += human_readable.o
Index: busybox-1.8.1/libbb/hash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/libbb/hash.c 2007-11-10 17:04:07.551062729 +0100
@@ -0,0 +1,81 @@
--- /dev/null
+++ b/libbb/hash.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2003 Glenn L. McGrath
+ * Copyright (C) 2003-2004 Erik Andersen
@ -155,12 +144,9 @@ Index: busybox-1.8.1/libbb/hash.c
+ void (*update)(const void*, size_t, void*);
+ void (*final)(void*, void*);
+
+ src_fd = STDIN_FILENO;
+ if (NOT_LONE_DASH(filename)) {
+ src_fd = open_or_warn(filename, O_RDONLY);
+ if (src_fd < 0) {
+ return NULL;
+ }
+ src_fd = open_or_warn_stdin(filename);
+ if (src_fd < 0) {
+ return NULL;
+ }
+
+ /* figure specific hash algorithims */

@ -1,8 +1,6 @@
Index: busybox-1.8.1/editors/awk.c
===================================================================
--- busybox-1.8.1.orig/editors/awk.c 2007-11-10 16:55:07.032260312 +0100
+++ busybox-1.8.1/editors/awk.c 2007-11-10 17:07:04.493146078 +0100
@@ -33,6 +33,11 @@
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -32,6 +32,11 @@
/* 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)
@ -14,23 +12,22 @@ Index: busybox-1.8.1/editors/awk.c
/* Variable */
typedef struct var_s {
unsigned type; /* flags */
@@ -54,9 +59,14 @@
@@ -53,9 +58,14 @@
} chain;
/* Function */
+typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
typedef struct func_s {
unsigned nargs;
- struct chain_s body;
+ enum { AWKFUNC, CFUNC } type;
+ union {
+ awk_cfunc cfunc;
+ struct chain_s body;
struct chain_s body;
+ } x;
} func;
/* I/O stream */
@@ -1400,7 +1410,8 @@
@@ -1395,7 +1405,8 @@
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
@ -40,7 +37,7 @@ Index: busybox-1.8.1/editors/awk.c
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
@@ -1409,7 +1420,7 @@
@@ -1404,7 +1415,7 @@
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
@ -49,7 +46,7 @@ Index: busybox-1.8.1/editors/awk.c
chain_group();
clear_array(ahash);
@@ -2372,7 +2383,8 @@
@@ -2367,7 +2378,8 @@
break;
case XC( OC_FUNC ):
@ -59,7 +56,7 @@ Index: busybox-1.8.1/editors/awk.c
syntax_error(EMSG_UNDEF_FUNC);
X.v = R.v = nvalloc(op->r.f->nargs+1);
@@ -2389,7 +2401,10 @@
@@ -2384,7 +2396,10 @@
fnargs = X.v;
L.s = g_progname;
@ -71,7 +68,7 @@ Index: busybox-1.8.1/editors/awk.c
g_progname = L.s;
nvfree(fnargs);
@@ -2753,6 +2768,12 @@
@@ -2748,6 +2763,12 @@
}
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@ -84,7 +81,7 @@ Index: busybox-1.8.1/editors/awk.c
int awk_main(int argc, char **argv)
{
unsigned opt;
@@ -2817,6 +2838,11 @@
@@ -2812,6 +2833,11 @@
*s1 = '=';
}
}
@ -93,13 +90,11 @@ Index: busybox-1.8.1/editors/awk.c
+ do_awx(argc, argv);
+#endif
+
opt_complementary = "v::f::";
opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
opt_complementary = "v::f::"; /* -v and -f can occur multiple times */
opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, &opt_W);
argv += optind;
Index: busybox-1.8.1/editors/awx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx.c 2007-11-10 17:06:19.258568308 +0100
--- /dev/null
+++ b/editors/awx.c
@@ -0,0 +1,636 @@
+/*
+ * awk web extension
@ -737,10 +732,8 @@ Index: busybox-1.8.1/editors/awx.c
+ return awk_main(argc, argv);
+}
+
Index: busybox-1.8.1/editors/awx_parser.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx_parser.h 2007-11-10 17:06:19.266568760 +0100
--- /dev/null
+++ b/editors/awx_parser.h
@@ -0,0 +1,38 @@
+#ifndef __TEMPLATE_PARSER_H
+#define __TEMPLATE_PARSER_H
@ -780,10 +773,8 @@ Index: busybox-1.8.1/editors/awx_parser.h
+void free_template(struct template_cb *cb, struct template_element *e);
+
+#endif
Index: busybox-1.8.1/editors/awx_parser.l
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/editors/awx_parser.l 2007-11-10 17:06:19.270568989 +0100
--- /dev/null
+++ b/editors/awx_parser.l
@@ -0,0 +1,302 @@
+%{
+#include <stdio.h>
@ -1087,10 +1078,8 @@ Index: busybox-1.8.1/editors/awx_parser.l
+ free(e);
+ return free_template(cb, next);
+}
Index: busybox-1.8.1/editors/Config.in
===================================================================
--- busybox-1.8.1.orig/editors/Config.in 2007-11-10 02:40:54.000000000 +0100
+++ busybox-1.8.1/editors/Config.in 2007-11-10 17:06:19.274569218 +0100
--- a/editors/Config.in
+++ b/editors/Config.in
@@ -12,6 +12,13 @@
Awk is used as a pattern scanning and processing language. This is
the BusyBox implementation of that programming language.
@ -1105,10 +1094,8 @@ Index: busybox-1.8.1/editors/Config.in
config FEATURE_AWK_MATH
bool "Enable math functions (requires libm)"
default y
Index: busybox-1.8.1/editors/Kbuild
===================================================================
--- busybox-1.8.1.orig/editors/Kbuild 2007-11-10 02:40:54.000000000 +0100
+++ busybox-1.8.1/editors/Kbuild 2007-11-10 17:06:19.278569448 +0100
--- a/editors/Kbuild
+++ b/editors/Kbuild
@@ -12,3 +12,12 @@
lib-$(CONFIG_PATCH) += patch.o
lib-$(CONFIG_SED) += sed.o
@ -1122,22 +1109,30 @@ Index: busybox-1.8.1/editors/Kbuild
+editors/awx_parser.o: editors/awx_parser.c FORCE
+ $(call cmd,force_checksrc)
+ $(call if_changed_rule,cc_o_c)
Index: busybox-1.8.1/include/applets.h
===================================================================
--- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:03:38.957433264 +0100
+++ busybox-1.8.1/include/applets.h 2007-11-10 17:06:19.282569674 +0100
@@ -83,6 +83,7 @@
--- a/include/applets.h
+++ b/include/applets.h
@@ -77,6 +77,7 @@
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(ash, _BB_DIR_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_AWK(APPLET_ODDNAME(awx, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awx))
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_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
Index: busybox-1.8.1/include/cgi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/include/cgi.h 2007-11-10 17:06:19.282569674 +0100
--- a/include/usage.h
+++ b/include/usage.h
@@ -114,6 +114,9 @@
"\n -F sep Use sep as field separator" \
"\n -f file Read program from file" \
+#define awx_trivial_usage NOUSAGE_STR
+#define awx_full_usage ""
+
#define basename_trivial_usage \
"FILE [SUFFIX]"
#define basename_full_usage "\n\n" \
--- /dev/null
+++ b/include/cgi.h
@@ -0,0 +1,8 @@
+#ifndef CGI_H
+#define CGI_H
@ -1147,10 +1142,8 @@ Index: busybox-1.8.1/include/cgi.h
+int cgi_init(var_handler);
+
+#endif
Index: busybox-1.8.1/libbb/cgi.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.8.1/libbb/cgi.c 2007-11-10 17:06:19.282569674 +0100
--- /dev/null
+++ b/libbb/cgi.c
@@ -0,0 +1,457 @@
+/* --------------------------------------------------------------------------
+ * functions for processing cgi form data
@ -1609,11 +1602,9 @@ Index: busybox-1.8.1/libbb/cgi.c
+
+ return retval;
+}
Index: busybox-1.8.1/libbb/Kbuild
===================================================================
--- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:06:19.282569674 +0100
@@ -101,6 +101,7 @@
--- a/libbb/Kbuild
+++ b/libbb/Kbuild
@@ -112,6 +112,7 @@
lib-y += xreadlink.o
# conditionally compiled objects:

@ -1,7 +1,5 @@
Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_conf.c
+++ b/archival/libipkg/ipkg_conf.c
@@ -66,6 +66,8 @@
{ "offline_root_pre_script_cmd", IPKG_OPT_TYPE_STRING, &conf->offline_root_pre_script_cmd },
{ "proxy_passwd", IPKG_OPT_TYPE_STRING, &conf->proxy_passwd },
@ -21,10 +19,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
pkg_hash_init("pkg-hash", &conf->pkg_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("file-hash", &conf->file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("obs-file-hash", &conf->obs_file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_conf.h
+++ b/archival/libipkg/ipkg_conf.h
@@ -79,6 +79,10 @@
char *proxy_user;
char *proxy_passwd;
@ -36,10 +32,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
hash_table_t pkg_hash;
hash_table_t file_hash;
hash_table_t obs_file_hash;
Index: busybox-1.7.2/archival/libipkg/ipkg_download.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_download.c 2007-10-30 15:38:45.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_download.c 2007-10-30 15:38:47.000000000 -0500
--- a/archival/libipkg/ipkg_download.c
+++ b/archival/libipkg/ipkg_download.c
@@ -69,8 +69,12 @@
}

@ -1,7 +1,5 @@
Index: busybox-1.7.2/archival/libipkg/ipkg_install.c
===================================================================
--- busybox-1.7.2.orig/archival/libipkg/ipkg_install.c 2007-10-30 17:15:31.000000000 -0500
+++ busybox-1.7.2/archival/libipkg/ipkg_install.c 2007-10-30 17:15:33.000000000 -0500
--- a/archival/libipkg/ipkg_install.c
+++ b/archival/libipkg/ipkg_install.c
@@ -136,6 +136,7 @@
ipkg_error_t ipkg_install_by_name(ipkg_conf_t *conf, const char *pkg_name)
{

@ -1,7 +1,5 @@
Index: busybox-1.8.2/archival/libipkg/pkg.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-03 17:33:57.000000000 +0100
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -575,25 +575,28 @@
return temp;
}
@ -36,16 +34,10 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
} else if (strcasecmp(field, "Conflicts") == 0) {
int i;
Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-03 17:25:55.000000000 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-03 17:30:14.000000000 +0100
-85,20 +85,17 @@
{
char file_name[1048], md5sum[1048]; /* please tell me there aren't any longer that 1k */
- if(!strncmp(raw, "Conffiles:", 10))
+ if(!strncmp(raw, "Conffiles:",10))
--- a/archival/libipkg/pkg_parse.c
+++ b/archival/libipkg/pkg_parse.c
@@ -88,17 +88,14 @@
if(!strncmp(raw, "Conffiles:", 10))
raw += strlen("Conffiles:");
+ while(*raw && isspace(*raw)) raw++;
@ -55,14 +47,13 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
- while (*raw && isspace(*raw)) {
- raw++;
- }
- raw += strlen(file_name);
raw += strlen(file_name);
- while (*raw && isspace(*raw)) {
- raw++;
- }
- raw += strlen(md5sum);
+ raw += strlen(file_name);
+ while(*raw && isspace(*raw)) raw++;
+ raw += strlen(md5sum);
+ while(*raw && isspace(*raw)) raw++;
raw += strlen(md5sum);
+ while(*raw && isspace(*raw)) raw++;
}
}
}

@ -1,7 +1,5 @@
Index: busybox-1.8.2/archival/libipkg/pkg.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-06 03:14:12.003658206 +0100
+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-06 03:24:18.187737063 +0100
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -224,8 +224,7 @@
if (err) { return err; }
@ -12,10 +10,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
fclose(control_file);
Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_hash.c 2008-01-06 03:14:12.231671203 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_hash.c 2008-01-06 03:28:38.218555373 +0100
--- a/archival/libipkg/pkg_hash.c
+++ b/archival/libipkg/pkg_hash.c
@@ -89,20 +89,20 @@
pkg_src_t *src, pkg_dest_t *dest, int is_status_file)
{
@ -58,11 +54,9 @@ Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
return 0;
}
Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-06 03:14:12.283674167 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-06 03:38:24.111943535 +0100
@@ -227,6 +227,161 @@
--- a/archival/libipkg/pkg_parse.c
+++ b/archival/libipkg/pkg_parse.c
@@ -224,6 +224,161 @@
Enhances, perhaps we could generalize all of these and save some
code duplication.
*/
@ -224,7 +218,7 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
{
int reading_conffiles, reading_description;
@@ -345,6 +500,7 @@
@@ -342,6 +497,7 @@
return EINVAL;
}
}
@ -232,10 +226,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_valorize_other_field(pkg_t *pkg, char ***raw)
{
Index: busybox-1.8.2/archival/libipkg/pkg_parse.h
===================================================================
--- busybox-1.8.2.orig/archival/libipkg/pkg_parse.h 2008-01-06 03:14:12.303675307 +0100
+++ busybox-1.8.2/archival/libipkg/pkg_parse.h 2008-01-06 03:39:03.954214018 +0100
--- a/archival/libipkg/pkg_parse.h
+++ b/archival/libipkg/pkg_parse.h
@@ -25,7 +25,10 @@
char ** parseDependsString(char * raw, int * depends_count);
int parseVersion(pkg_t *pkg, char *raw);

@ -1,12 +1,10 @@
Index: busybox-1.8.2/networking/udhcp/dhcpc.c
===================================================================
--- busybox-1.8.2.orig/networking/udhcp/dhcpc.c 2008-01-03 05:00:31.506419917 +0100
+++ busybox-1.8.2/networking/udhcp/dhcpc.c 2008-01-03 05:00:44.311149618 +0100
@@ -65,7 +65,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -63,7 +63,6 @@
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
- udhcp_run_script(NULL, "deconfig");
case REQUESTING:
case RELEASED:
change_mode(LISTEN_RAW);
change_listen_mode(LISTEN_RAW);

@ -1,6 +1,5 @@
diff -urN busybox-1.8.2.old/archival/libipkg/pkg_extract.c busybox-1.8.2.dev/archival/libipkg/pkg_extract.c
--- busybox-1.8.2.old/archival/libipkg/pkg_extract.c 2008-01-23 22:18:44.000000000 +0100
+++ busybox-1.8.2.dev/archival/libipkg/pkg_extract.c 2008-01-23 22:20:31.000000000 +0100
--- a/archival/libipkg/pkg_extract.c
+++ b/archival/libipkg/pkg_extract.c
@@ -85,6 +85,7 @@
free(archive->buffer);
free(archive->accept);

@ -0,0 +1,43 @@
--- a/archival/libipkg/pkg.c
+++ b/archival/libipkg/pkg.c
@@ -1139,8 +1139,12 @@
return 0;
}
-int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b)
+int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b)
{
+ pkg_t * const *p1 = pkg_a;
+ pkg_t * const *p2 = pkg_b;
+ const pkg_t *a = *p1;
+ const pkg_t *b = *p2;
int namecmp;
int vercmp;
if (!a->name || !b->name) {
@@ -1167,8 +1171,12 @@
return 0;
}
-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b)
+int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b)
{
+ abstract_pkg_t * const *ap1 = apkg_a;
+ abstract_pkg_t * const *ap2 = apkg_b;
+ const abstract_pkg_t *a = *ap1;
+ const abstract_pkg_t *b = *ap2;
if (!a->name || !b->name) {
fprintf(stderr, "abstract_pkg_name_compare: a=%p a->name=%p b=%p b->name=%p\n",
a, a->name, b, b->name);
--- a/archival/libipkg/pkg.h
+++ b/archival/libipkg/pkg.h
@@ -191,8 +191,8 @@
char *pkg_version_str_alloc(pkg_t *pkg);
int pkg_compare_versions(const pkg_t *pkg, const pkg_t *ref_pkg);
-int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b);
-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b);
+int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b);
+int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b);
char * pkg_formatted_info(pkg_t *pkg );
char * pkg_formatted_field(pkg_t *pkg, const char *field );

@ -0,0 +1,9 @@
--- a/coreutils/basename.c
+++ b/coreutils/basename.c
@@ -48,5 +48,5 @@
/* puts(s) will do, but we can do without stdio this way: */
s[m++] = '\n';
- return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
+ return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
}

@ -0,0 +1,55 @@
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -261,26 +261,33 @@
case '0':
#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
if (last_char_is(file_header->name, '/')) {
- file_header->mode |= S_IFDIR;
- } else
+ goto set_dir;
+ }
#endif
file_header->mode |= S_IFREG;
break;
case '2':
file_header->mode |= S_IFLNK;
+ /* have seen tarballs with size field containing
+ * the size of the link target's name */
+ size0:
+ file_header->size = 0;
break;
case '3':
file_header->mode |= S_IFCHR;
- break;
+ goto size0; /* paranoia */
case '4':
file_header->mode |= S_IFBLK;
- break;
+ goto size0;
case '5':
+#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
+ set_dir:
+#endif
file_header->mode |= S_IFDIR;
- break;
+ goto size0;
case '6':
file_header->mode |= S_IFIFO;
- break;
+ goto size0;
#if ENABLE_FEATURE_TAR_GNU_EXTENSIONS
case 'L':
/* free: paranoia: tar with several consecutive longnames */
--- a/archival/libunarchive/seek_by_jump.c
+++ b/archival/libunarchive/seek_by_jump.c
@@ -8,7 +8,9 @@
void seek_by_jump(const archive_handle_t *archive_handle, unsigned amount)
{
- if (lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1) {
+ if (amount
+ && lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1
+ ) {
if (errno == ESPIPE)
seek_by_read(archive_handle, amount);
else

@ -0,0 +1,155 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1569,14 +1569,14 @@
static char *optptr; /* used by nextopt */
/*
- * XXX - should get rid of. have all builtins use getopt(3). the
- * library getopt must have the BSD extension static variable "optreset"
- * otherwise it can't be used within the shell safely.
+ * XXX - should get rid of. Have all builtins use getopt(3).
+ * The library getopt must have the BSD extension static variable
+ * "optreset", otherwise it can't be used within the shell safely.
*
- * Standard option processing (a la getopt) for builtin routines. The
- * only argument that is passed to nextopt is the option string; the
- * other arguments are unnecessary. It return the character, or '\0' on
- * end of input.
+ * Standard option processing (a la getopt) for builtin routines.
+ * The only argument that is passed to nextopt is the option string;
+ * the other arguments are unnecessary. It returns the character,
+ * or '\0' on end of input.
*/
static int
nextopt(const char *optstring)
@@ -1587,13 +1587,20 @@
p = optptr;
if (p == NULL || *p == '\0') {
+ /* We ate entire "-param", take next one */
p = *argptr;
- if (p == NULL || *p != '-' || *++p == '\0')
+ if (p == NULL)
+ return '\0';
+ if (*p != '-')
+ return '\0';
+ if (*++p == '\0') /* just "-" ? */
return '\0';
argptr++;
- if (LONE_DASH(p)) /* check for "--" */
+ if (LONE_DASH(p)) /* "--" ? */
return '\0';
+ /* p => next "-param" */
}
+ /* p => some option char in the middle of a "-param" */
c = *p++;
for (q = optstring; *q != c;) {
if (*q == '\0')
@@ -1602,8 +1609,11 @@
q++;
}
if (*++q == ':') {
- if (*p == '\0' && (p = *argptr++) == NULL)
- ash_msg_and_raise_error("no arg for -%c option", c);
+ if (*p == '\0') {
+ p = *argptr++;
+ if (p == NULL)
+ ash_msg_and_raise_error("no arg for -%c option", c);
+ }
optionarg = p;
p = NULL;
}
@@ -7428,8 +7438,10 @@
else if (c != 'p')
abort();
#endif
- if (verify)
+ /* Mimic bash: just "command -v" doesn't complain, it's a nop */
+ if (verify && (*argptr != NULL)) {
return describe_command(*argptr, verify - VERIFY_BRIEF);
+ }
return 0;
}
@@ -7788,16 +7800,33 @@
static void
evaltree(union node *n, int flags)
{
+
+ struct jmploc *volatile savehandler = exception_handler;
+ struct jmploc jmploc;
int checkexit = 0;
void (*evalfn)(union node *, int);
- unsigned isor;
int status;
+
if (n == NULL) {
TRACE(("evaltree(NULL) called\n"));
- goto out;
+ goto out1;
}
TRACE(("pid %d, evaltree(%p: %d, %d) called\n",
getpid(), n, n->type, flags));
+
+ exception_handler = &jmploc;
+ {
+ int err = setjmp(jmploc.loc);
+ if (err) {
+ /* if it was a signal, check for trap handlers */
+ if (exception == EXSIG)
+ goto out;
+ /* continue on the way out */
+ exception_handler = savehandler;
+ longjmp(exception_handler->loc, err);
+ }
+ }
+
switch (n->type) {
default:
#if DEBUG
@@ -7843,19 +7872,20 @@
goto calleval;
case NAND:
case NOR:
- case NSEMI:
+ case NSEMI: {
+
#if NAND + 1 != NOR
#error NAND + 1 != NOR
#endif
#if NOR + 1 != NSEMI
#error NOR + 1 != NSEMI
#endif
- isor = n->type - NAND;
+ unsigned is_or = n->type - NAND;
evaltree(
n->nbinary.ch1,
- (flags | ((isor >> 1) - 1)) & EV_TESTED
+ (flags | ((is_or >> 1) - 1)) & EV_TESTED
);
- if (!exitstatus == isor)
+ if (!exitstatus == is_or)
break;
if (!evalskip) {
n = n->nbinary.ch2;
@@ -7866,6 +7896,7 @@
break;
}
break;
+ }
case NIF:
evaltree(n->nif.test, EV_TESTED);
if (evalskip)
@@ -7886,8 +7917,11 @@
exitstatus = status;
break;
}
+
out:
- if ((checkexit & exitstatus))
+ exception_handler = savehandler;
+ out1:
+ if (checkexit & exitstatus)
evalskip |= SKIPEVAL;
else if (pendingsig && dotrap())
goto exexit;

@ -0,0 +1,28 @@
--- a/applets/usage_compressed
+++ b/applets/usage_compressed
@@ -14,14 +14,21 @@
echo 'static const char packed_usage[] ALIGN1 = {'
-# Extra effort to avoid using "od -t x1": -t is not available
-# in non-CONFIG_DESKTOPed busybox od
+## Breaks on big-endian systems!
+## # Extra effort to avoid using "od -t x1": -t is not available
+## # in non-CONFIG_DESKTOPed busybox od
+##
+## "$loc/usage" | bzip2 -1 | od -v -x \
+## | $SED -e 's/^[^ ]*//' \
+## | $SED -e 's/ //g' \
+## | grep -v '^$' \
+## | $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
-"$loc/usage" | bzip2 -1 | od -v -x \
+"$loc/usage" | bzip2 -1 | od -v -t x1 \
| $SED -e 's/^[^ ]*//' \
| $SED -e 's/ //g' \
| grep -v '^$' \
-| $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
+| $SED -e 's/\(..\)/0x\1,/g'
echo '};'
echo '#define SIZEOF_usage_messages' `expr 0 + $sz`
Loading…
Cancel
Save