Remove trailing whitespace. Update copyright to include 2004.

This commit is contained in:
Eric Andersen 2004-03-15 08:29:22 +00:00
parent 8854004b41
commit c7bda1ce65
374 changed files with 2048 additions and 2051 deletions

10
AUTHORS
View File

@ -23,7 +23,7 @@ Jeff Angielski <jeff@theptrgroup.com>
Edward Betts <edward@debian.org> Edward Betts <edward@debian.org>
expr, hostid, logname, whoami expr, hostid, logname, whoami
John Beppu <beppu@codepoet.org> John Beppu <beppu@codepoet.org>
du, nslookup, sort du, nslookup, sort
@ -33,8 +33,8 @@ Brian Candler <B.Candler@pobox.com>
Randolph Chung <tausq@debian.org> Randolph Chung <tausq@debian.org>
fbset, ping, hostname fbset, ping, hostname
Dave Cinege <dcinege@psychosis.com> Dave Cinege <dcinege@psychosis.com>
more(v2), makedevs, dutmp, modularization, auto links file, more(v2), makedevs, dutmp, modularization, auto links file,
various fixes, Linux Router Project maintenance various fixes, Linux Router Project maintenance
Jordan Crouse <jordan@cosmicpenguin.net> Jordan Crouse <jordan@cosmicpenguin.net>
@ -66,7 +66,7 @@ Matt Kraai <kraai@alumni.cmu.edu>
Stephan Linz <linz@li-pro.net> Stephan Linz <linz@li-pro.net>
ipcalc, Red Hat equivalence ipcalc, Red Hat equivalence
John Lombardo <john@deltanet.com> John Lombardo <john@deltanet.com>
tr tr
Glenn McGrath <bug1@optushome.com.au> Glenn McGrath <bug1@optushome.com.au>
@ -89,7 +89,7 @@ Vladimir Oleynik <dzo@simtreas.ru>
and irreconcilable critic of everything not perfect. and irreconcilable critic of everything not perfect.
Bruce Perens <bruce@pixar.com> Bruce Perens <bruce@pixar.com>
Original author of BusyBox in 1995, 1996. Some of his code can Original author of BusyBox in 1995, 1996. Some of his code can
still be found hiding here and there... still be found hiding here and there...
Tim Riker <Tim@Rikers.org> Tim Riker <Tim@Rikers.org>

414
Changelog
View File

@ -1,171 +1,171 @@
--------------------- ---------------------
PatchSet 3926 PatchSet 3926
Date: 2004/02/09 10:01:01 Date: 2004/02/09 10:01:01
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Buffalo appears to have resolved their GPL problems Buffalo appears to have resolved their GPL problems
Members: Members:
docs/busybox.net/products.html:1.5->1.6 docs/busybox.net/products.html:1.5->1.6
docs/busybox.net/shame.html:1.7->1.8 docs/busybox.net/shame.html:1.7->1.8
--------------------- ---------------------
PatchSet 3927 PatchSet 3927
Date: 2004/02/09 10:57:04 Date: 2004/02/09 10:57:04
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Update URL Update URL
Members: Members:
docs/busybox.net/products.html:1.6->1.7 docs/busybox.net/products.html:1.6->1.7
--------------------- ---------------------
PatchSet 3928 PatchSet 3928
Date: 2004/02/10 01:07:45 Date: 2004/02/10 01:07:45
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Support disabling pipe and redirect support Support disabling pipe and redirect support
Members: Members:
shell/lash.c:1.151->1.152 shell/lash.c:1.151->1.152
--------------------- ---------------------
PatchSet 3929 PatchSet 3929
Date: 2004/02/10 01:28:36 Date: 2004/02/10 01:28:36
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Initial effort at disabling job control as well Initial effort at disabling job control as well
Members: Members:
shell/lash.c:1.152->1.153 shell/lash.c:1.152->1.153
--------------------- ---------------------
PatchSet 3930 PatchSet 3930
Date: 2004/02/10 01:30:21 Date: 2004/02/10 01:30:21
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
oops. Leave the default feature set enbled for now... oops. Leave the default feature set enbled for now...
Members: Members:
shell/lash.c:1.153->1.154 shell/lash.c:1.153->1.154
--------------------- ---------------------
PatchSet 3931 PatchSet 3931
Date: 2004/02/13 08:09:43 Date: 2004/02/13 08:09:43
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Accomodate the fact that newer libc versions may in fact not Accomodate the fact that newer libc versions may in fact not
contain query_module and friends and more contain query_module and friends and more
Members: Members:
libbb/module_syscalls.c:1.13->1.14 libbb/module_syscalls.c:1.13->1.14
--------------------- ---------------------
PatchSet 3932 PatchSet 3932
Date: 2004/02/14 21:33:39 Date: 2004/02/14 21:33:39
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Avoid naming conflict with symbol in newer glibc headers Avoid naming conflict with symbol in newer glibc headers
Members: Members:
miscutils/hdparm.c:1.9->1.10 miscutils/hdparm.c:1.9->1.10
--------------------- ---------------------
PatchSet 3933 PatchSet 3933
Date: 2004/02/17 07:51:31 Date: 2004/02/17 07:51:31
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
define option names to be clearer, simplify nested if statements, remove define option names to be clearer, simplify nested if statements, remove
un-needed if statement, minor indenting change un-needed if statement, minor indenting change
Members: Members:
coreutils/date.c:1.41->1.42 coreutils/date.c:1.41->1.42
--------------------- ---------------------
PatchSet 3934 PatchSet 3934
Date: 2004/02/17 07:58:04 Date: 2004/02/17 07:58:04
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Woops, im getting ahead of myself, we dont have the -r (refernece) Woops, im getting ahead of myself, we dont have the -r (refernece)
option yet option yet
Members: Members:
coreutils/date.c:1.42->1.43 coreutils/date.c:1.42->1.43
--------------------- ---------------------
PatchSet 3935 PatchSet 3935
Date: 2004/02/17 10:16:21 Date: 2004/02/17 10:16:21
Author: mjn3 Author: mjn3
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Florian Schirmer <jolt@tuxbox.org>. When I rewrote the parser, Patch from Florian Schirmer <jolt@tuxbox.org>. When I rewrote the parser,
I overlooked the case of someone wanting to use a valid but empty suid I overlooked the case of someone wanting to use a valid but empty suid
config file. config file.
Members: Members:
applets/applets.c:1.21->1.22 applets/applets.c:1.21->1.22
--------------------- ---------------------
PatchSet 3936 PatchSet 3936
Date: 2004/02/17 11:55:06 Date: 2004/02/17 11:55:06
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Dont strip trailing '/' until _after_ i test to set if its there ! Dont strip trailing '/' until _after_ i test to set if its there !
Members: Members:
archival/libunarchive/get_header_tar.c:1.30->1.31 archival/libunarchive/get_header_tar.c:1.30->1.31
--------------------- ---------------------
PatchSet 3937 PatchSet 3937
Date: 2004/02/17 12:04:13 Date: 2004/02/17 12:04:13
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Remove debugging Remove debugging
Members: Members:
archival/libunarchive/get_header_tar.c:1.31->1.32 archival/libunarchive/get_header_tar.c:1.31->1.32
--------------------- ---------------------
PatchSet 3938 PatchSet 3938
Date: 2004/02/17 12:22:21 Date: 2004/02/17 12:22:21
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Add the -r option, patch from Rob with some help from myself. Add the -r option, patch from Rob with some help from myself.
Members: Members:
coreutils/date.c:1.43->1.44 coreutils/date.c:1.43->1.44
--------------------- ---------------------
PatchSet 3939 PatchSet 3939
Date: 2004/02/17 20:04:34 Date: 2004/02/17 20:04:34
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Mark Lord writes: Mark Lord writes:
@ -179,99 +179,99 @@ Cheers
Mark Lord Mark Lord
Real-Time Remedies Inc. Real-Time Remedies Inc.
Members: Members:
networking/inetd.c:1.14->1.15 networking/inetd.c:1.14->1.15
--------------------- ---------------------
PatchSet 3940 PatchSet 3940
Date: 2004/02/17 20:08:11 Date: 2004/02/17 20:08:11
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Remove the unused CONFIG_FEATURE_HTTPD_SET_CGI_VARS_TO_ENV option. Remove the unused CONFIG_FEATURE_HTTPD_SET_CGI_VARS_TO_ENV option.
Members: Members:
networking/Config.in:1.25->1.26 networking/Config.in:1.25->1.26
--------------------- ---------------------
PatchSet 3941 PatchSet 3941
Date: 2004/02/18 09:40:41 Date: 2004/02/18 09:40:41
Author: mjn3 Author: mjn3
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Fix vstype[] to match VS* defines. Patch from OpenWrt by mbm. Fix vstype[] to match VS* defines. Patch from OpenWrt by mbm.
Members: Members:
shell/ash.c:1.89->1.90 shell/ash.c:1.89->1.90
--------------------- ---------------------
PatchSet 3942 PatchSet 3942
Date: 2004/02/18 09:54:15 Date: 2004/02/18 09:54:15
Author: landley Author: landley
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Add -i option to sed, to edit files in-place. Add -i option to sed, to edit files in-place.
Members: Members:
editors/sed.c:1.159->1.160 editors/sed.c:1.159->1.160
--------------------- ---------------------
PatchSet 3943 PatchSet 3943
Date: 2004/02/18 10:14:17 Date: 2004/02/18 10:14:17
Author: mjn3 Author: mjn3
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from OpenWrt. Patch from OpenWrt.
Members: Members:
modutils/insmod.c:1.111->1.112 modutils/insmod.c:1.111->1.112
--------------------- ---------------------
PatchSet 3944 PatchSet 3944
Date: 2004/02/18 12:58:00 Date: 2004/02/18 12:58:00
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
remove debugging remove debugging
Members: Members:
networking/inetd.c:1.15->1.16 networking/inetd.c:1.15->1.16
--------------------- ---------------------
PatchSet 3945 PatchSet 3945
Date: 2004/02/18 13:12:53 Date: 2004/02/18 13:12:53
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Formatting Formatting
Members: Members:
networking/inetd.c:1.16->1.17 networking/inetd.c:1.16->1.17
--------------------- ---------------------
PatchSet 3946 PatchSet 3946
Date: 2004/02/18 13:19:58 Date: 2004/02/18 13:19:58
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Dont use same variable and struct name Dont use same variable and struct name
Members: Members:
networking/inetd.c:1.17->1.18 networking/inetd.c:1.17->1.18
--------------------- ---------------------
PatchSet 3947 PatchSet 3947
Date: 2004/02/19 00:44:08 Date: 2004/02/19 00:44:08
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Chris Larson (kergoth) writes: Chris Larson (kergoth) writes:
@ -286,15 +286,15 @@ Will never return until we run out of open files or similar.
Coreutils cp on the other hand will error with "cannot copy a directory, Coreutils cp on the other hand will error with "cannot copy a directory,
`out', into itself, `out'". Patch attached. `out', into itself, `out'". Patch attached.
Members: Members:
libbb/copy_file.c:1.28->1.29 libbb/copy_file.c:1.28->1.29
--------------------- ---------------------
PatchSet 3948 PatchSet 3948
Date: 2004/02/19 01:52:29 Date: 2004/02/19 01:52:29
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Chris Larson (kergoth) writes: Chris Larson (kergoth) writes:
@ -307,241 +307,241 @@ cp -a cpa cpa/cpb/cpc
Attached what appears to be a more sane fix. Apply on top of previous. Attached what appears to be a more sane fix. Apply on top of previous.
Please confirm sanity. Please confirm sanity.
Members: Members:
libbb/copy_file.c:1.29->1.30 libbb/copy_file.c:1.29->1.30
--------------------- ---------------------
PatchSet 3949 PatchSet 3949
Date: 2004/02/19 08:48:30 Date: 2004/02/19 08:48:30
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Add extra comments, freakout if a pax archive is encoutered. Add extra comments, freakout if a pax archive is encoutered.
Members: Members:
archival/libunarchive/get_header_tar.c:1.32->1.33 archival/libunarchive/get_header_tar.c:1.32->1.33
--------------------- ---------------------
PatchSet 3950 PatchSet 3950
Date: 2004/02/20 02:25:18 Date: 2004/02/20 02:25:18
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
A strict interpretation of the ustar format requires the type flag to be A strict interpretation of the ustar format requires the type flag to be
interpreted, we cannot depend on the file type being set in the mode interpreted, we cannot depend on the file type being set in the mode
field. field.
Members: Members:
archival/libunarchive/get_header_tar.c:1.33->1.34 archival/libunarchive/get_header_tar.c:1.33->1.34
--------------------- ---------------------
PatchSet 3951 PatchSet 3951
Date: 2004/02/20 02:34:42 Date: 2004/02/20 02:34:42
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Fix up hard links Fix up hard links
Members: Members:
archival/libunarchive/get_header_tar.c:1.34->1.35 archival/libunarchive/get_header_tar.c:1.34->1.35
--------------------- ---------------------
PatchSet 3952 PatchSet 3952
Date: 2004/02/20 09:55:37 Date: 2004/02/20 09:55:37
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Document missing cp options Document missing cp options
Members: Members:
include/usage.h:1.187->1.188 include/usage.h:1.187->1.188
--------------------- ---------------------
PatchSet 3953 PatchSet 3953
Date: 2004/02/21 07:49:54 Date: 2004/02/21 07:49:54
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Use return instead of exit, use == instead of & ==, left justify labels, Use return instead of exit, use == instead of & ==, left justify labels,
adjustment of whitespace. adjustment of whitespace.
Members: Members:
coreutils/mv.c:1.19->1.20 coreutils/mv.c:1.19->1.20
--------------------- ---------------------
PatchSet 3954 PatchSet 3954
Date: 2004/02/21 09:20:56 Date: 2004/02/21 09:20:56
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Sometimes i get carried away with the use of function pointers, im sure Sometimes i get carried away with the use of function pointers, im sure
it seemed like a good idea at the time. it seemed like a good idea at the time.
Members: Members:
archival/libunarchive/seek_by_char.c:1.3->1.4 archival/libunarchive/seek_by_char.c:1.3->1.4
include/libbb.h:1.126->1.127 include/libbb.h:1.126->1.127
libbb/copyfd.c:1.9->1.10 libbb/copyfd.c:1.9->1.10
--------------------- ---------------------
PatchSet 3955 PatchSet 3955
Date: 2004/02/22 00:27:34 Date: 2004/02/22 00:27:34
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
No need to check proxy env variable twice, ignore proxy env variable if No need to check proxy env variable twice, ignore proxy env variable if
its set to 0 its set to 0
Members: Members:
networking/wget.c:1.68->1.69 networking/wget.c:1.68->1.69
--------------------- ---------------------
PatchSet 3956 PatchSet 3956
Date: 2004/02/22 02:58:57 Date: 2004/02/22 02:58:57
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Return 1 upon failure Return 1 upon failure
Members: Members:
coreutils/md5_sha1_sum.c:1.4->1.5 coreutils/md5_sha1_sum.c:1.4->1.5
--------------------- ---------------------
PatchSet 3957 PatchSet 3957
Date: 2004/02/22 03:33:53 Date: 2004/02/22 03:33:53
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Ptch by Hideki IWAMOTO, fix a bug preventing tftp from getting or Ptch by Hideki IWAMOTO, fix a bug preventing tftp from getting or
putting more than 0xffff blocks. putting more than 0xffff blocks.
Members: Members:
networking/tftp.c:1.21->1.22 networking/tftp.c:1.21->1.22
--------------------- ---------------------
PatchSet 3958 PatchSet 3958
Date: 2004/02/22 04:12:58 Date: 2004/02/22 04:12:58
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Update usage for ftpget and ftpput Update usage for ftpget and ftpput
Members: Members:
include/usage.h:1.188->1.189 include/usage.h:1.188->1.189
--------------------- ---------------------
PatchSet 3959 PatchSet 3959
Date: 2004/02/22 04:17:26 Date: 2004/02/22 04:17:26
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Thomas Geulig, remove duplicate header Thomas Geulig, remove duplicate header
Members: Members:
init/init_shared.c:1.3->1.4 init/init_shared.c:1.3->1.4
--------------------- ---------------------
PatchSet 3960 PatchSet 3960
Date: 2004/02/22 04:44:21 Date: 2004/02/22 04:44:21
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Fixup braces (patch from Thomas Geulig), run through indent and manually Fixup braces (patch from Thomas Geulig), run through indent and manually
adjust. adjust.
Members: Members:
miscutils/crond.c:1.12->1.13 miscutils/crond.c:1.12->1.13
--------------------- ---------------------
PatchSet 3961 PatchSet 3961
Date: 2004/02/22 04:58:36 Date: 2004/02/22 04:58:36
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
remove duplicate header declarations remove duplicate header declarations
Members: Members:
networking/inetd.c:1.18->1.19 networking/inetd.c:1.18->1.19
--------------------- ---------------------
PatchSet 3962 PatchSet 3962
Date: 2004/02/22 07:20:25 Date: 2004/02/22 07:20:25
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Hideki IWAMOTO, output debugging messages to stderr Patch from Hideki IWAMOTO, output debugging messages to stderr
Members: Members:
networking/tftp.c:1.22->1.23 networking/tftp.c:1.22->1.23
--------------------- ---------------------
PatchSet 3963 PatchSet 3963
Date: 2004/02/22 07:38:36 Date: 2004/02/22 07:38:36
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Florian Schirmer. compile fix for debug builds Patch from Florian Schirmer. compile fix for debug builds
Members: Members:
miscutils/devfsd.c:1.7->1.8 miscutils/devfsd.c:1.7->1.8
--------------------- ---------------------
PatchSet 3964 PatchSet 3964
Date: 2004/02/22 08:33:37 Date: 2004/02/22 08:33:37
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Use /var/lib/hwclock for adjtime, its really a state file rather than a Use /var/lib/hwclock for adjtime, its really a state file rather than a
config file, so it should be in /etc, FHS mentions it also. config file, so it should be in /etc, FHS mentions it also.
Members: Members:
util-linux/hwclock.c:1.6->1.7 util-linux/hwclock.c:1.6->1.7
--------------------- ---------------------
PatchSet 3965 PatchSet 3965
Date: 2004/02/22 09:11:33 Date: 2004/02/22 09:11:33
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Use bb_getopt_ulflags, marginal saving, better argument checking. Use bb_getopt_ulflags, marginal saving, better argument checking.
Members: Members:
util-linux/hwclock.c:1.7->1.8 util-linux/hwclock.c:1.7->1.8
--------------------- ---------------------
PatchSet 3966 PatchSet 3966
Date: 2004/02/22 09:45:57 Date: 2004/02/22 09:45:57
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from James Zhu, telnetd window resizing support. Patch from James Zhu, telnetd window resizing support.
Members: Members:
networking/telnetd.c:1.9->1.10 networking/telnetd.c:1.9->1.10
--------------------- ---------------------
PatchSet 3967 PatchSet 3967
Date: 2004/02/22 11:13:28 Date: 2004/02/22 11:13:28
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Vodz. last_patch_128 Vodz. last_patch_128
- declare applet_using as static from applets.c - declare applet_using as static from applets.c
@ -549,82 +549,82 @@ Vodz. last_patch_128
previous version cleared history after Ctrl-C previous version cleared history after Ctrl-C
- small spelling correction (by Friedrich Lobenstock) - small spelling correction (by Friedrich Lobenstock)
Members: Members:
applets/applets.c:1.22->1.23 applets/applets.c:1.22->1.23
shell/cmdedit.c:1.88->1.89 shell/cmdedit.c:1.88->1.89
--------------------- ---------------------
PatchSet 3968 PatchSet 3968
Date: 2004/02/22 11:25:13 Date: 2004/02/22 11:25:13
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Vodz, cleanup memory usage, send strdup error messages to Patch from Vodz, cleanup memory usage, send strdup error messages to
syslog. syslog.
Members: Members:
networking/inetd.c:1.19->1.20 networking/inetd.c:1.19->1.20
--------------------- ---------------------
PatchSet 3969 PatchSet 3969
Date: 2004/02/22 11:35:13 Date: 2004/02/22 11:35:13
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Chris Larson (kergoth), to allow multiple directores to be Patch from Chris Larson (kergoth), to allow multiple directores to be
unmounted at once. unmounted at once.
Members: Members:
docs/busybox.sgml:1.52->1.53 docs/busybox.sgml:1.52->1.53
util-linux/umount.c:1.62->1.63 util-linux/umount.c:1.62->1.63
--------------------- ---------------------
PatchSet 3970 PatchSet 3970
Date: 2004/02/22 11:46:49 Date: 2004/02/22 11:46:49
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
For the time being, revert the changes for detecting copying For the time being, revert the changes for detecting copying
a directory into itself. It is harder to do this correctly a directory into itself. It is harder to do this correctly
than it appears. Not trying at all seems a better compromise than it appears. Not trying at all seems a better compromise
for the time being, untill we can implement this correctly. for the time being, untill we can implement this correctly.
Members: Members:
libbb/copy_file.c:1.30->1.31 libbb/copy_file.c:1.30->1.31
--------------------- ---------------------
PatchSet 3971 PatchSet 3971
Date: 2004/02/22 11:55:09 Date: 2004/02/22 11:55:09
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Patch from Dmitry Zakharov, this line was missedfrom the last patch Patch from Dmitry Zakharov, this line was missedfrom the last patch
Members: Members:
editors/awk.c:1.5->1.6 editors/awk.c:1.5->1.6
--------------------- ---------------------
PatchSet 3972 PatchSet 3972
Date: 2004/02/22 12:17:33 Date: 2004/02/22 12:17:33
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Fix from Paul Kortekaas for syslog -C option, size should be in kB. Fix from Paul Kortekaas for syslog -C option, size should be in kB.
Members: Members:
sysklogd/syslogd.c:1.106->1.107 sysklogd/syslogd.c:1.106->1.107
--------------------- ---------------------
PatchSet 3973 PatchSet 3973
Date: 2004/02/22 12:25:47 Date: 2004/02/22 12:25:47
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Fernando Silveira writes: Fernando Silveira writes:
@ -639,33 +639,33 @@ Hi,
Thanks a lot! Thanks a lot!
Members: Members:
include/usage.h:1.189->1.190 include/usage.h:1.189->1.190
networking/Config.in:1.26->1.27 networking/Config.in:1.26->1.27
networking/telnet.c:1.41->1.42 networking/telnet.c:1.41->1.42
--------------------- ---------------------
PatchSet 3974 PatchSet 3974
Date: 2004/02/22 12:27:04 Date: 2004/02/22 12:27:04
Author: andersen Author: andersen
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
Bump up version in preparation for -pre8 Bump up version in preparation for -pre8
Members: Members:
Rules.mak:1.27->1.28 Rules.mak:1.27->1.28
--------------------- ---------------------
PatchSet 3975 PatchSet 3975
Date: 2004/02/23 08:11:07 Date: 2004/02/23 08:11:07
Author: bug1 Author: bug1
Branch: HEAD Branch: HEAD
Tag: (none) Tag: (none)
Log: Log:
bb_full_fd_action was incorrectly returning an error message causing bb_full_fd_action was incorrectly returning an error message causing
major breaking. major breaking.
Members: Members:
libbb/copyfd.c:1.10->1.11 libbb/copyfd.c:1.10->1.11

View File

@ -1,10 +1,10 @@
1) Run 'make config' or 'make menuconfig' and select the 1) Run 'make config' or 'make menuconfig' and select the
functionality that you wish to enable. functionality that you wish to enable.
2) Run 'make dep' 2) Run 'make dep'
3) Check the Makefile for any Makefile setting you wish 3) Check the Makefile for any Makefile setting you wish
to adjust for your system (things like like setting to adjust for your system (things like like setting
your cross compiler, adjusting optimizations, etc) your cross compiler, adjusting optimizations, etc)
4) Run 'make' 4) Run 'make'

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -219,7 +219,7 @@ clean:
docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \ docs/busybox.net/BusyBox.html busybox.links libbb/loop.h \
.config.old .hdepend busybox .config.old .hdepend busybox
- rm -rf _install - rm -rf _install
- find . -name .\*.flags -exec rm -f {} \; - find . -name .\*.flags -exec rm -f {} \;
- find . -name \*.o -exec rm -f {} \; - find . -name \*.o -exec rm -f {} \;
- find . -name \*.a -exec rm -f {} \; - find . -name \*.a -exec rm -f {} \;

18
README
View File

@ -1,5 +1,5 @@
Please see the LICENSE file for details on copying and usage. Please see the LICENSE file for details on copying and usage.
BusyBox combines tiny versions of many common UNIX utilities into a single BusyBox combines tiny versions of many common UNIX utilities into a single
small executable. It provides minimalist replacements for most of the utilities small executable. It provides minimalist replacements for most of the utilities
you usually find in fileutils, shellutils, findutils, textutils, grep, gzip, you usually find in fileutils, shellutils, findutils, textutils, grep, gzip,
@ -27,16 +27,16 @@ compiled in functions. By default, 'make install' will place the symlink
forest into `pwd`/_install unless you have defined the PREFIX environment forest into `pwd`/_install unless you have defined the PREFIX environment
variable (i.e., 'make PREFIX=/tmp/foo install') variable (i.e., 'make PREFIX=/tmp/foo install')
If you wish to install hardlinks, rather than symlinks, you can use If you wish to install hardlinks, rather than symlinks, you can use
'make install-hardlinks' instead. 'make install-hardlinks' instead.
---------------- ----------------
Supported architectures: Supported architectures:
Busybox in general will build on any architecture supported by gcc. It has Busybox in general will build on any architecture supported by gcc. It has
a few specialized features added for __sparc__ and __alpha__. insmod a few specialized features added for __sparc__ and __alpha__. insmod
functionality is currently limited to x86, ARM, SH3/4, powerpc, m68k, functionality is currently limited to x86, ARM, SH3/4, powerpc, m68k,
MIPS, cris, and v850e. MIPS, cris, and v850e.
Supported libcs: Supported libcs:
@ -69,7 +69,7 @@ Bugs:
If you find bugs, please submit a detailed bug report to the busybox mailing If you find bugs, please submit a detailed bug report to the busybox mailing
list at busybox@mail.busybox.net. A well-written bug report should include a list at busybox@mail.busybox.net. A well-written bug report should include a
transcript of a shell session that demonstrates the bad behavior and enables transcript of a shell session that demonstrates the bad behavior and enables
anyone else to duplicate the bug on their own machine. The following is such anyone else to duplicate the bug on their own machine. The following is such
an example: an example:
To: busybox@mail.busybox.net To: busybox@mail.busybox.net
@ -90,7 +90,7 @@ an example:
$ date $ date
llegal instruction llegal instruction
I am using Debian unstable, kernel version 2.4.19-rmk1 on an Netwinder, I am using Debian unstable, kernel version 2.4.19-rmk1 on an Netwinder,
and the latest uClibc from CVS. Thanks for the wonderful program! and the latest uClibc from CVS. Thanks for the wonderful program!
-Diligent -Diligent
@ -103,8 +103,8 @@ reports lacking such detail may never be fixed... Thanks for understanding.
FTP: FTP:
Source for the latest released version, as well as daily snapshots, can always Source for the latest released version, as well as daily snapshots, can always
be downloaded from be downloaded from
http://busybox.net/downloads/ http://busybox.net/downloads/
---------------- ----------------
@ -123,7 +123,7 @@ For those that are actively contributing there is even CVS write access:
---------------- ----------------
Please feed suggestions, bug reports, insults, and bribes back to: Please feed suggestions, bug reports, insults, and bribes back to:
Erik Andersen Erik Andersen
<andersen@codepoet.org> <andersen@codepoet.org>
<andersen@codepoet.org> <andersen@codepoet.org>

View File

@ -1,6 +1,6 @@
# Rules.make for busybox # Rules.make for busybox
# #
# Copyright (C) 2001-2003 Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -52,14 +52,14 @@ TARGET_OS=linux
HOSTCC = gcc HOSTCC = gcc
HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
LC_ALL:= C LC_ALL:= C
# If you want to add some simple compiler switches (like -march=i686), # If you want to add some simple compiler switches (like -march=i686),
# especially from the command line, use this instead of CFLAGS directly. # especially from the command line, use this instead of CFLAGS directly.
# For optimization overrides, it's better still to set OPTIMIZATION. # For optimization overrides, it's better still to set OPTIMIZATION.
CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS))) CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS)))
# If you have a "pristine" source directory, point BB_SRC_DIR to it. # If you have a "pristine" source directory, point BB_SRC_DIR to it.
# Experimental and incomplete; tell the mailing list # Experimental and incomplete; tell the mailing list
# <busybox@busybox.net> if you do or don't like it so far. # <busybox@busybox.net> if you do or don't like it so far.
@ -137,7 +137,7 @@ OPTIMIZATIONS=$(OPTIMIZATION) -fomit-frame-pointer
# by itself, instead of following it by the same half-dozen overrides # by itself, instead of following it by the same half-dozen overrides
# every time. The stuff below, on the other hand, is probably less # every time. The stuff below, on the other hand, is probably less
# prone to casual user adjustment. # prone to casual user adjustment.
# #
ifeq ($(strip $(CONFIG_LFS)),y) ifeq ($(strip $(CONFIG_LFS)),y)
# For large file summit support # For large file summit support

2
TODO
View File

@ -14,7 +14,7 @@ Possible apps to include some time:
----------- -----------
With sysvinit, reboot, poweroff and halt all used a named pipe, With sysvinit, reboot, poweroff and halt all used a named pipe,
/dev/initctl, to communicate with the init process. Busybox /dev/initctl, to communicate with the init process. Busybox
currently uses signals to communicate with init. This makes currently uses signals to communicate with init. This makes
busybox incompatible with sysvinit. We should probably use busybox incompatible with sysvinit. We should probably use

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -423,7 +423,7 @@ static void parse_config_file(void)
} }
/* Now get the the user/group info. */ /* Now get the the user/group info. */
s = (char *) bb_skip_whitespace(e); s = (char *) bb_skip_whitespace(e);
/* Note: We require whitespace between the mode and the /* Note: We require whitespace between the mode and the

View File

@ -13,7 +13,7 @@ int been_there_done_that = 0; /* Also used in applets.c */
const char *bb_applet_name; const char *bb_applet_name;
#ifdef CONFIG_FEATURE_INSTALLER #ifdef CONFIG_FEATURE_INSTALLER
/* /*
* directory table * directory table
* this should be consistent w/ the enum, busybox.h::Location, * this should be consistent w/ the enum, busybox.h::Location,
* or else... * or else...
@ -32,7 +32,7 @@ static const char* const install_dir[] = {
/* abstract link() */ /* abstract link() */
typedef int (*__link_f)(const char *, const char *); typedef int (*__link_f)(const char *, const char *);
/* /*
* Where in the filesystem is this busybox? * Where in the filesystem is this busybox?
* [return] * [return]
* malloc'd string w/ full pathname of busybox's location * malloc'd string w/ full pathname of busybox's location
@ -52,7 +52,7 @@ static void install_links(const char *busybox, int use_symbolic_links)
int i; int i;
int rc; int rc;
if (use_symbolic_links) if (use_symbolic_links)
Link = symlink; Link = symlink;
for (i = 0; applets[i].name != NULL; i++) { for (i = 0; applets[i].name != NULL; i++) {
@ -82,7 +82,7 @@ int main(int argc, char **argv)
bb_applet_name = s; bb_applet_name = s;
} }
#ifdef CONFIG_LOCALE_SUPPORT #ifdef CONFIG_LOCALE_SUPPORT
#ifdef CONFIG_INIT #ifdef CONFIG_INIT
if(getpid()!=1) /* Do not set locale for `init' */ if(getpid()!=1) /* Do not set locale for `init' */
#endif #endif
@ -100,9 +100,9 @@ int busybox_main(int argc, char **argv)
{ {
int col = 0, len, i; int col = 0, len, i;
#ifdef CONFIG_FEATURE_INSTALLER #ifdef CONFIG_FEATURE_INSTALLER
/* /*
* This style of argument parsing doesn't scale well * This style of argument parsing doesn't scale well
* in the event that busybox starts wanting more --options. * in the event that busybox starts wanting more --options.
* If someone has a cleaner approach, by all means implement it. * If someone has a cleaner approach, by all means implement it.
*/ */
@ -113,8 +113,8 @@ int busybox_main(int argc, char **argv)
/* to use symlinks, or not to use symlinks... */ /* to use symlinks, or not to use symlinks... */
if (argc > 2) { if (argc > 2) {
if ((strcmp(argv[2], "-s") == 0)) { if ((strcmp(argv[2], "-s") == 0)) {
use_symbolic_links = 1; use_symbolic_links = 1;
} }
} }
@ -150,7 +150,7 @@ int busybox_main(int argc, char **argv)
"\tBusyBox is a multi-call binary that combines many common Unix\n" "\tBusyBox is a multi-call binary that combines many common Unix\n"
"\tutilities into a single executable. Most people will create a\n" "\tutilities into a single executable. Most people will create a\n"
"\tlink to busybox for each function they wish to use, and BusyBox\n" "\tlink to busybox for each function they wish to use, and BusyBox\n"
"\twill act like whatever it was invoked as.\n" "\twill act like whatever it was invoked as.\n"
"\nCurrently defined functions:\n", bb_msg_full_version); "\nCurrently defined functions:\n", bb_msg_full_version);
while (a->name != 0) { while (a->name != 0) {

View File

@ -46,11 +46,11 @@ config CONFIG_BUNZIP2
sorting text compression algorithm, and Huffman coding. Compression sorting text compression algorithm, and Huffman coding. Compression
is generally considerably better than that achieved by more is generally considerably better than that achieved by more
conventional LZ77/LZ78-based compressors, and approaches the conventional LZ77/LZ78-based compressors, and approaches the
performance of the PPM family of statistical compressors. performance of the PPM family of statistical compressors.
The BusyBox bunzip2 applet is limited to de-compression only. The BusyBox bunzip2 applet is limited to de-compression only.
On an x86 system, this applet adds about 11K. On an x86 system, this applet adds about 11K.
Unless you have a specific application which requires bunzip2, you Unless you have a specific application which requires bunzip2, you
should probably say N here. should probably say N here.
@ -63,7 +63,7 @@ config CONFIG_CPIO
cpio has 110 bytes of overheads for every stored file. cpio has 110 bytes of overheads for every stored file.
This implementation of cpio can extract cpio archives created in the This implementation of cpio can extract cpio archives created in the
"newc" or "crc" format, it cannot create or modify them. "newc" or "crc" format, it cannot create or modify them.
Unless you have a specific application which requires cpio, you should Unless you have a specific application which requires cpio, you should
probably say N here. probably say N here.
@ -73,7 +73,7 @@ config CONFIG_DPKG
default n default n
help help
dpkg is a medium-level tool to install, build, remove and manage Debian packages. dpkg is a medium-level tool to install, build, remove and manage Debian packages.
This implementation of dpkg has a number of limitations, you should use the This implementation of dpkg has a number of limitations, you should use the
official dpkg if possible. official dpkg if possible.
@ -82,9 +82,9 @@ config CONFIG_DPKG_DEB
default n default n
help help
dpkg-deb packs, unpacks and provides information about Debian archives. dpkg-deb packs, unpacks and provides information about Debian archives.
This implementation of dpkg-deb cannot pack archives. This implementation of dpkg-deb cannot pack archives.
Unless you have a specific application which requires dpkg-deb, you should Unless you have a specific application which requires dpkg-deb, you should
probably say N here. probably say N here.
@ -94,7 +94,7 @@ config CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
depends on CONFIG_DPKG_DEB depends on CONFIG_DPKG_DEB
help help
This reduces dpkg-deb to the equivalent of "ar -p <deb> data.tar.gz | tar -zx". This reduces dpkg-deb to the equivalent of "ar -p <deb> data.tar.gz | tar -zx".
However it saves space as none of the extra dpkg-deb, ar or tar options are However it saves space as none of the extra dpkg-deb, ar or tar options are
needed, they are linked to internally. needed, they are linked to internally.
config CONFIG_GUNZIP config CONFIG_GUNZIP
@ -195,7 +195,7 @@ config CONFIG_FEATURE_TAR_GNU_EXTENSIONS
default y default y
depends on CONFIG_TAR depends on CONFIG_TAR
help help
With this option busybox supports GNU long filenames and With this option busybox supports GNU long filenames and
linknames. linknames.
config CONFIG_FEATURE_TAR_LONG_OPTIONS config CONFIG_FEATURE_TAR_LONG_OPTIONS
@ -241,7 +241,7 @@ config CONFIG_FEATURE_DEB_TAR_GZ
depends on CONFIG_DPKG || CONFIG_DPKG_DEB depends on CONFIG_DPKG || CONFIG_DPKG_DEB
help help
This is the default compression method inside the debian ar file. This is the default compression method inside the debian ar file.
If you want compatibility with standard .deb's you should say yes here. If you want compatibility with standard .deb's you should say yes here.
config CONFIG_FEATURE_DEB_TAR_BZ2 config CONFIG_FEATURE_DEB_TAR_BZ2
@ -251,7 +251,7 @@ config CONFIG_FEATURE_DEB_TAR_BZ2
help help
This allows dpkg and dpkg-deb to extract deb's that are compressed internally This allows dpkg and dpkg-deb to extract deb's that are compressed internally
with bzip2 instead of gzip. with bzip2 instead of gzip.
You only want this if you are creating your own custom debian packages that You only want this if you are creating your own custom debian packages that
use an internal control.tar.bz2 or data.tar.bz2. use an internal control.tar.bz2 or data.tar.bz2.

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,10 +1,10 @@
/* vi: set sw=4 ts=4: */ /* vi: set sw=4 ts=4: */
/* /*
* Mini ar implementation for busybox * Mini ar implementation for busybox
* *
* Copyright (C) 2000 by Glenn McGrath * Copyright (C) 2000 by Glenn McGrath
* Written by Glenn McGrath <bug1@optushome.com.au> 1 June 2000 * Written by Glenn McGrath <bug1@optushome.com.au> 1 June 2000
* *
* Based in part on BusyBox tar, Debian dpkg-deb and GNU ar. * Based in part on BusyBox tar, Debian dpkg-deb and GNU ar.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -2,7 +2,7 @@
/* /*
* Mini cpio implementation for busybox * Mini cpio implementation for busybox
* *
* Copyright (C) 2001 by Glenn McGrath * Copyright (C) 2001 by Glenn McGrath
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -62,7 +62,7 @@ extern int cpio_main(int argc, char **argv)
/* if both extract and test option are given, ignore extract option */ /* if both extract and test option are given, ignore extract option */
if (opt & CPIO_OPT_EXTRACT) { if (opt & CPIO_OPT_EXTRACT) {
opt &= ~CPIO_OPT_EXTRACT; opt &= ~CPIO_OPT_EXTRACT;
} }
archive_handle->action_header = header_list; archive_handle->action_header = header_list;
} }
if (opt & CPIO_OPT_EXTRACT) { if (opt & CPIO_OPT_EXTRACT) {

View File

@ -4,7 +4,7 @@
* *
* Written By Glenn McGrath with the help of others * Written By Glenn McGrath with the help of others
* Copyright (C) 2001 by Glenn McGrath * Copyright (C) 2001 by Glenn McGrath
* *
* Started life as a busybox implementation of udpkg * Started life as a busybox implementation of udpkg
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -54,7 +54,7 @@
* int's and chaos is assured, 16381 is the max prime for 14 bit field * int's and chaos is assured, 16381 is the max prime for 14 bit field
*/ */
/* NAME_HASH_PRIME, Stores package names and versions, /* NAME_HASH_PRIME, Stores package names and versions,
* I estimate it should be at least 50% bigger than PACKAGE_HASH_PRIME, * I estimate it should be at least 50% bigger than PACKAGE_HASH_PRIME,
* as there a lot of duplicate version numbers */ * as there a lot of duplicate version numbers */
#define NAME_HASH_PRIME 16381 #define NAME_HASH_PRIME 16381
@ -150,7 +150,7 @@ void make_hash(const char *key, unsigned int *start, unsigned int *decrement, co
* shift amount is mod 24 because long int is 32 bit and data * shift amount is mod 24 because long int is 32 bit and data
* to be shifted is 8, dont want to shift data to where it has * to be shifted is 8, dont want to shift data to where it has
* no effect*/ * no effect*/
hash_num += ((key[i] + key[i-1]) << ((key[i] * i) % 24)); hash_num += ((key[i] + key[i-1]) << ((key[i] * i) % 24));
} }
*start = (unsigned int) hash_num % hash_prime; *start = (unsigned int) hash_num % hash_prime;
*decrement = (unsigned int) 1 + (hash_num % (hash_prime - 1)); *decrement = (unsigned int) 1 + (hash_num % (hash_prime - 1));
@ -464,11 +464,11 @@ void add_split_dependencies(common_node_t *parent_node, const char *whole_line,
} else { } else {
or_edge = NULL; or_edge = NULL;
} }
if ( or_edge ) { if ( or_edge ) {
or_edge->name = search_name_hashtable(field); or_edge->name = search_name_hashtable(field);
or_edge->version = 0; // tracks the number of altenatives or_edge->version = 0; // tracks the number of altenatives
add_edge_to_node(parent_node, or_edge); add_edge_to_node(parent_node, or_edge);
} }
@ -572,7 +572,7 @@ unsigned int fill_package_struct(char *control_buffer)
goto fill_package_struct_cleanup; /* Oh no, the dreaded goto statement ! */ goto fill_package_struct_cleanup; /* Oh no, the dreaded goto statement ! */
} }
field_num = compare_string_array(field_names, field_name); field_num = compare_string_array(field_names, field_name);
switch(field_num) { switch(field_num) {
case 0: /* Package */ case 0: /* Package */
new_node->name = search_name_hashtable(field_value); new_node->name = search_name_hashtable(field_value);
@ -697,7 +697,7 @@ const char *describe_status(int status_num) {
return "is marked to be removed"; return "is marked to be removed";
if ( status_want == search_name_hashtable("purge") ) if ( status_want == search_name_hashtable("purge") )
return "is marked to be purged"; return "is marked to be purged";
} }
if ( status_want == search_name_hashtable("unknown") ) if ( status_want == search_name_hashtable("unknown") )
return "is in an indeterminate state"; return "is in an indeterminate state";
if ( status_want == search_name_hashtable("install") ) if ( status_want == search_name_hashtable("install") )
@ -957,11 +957,11 @@ void write_status_file(deb_file_t **deb_file)
/* Create a seperate backfile to dpkg */ /* Create a seperate backfile to dpkg */
if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) { if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) {
struct stat stat_buf; struct stat stat_buf;
if (stat("/var/lib/dpkg/status", &stat_buf) == 0) { if (stat("/var/lib/dpkg/status", &stat_buf) == 0) {
bb_error_msg_and_die("Couldnt create backup status file"); bb_error_msg_and_die("Couldnt create backup status file");
} }
/* Its ok if renaming the status file fails becasue status /* Its ok if renaming the status file fails becasue status
* file doesnt exist, maybe we are starting from scratch */ * file doesnt exist, maybe we are starting from scratch */
bb_error_msg("No status file found, creating new one"); bb_error_msg("No status file found, creating new one");
} }
@ -1056,10 +1056,10 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
const edge_t *package_edge = package_node->edge[j]; const edge_t *package_edge = package_node->edge[j];
if (package_edge->type == EDGE_CONFLICTS) { if (package_edge->type == EDGE_CONFLICTS) {
const unsigned int package_num = const unsigned int package_num =
search_package_hashtable(package_edge->name, search_package_hashtable(package_edge->name,
package_edge->version, package_edge->version,
package_edge->operator); package_edge->operator);
int result = 0; int result = 0;
if (package_hashtable[package_num] != NULL) { if (package_hashtable[package_num] != NULL) {
status_num = search_status_hashtable(name_hashtable[package_hashtable[package_num]->name]); status_num = search_status_hashtable(name_hashtable[package_hashtable[package_num]->name]);
@ -1078,7 +1078,7 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
} }
} }
i++; i++;
} }
/* Check dependendcies */ /* Check dependendcies */
@ -1098,7 +1098,7 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
/* If there is no status then this package is a /* If there is no status then this package is a
* virtual one provided by something else. In which * virtual one provided by something else. In which
* case there are no dependencies to check. * case there are no dependencies to check.
*/ */
if ( status_hashtable[status_num] == NULL ) continue; if ( status_hashtable[status_num] == NULL ) continue;
@ -1125,7 +1125,7 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
for (j = 0; j < package_node->num_of_edges; j++) { for (j = 0; j < package_node->num_of_edges; j++) {
const edge_t *package_edge = package_node->edge[j]; const edge_t *package_edge = package_node->edge[j];
unsigned int package_num; unsigned int package_num;
if ( package_edge->type == EDGE_OR_PRE_DEPENDS || if ( package_edge->type == EDGE_OR_PRE_DEPENDS ||
package_edge->type == EDGE_OR_DEPENDS ) { /* start an EDGE_OR_ list */ package_edge->type == EDGE_OR_DEPENDS ) { /* start an EDGE_OR_ list */
number_of_alternatives = package_edge->version; number_of_alternatives = package_edge->version;
@ -1147,26 +1147,26 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
* this edge is the right type. * this edge is the right type.
* *
* EDGE_DEPENDS == OR_DEPENDS -1 * EDGE_DEPENDS == OR_DEPENDS -1
* EDGE_PRE_DEPENDS == OR_PRE_DEPENDS -1 * EDGE_PRE_DEPENDS == OR_PRE_DEPENDS -1
*/ */
if ( root_of_alternatives && package_edge->type != root_of_alternatives->type - 1) if ( root_of_alternatives && package_edge->type != root_of_alternatives->type - 1)
bb_error_msg_and_die("Fatal error. Package dependencies corrupt: %d != %d - 1 \n", bb_error_msg_and_die("Fatal error. Package dependencies corrupt: %d != %d - 1 \n",
package_edge->type, root_of_alternatives->type); package_edge->type, root_of_alternatives->type);
if (package_hashtable[package_num] != NULL) if (package_hashtable[package_num] != NULL)
result = !package_satisfies_dependency(package_num, package_edge->type); result = !package_satisfies_dependency(package_num, package_edge->type);
if (result) { /* check for other package which provide what we are looking for */ if (result) { /* check for other package which provide what we are looking for */
int provider = -1; int provider = -1;
while ( (provider = search_for_provides(package_edge->name, provider) ) > -1 ) { while ( (provider = search_for_provides(package_edge->name, provider) ) > -1 ) {
if ( package_hashtable[provider] == NULL ) { if ( package_hashtable[provider] == NULL ) {
printf("Have a provider but no package information for it\n"); printf("Have a provider but no package information for it\n");
continue; continue;
} }
result = !package_satisfies_dependency(provider, package_edge->type); result = !package_satisfies_dependency(provider, package_edge->type);
if ( result == 0 ) if ( result == 0 )
break; break;
} }
} }
@ -1176,14 +1176,14 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
if (result && number_of_alternatives == 0) { if (result && number_of_alternatives == 0) {
if ( root_of_alternatives ) if ( root_of_alternatives )
bb_error_msg_and_die( bb_error_msg_and_die(
"Package %s %sdepends on %s, " "Package %s %sdepends on %s, "
"which cannot be satisfied", "which cannot be satisfied",
name_hashtable[package_node->name], name_hashtable[package_node->name],
package_edge->type == EDGE_PRE_DEPENDS ? "pre-" : "", package_edge->type == EDGE_PRE_DEPENDS ? "pre-" : "",
name_hashtable[root_of_alternatives->name]); name_hashtable[root_of_alternatives->name]);
else else
bb_error_msg_and_die( bb_error_msg_and_die(
"Package %s %sdepends on %s, which %s\n", "Package %s %sdepends on %s, which %s\n",
name_hashtable[package_node->name], name_hashtable[package_node->name],
package_edge->type == EDGE_PRE_DEPENDS ? "pre-" : "", package_edge->type == EDGE_PRE_DEPENDS ? "pre-" : "",
name_hashtable[package_edge->name], name_hashtable[package_edge->name],
@ -1192,7 +1192,7 @@ int check_deps(deb_file_t **deb_file, int deb_start, int dep_max_count)
/* we've found a package which /* we've found a package which
* satisfies the dependency, * satisfies the dependency,
* so skip over the rest of * so skip over the rest of
* the alternatives. * the alternatives.
*/ */
j += number_of_alternatives; j += number_of_alternatives;
number_of_alternatives = 0; number_of_alternatives = 0;
@ -1312,7 +1312,7 @@ char **all_control_list(const char *package_name)
void free_array(char **array) void free_array(char **array)
{ {
if (array) { if (array) {
unsigned short i = 0; unsigned short i = 0;
while (array[i]) { while (array[i]) {
@ -1325,7 +1325,7 @@ void free_array(char **array)
/* This function lists information on the installed packages. It loops through /* This function lists information on the installed packages. It loops through
* the status_hashtable to retrieve the info. This results in smaller code than * the status_hashtable to retrieve the info. This results in smaller code than
* scanning the status file. The resulting list, however, is unsorted. * scanning the status file. The resulting list, however, is unsorted.
*/ */
void list_packages(void) void list_packages(void)
{ {
@ -1333,7 +1333,7 @@ void list_packages(void)
printf(" Name Version\n"); printf(" Name Version\n");
printf("+++-==============-==============\n"); printf("+++-==============-==============\n");
/* go through status hash, dereference package hash and finally strings */ /* go through status hash, dereference package hash and finally strings */
for (i=0; i<STATUS_HASH_PRIME+1; i++) { for (i=0; i<STATUS_HASH_PRIME+1; i++) {
@ -1342,22 +1342,22 @@ void list_packages(void)
const char *name_str; /* package name */ const char *name_str; /* package name */
const char *vers_str; /* version */ const char *vers_str; /* version */
char s1, s2; /* status abbreviations */ char s1, s2; /* status abbreviations */
int spccnt; /* space count */ int spccnt; /* space count */
int j; int j;
stat_str = name_hashtable[status_hashtable[i]->status]; stat_str = name_hashtable[status_hashtable[i]->status];
name_str = name_hashtable[package_hashtable[status_hashtable[i]->package]->name]; name_str = name_hashtable[package_hashtable[status_hashtable[i]->package]->name];
vers_str = name_hashtable[package_hashtable[status_hashtable[i]->package]->version]; vers_str = name_hashtable[package_hashtable[status_hashtable[i]->package]->version];
/* get abbreviation for status field 1 */ /* get abbreviation for status field 1 */
s1 = stat_str[0] == 'i' ? 'i' : 'r'; s1 = stat_str[0] == 'i' ? 'i' : 'r';
/* get abbreviation for status field 2 */ /* get abbreviation for status field 2 */
for (j=0, spccnt=0; stat_str[j] && spccnt<2; j++) { for (j=0, spccnt=0; stat_str[j] && spccnt<2; j++) {
if (stat_str[j] == ' ') spccnt++; if (stat_str[j] == ' ') spccnt++;
} }
s2 = stat_str[j]; s2 = stat_str[j];
/* print out the line formatted like Debian dpkg */ /* print out the line formatted like Debian dpkg */
printf("%c%c %-14s %s\n", s1, s2, name_str, vers_str); printf("%c%c %-14s %s\n", s1, s2, name_str, vers_str);
} }
@ -1376,7 +1376,7 @@ void remove_package(const unsigned int package_num, int noisy)
char conffile_name[package_name_length + 30]; char conffile_name[package_name_length + 30];
int return_value; int return_value;
if ( noisy ) if ( noisy )
printf("Removing %s (%s) ...\n", package_name, package_version); printf("Removing %s (%s) ...\n", package_name, package_version);
/* run prerm script */ /* run prerm script */
@ -1464,12 +1464,12 @@ static archive_handle_t *init_archive_deb_ar(const char *filename)
{ {
archive_handle_t *ar_handle; archive_handle_t *ar_handle;
/* Setup an ar archive handle that refers to the gzip sub archive */ /* Setup an ar archive handle that refers to the gzip sub archive */
ar_handle = init_handle(); ar_handle = init_handle();
ar_handle->filter = filter_accept_list_reassign; ar_handle->filter = filter_accept_list_reassign;
ar_handle->src_fd = bb_xopen(filename, O_RDONLY); ar_handle->src_fd = bb_xopen(filename, O_RDONLY);
return(ar_handle); return(ar_handle);
} }
static void init_archive_deb_control(archive_handle_t *ar_handle) static void init_archive_deb_control(archive_handle_t *ar_handle)
@ -1491,7 +1491,7 @@ static void init_archive_deb_control(archive_handle_t *ar_handle)
/* Assign the tar handle as a subarchive of the ar handle */ /* Assign the tar handle as a subarchive of the ar handle */
ar_handle->sub_archive = tar_handle; ar_handle->sub_archive = tar_handle;
return; return;
} }
static void init_archive_deb_data(archive_handle_t *ar_handle) static void init_archive_deb_data(archive_handle_t *ar_handle)
@ -1513,7 +1513,7 @@ static void init_archive_deb_data(archive_handle_t *ar_handle)
/* Assign the tar handle as a subarchive of the ar handle */ /* Assign the tar handle as a subarchive of the ar handle */
ar_handle->sub_archive = tar_handle; ar_handle->sub_archive = tar_handle;
return; return;
} }
static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *myaccept) static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *myaccept)
@ -1586,7 +1586,7 @@ static void unpack_package(deb_file_t *deb_file)
if (run_package_script(package_name, "preinst") != 0) { if (run_package_script(package_name, "preinst") != 0) {
/* when preinst returns exit code != 0 then quit installation process */ /* when preinst returns exit code != 0 then quit installation process */
bb_error_msg_and_die("subprocess pre-installation script returned error."); bb_error_msg_and_die("subprocess pre-installation script returned error.");
} }
/* Extract data.tar.gz to the root directory */ /* Extract data.tar.gz to the root directory */
archive_handle = init_archive_deb_ar(deb_file->filename); archive_handle = init_archive_deb_ar(deb_file->filename);
@ -1598,7 +1598,7 @@ static void unpack_package(deb_file_t *deb_file)
/* Create the list file */ /* Create the list file */
strcat(info_prefix, "list"); strcat(info_prefix, "list");
out_stream = bb_xfopen(info_prefix, "w"); out_stream = bb_xfopen(info_prefix, "w");
while (archive_handle->sub_archive->passed) { while (archive_handle->sub_archive->passed) {
/* the leading . has been stripped by data_extract_all_prefix already */ /* the leading . has been stripped by data_extract_all_prefix already */
fputs(archive_handle->sub_archive->passed->data, out_stream); fputs(archive_handle->sub_archive->passed->data, out_stream);
@ -1653,7 +1653,7 @@ int dpkg_main(int argc, char **argv)
case 'F': // equivalent to --force in official dpkg case 'F': // equivalent to --force in official dpkg
if (strcmp(optarg, "depends") == 0) { if (strcmp(optarg, "depends") == 0) {
dpkg_opt |= dpkg_opt_force_ignore_depends; dpkg_opt |= dpkg_opt_force_ignore_depends;
} }
break; break;
case 'i': case 'i':
dpkg_opt |= dpkg_opt_install; dpkg_opt |= dpkg_opt_install;
@ -1691,7 +1691,7 @@ int dpkg_main(int argc, char **argv)
list_packages(); list_packages();
return(EXIT_SUCCESS); return(EXIT_SUCCESS);
} }
/* Read arguments and store relevant info in structs */ /* Read arguments and store relevant info in structs */
while (optind < argc) { while (optind < argc) {
/* deb_count = nb_elem - 1 and we need nb_elem + 1 to allocate terminal node [NULL pointer] */ /* deb_count = nb_elem - 1 and we need nb_elem + 1 to allocate terminal node [NULL pointer] */

View File

@ -41,7 +41,7 @@ extern int dpkg_deb_main(int argc, char **argv)
/* Setup the tar archive handle */ /* Setup the tar archive handle */
tar_archive = init_handle(); tar_archive = init_handle();
/* Setup an ar archive handle that refers to the gzip sub archive */ /* Setup an ar archive handle that refers to the gzip sub archive */
ar_archive = init_handle(); ar_archive = init_handle();
ar_archive->sub_archive = tar_archive; ar_archive->sub_archive = tar_archive;
ar_archive->filter = filter_accept_list_reassign; ar_archive->filter = filter_accept_list_reassign;
@ -73,7 +73,7 @@ extern int dpkg_deb_main(int argc, char **argv)
} }
if (opt & DPKG_DEB_OPT_FIELD) { if (opt & DPKG_DEB_OPT_FIELD) {
/* Print the entire control file /* Print the entire control file
* it should accept a second argument which specifies a * it should accept a second argument which specifies a
* specific field to print */ * specific field to print */
ar_archive->accept = control_tar_llist; ar_archive->accept = control_tar_llist;
tar_archive->accept = llist_add_to(NULL, "./control");; tar_archive->accept = llist_add_to(NULL, "./control");;

View File

@ -13,7 +13,7 @@
* *
* General cleanup to better adhere to the style guide and make use of standard * General cleanup to better adhere to the style guide and make use of standard
* busybox functions by Glenn McGrath <bug1@optushome.com.au> * busybox functions by Glenn McGrath <bug1@optushome.com.au>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
@ -153,12 +153,12 @@ extern int gunzip_main(int argc, char **argv)
/* do the decompression, and cleanup */ /* do the decompression, and cleanup */
if (bb_xread_char(src_fd) == 0x1f) { if (bb_xread_char(src_fd) == 0x1f) {
unsigned char magic2; unsigned char magic2;
magic2 = bb_xread_char(src_fd); magic2 = bb_xread_char(src_fd);
#ifdef CONFIG_FEATURE_GUNZIP_UNCOMPRESS #ifdef CONFIG_FEATURE_GUNZIP_UNCOMPRESS
if (magic2 == 0x9d) { if (magic2 == 0x9d) {
status = uncompress(src_fd, dst_fd); status = uncompress(src_fd, dst_fd);
} else } else
#endif #endif
if (magic2 == 0x8b) { if (magic2 == 0x8b) {
check_header_gzip(src_fd); check_header_gzip(src_fd);

View File

@ -9,8 +9,8 @@
* only standard in to standard out with -9 compression. It also requires * only standard in to standard out with -9 compression. It also requires
* the zcat module for some important functions." * the zcat module for some important functions."
* *
* Adjusted further by Erik Andersen <andersen@codepoet.org> to support * Adjusted further by Erik Andersen <andersen@codepoet.org> to support
* files as well as stdin/stdout, and to generally behave itself wrt * files as well as stdin/stdout, and to generally behave itself wrt
* command line handling. * command line handling.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -30,7 +30,7 @@
*/ */
/* These defines are very important for BusyBox. Without these, /* These defines are very important for BusyBox. Without these,
* huge chunks of ram are pre-allocated making the BusyBox bss * huge chunks of ram are pre-allocated making the BusyBox bss
* size Freaking Huge(tm), which is a bad thing.*/ * size Freaking Huge(tm), which is a bad thing.*/
#define SMALL_MEM #define SMALL_MEM
#define DYN_ALLOC #define DYN_ALLOC

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -55,7 +55,7 @@ DPKG_FILES:= \
get_header_tar.o \ get_header_tar.o \
filter_accept_list_reassign.o filter_accept_list_reassign.o
LIBUNARCHIVE-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o LIBUNARCHIVE-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o
LIBUNARCHIVE-$(CONFIG_BUNZIP2) += decompress_bunzip2.o LIBUNARCHIVE-$(CONFIG_BUNZIP2) += decompress_bunzip2.o
LIBUNARCHIVE-$(CONFIG_CPIO) += get_header_cpio.o LIBUNARCHIVE-$(CONFIG_CPIO) += get_header_cpio.o
LIBUNARCHIVE-$(CONFIG_DPKG) += $(DPKG_FILES) LIBUNARCHIVE-$(CONFIG_DPKG) += $(DPKG_FILES)
@ -64,7 +64,7 @@ LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_GZ) += $(GUNZIP_FILES) get_header_tar_gz.o
LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_BZ2) += decompress_bunzip2.o get_header_tar_bz2.o LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_BZ2) += decompress_bunzip2.o get_header_tar_bz2.o
LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES) LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES)
LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += uncompress.o LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += uncompress.o
LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio.o LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio.o
LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio.o LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio.o
LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar.o LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar.o
LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_BZIP2) += decompress_bunzip2.o get_header_tar_bz2.o LIBUNARCHIVE-$(CONFIG_FEATURE_TAR_BZIP2) += decompress_bunzip2.o get_header_tar_bz2.o

View File

@ -37,7 +37,7 @@ extern void data_extract_all(archive_handle_t *archive_handle)
char *name = bb_xstrdup(file_header->name); char *name = bb_xstrdup(file_header->name);
bb_make_directory (dirname(name), 0777, FILEUTILS_RECUR); bb_make_directory (dirname(name), 0777, FILEUTILS_RECUR);
free(name); free(name);
} }
/* Check if the file already exists */ /* Check if the file already exists */
if (archive_handle->flags & ARCHIVE_EXTRACT_UNCONDITIONAL) { if (archive_handle->flags & ARCHIVE_EXTRACT_UNCONDITIONAL) {
@ -66,7 +66,7 @@ extern void data_extract_all(archive_handle_t *archive_handle)
} }
} }
/* Handle hard links seperately /* Handle hard links seperately
* We identified hard links as regular files of size 0 with a symlink */ * We identified hard links as regular files of size 0 with a symlink */
if (S_ISREG(file_header->mode) && (file_header->link_name) && (file_header->size == 0)) { if (S_ISREG(file_header->mode) && (file_header->link_name) && (file_header->size == 0)) {
/* hard link */ /* hard link */

View File

@ -248,7 +248,7 @@ static int get_next_block(bunzip_data *bd)
pp=0; pp=0;
for(i=minLen;i<=maxLen;i++) { for(i=minLen;i<=maxLen;i++) {
temp[i]=limit[i]=0; temp[i]=limit[i]=0;
for(t=0;t<symCount;t++) for(t=0;t<symCount;t++)
if(length[t]==i) hufGroup->permute[pp++] = t; if(length[t]==i) hufGroup->permute[pp++] = t;
} }
/* Count symbols coded for at each bit length */ /* Count symbols coded for at each bit length */

View File

@ -3,7 +3,7 @@
/* uncompress for busybox -- (c) 2002 Robert Griebl /* uncompress for busybox -- (c) 2002 Robert Griebl
* *
* based on the original compress42.c source * based on the original compress42.c source
* (see disclaimer below) * (see disclaimer below)
*/ */

View File

@ -13,7 +13,7 @@
* *
* General cleanup to better adhere to the style guide and make use of standard * General cleanup to better adhere to the style guide and make use of standard
* busybox functions by Glenn McGrath <bug1@optushome.com.au> * busybox functions by Glenn McGrath <bug1@optushome.com.au>
* *
* read_gz interface + associated hacking by Laurence Anderson * read_gz interface + associated hacking by Laurence Anderson
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -148,7 +148,7 @@ static unsigned int fill_bitbuffer(unsigned int bitbuffer, unsigned int *current
{ {
while (*current < required) { while (*current < required) {
if (bytebuffer_offset >= bytebuffer_size) { if (bytebuffer_offset >= bytebuffer_size) {
/* Leave the first 4 bytes empty so we can always unwind the bitbuffer /* Leave the first 4 bytes empty so we can always unwind the bitbuffer
* to the front of the bytebuffer, leave 4 bytes free at end of tail * to the front of the bytebuffer, leave 4 bytes free at end of tail
* so we can easily top up buffer in check_trailer_gzip() */ * so we can easily top up buffer in check_trailer_gzip() */
bytebuffer_size = 4 + bb_xread(gunzip_src_fd, &bytebuffer[4], bytebuffer_max - 8); bytebuffer_size = 4 + bb_xread(gunzip_src_fd, &bytebuffer[4], bytebuffer_max - 8);
@ -193,7 +193,7 @@ static void make_gunzip_crc_table(void)
/* /*
* Free the malloc'ed tables built by huft_build(), which makes a linked * Free the malloc'ed tables built by huft_build(), which makes a linked
* list of the tables it made, with the links in a dummy first entry of * list of the tables it made, with the links in a dummy first entry of
* each table. * each table.
* t: table to free * t: table to free
*/ */
static int huft_free(huft_t * t) static int huft_free(huft_t * t)
@ -435,9 +435,9 @@ static int inflate_codes(huft_t * my_tl, huft_t * my_td, const unsigned int my_b
md = mask_bits[bd]; md = mask_bits[bd];
return 0; // Don't actually do anything the first time return 0; // Don't actually do anything the first time
} }
if (resumeCopy) goto do_copy; if (resumeCopy) goto do_copy;
while (1) { /* do until end of block */ while (1) { /* do until end of block */
b = fill_bitbuffer(b, &k, bl); b = fill_bitbuffer(b, &k, bl);
if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) if ((e = (t = tl + ((unsigned) b & ml))->e) > 16)
@ -533,7 +533,7 @@ do_copy: do {
/* free the decoding tables, return */ /* free the decoding tables, return */
huft_free(tl); huft_free(tl);
huft_free(td); huft_free(td);
/* done */ /* done */
return 0; return 0;
} }
@ -548,7 +548,7 @@ static int inflate_stored(int my_n, int my_b_stored, int my_k_stored, int setup)
w = gunzip_outbuf_count; /* initialize gunzip_window position */ w = gunzip_outbuf_count; /* initialize gunzip_window position */
return 0; // Don't do anything first time return 0; // Don't do anything first time
} }
/* read and output the compressed data */ /* read and output the compressed data */
while (n--) { while (n--) {
b_stored = fill_bitbuffer(b_stored, &k_stored, 8); b_stored = fill_bitbuffer(b_stored, &k_stored, 8);
@ -639,7 +639,7 @@ static int inflate_block(int *e)
inflate_stored(n, b_stored, k_stored, 1); // Setup inflate_stored inflate_stored(n, b_stored, k_stored, 1); // Setup inflate_stored
return -1; return -1;
} }
case 1: /* Inflate fixed case 1: /* Inflate fixed
* decompress an inflated type 1 (fixed Huffman codes) block. We should * decompress an inflated type 1 (fixed Huffman codes) block. We should
* either replace this with a custom decoder, or at least precompute the * either replace this with a custom decoder, or at least precompute the
* Huffman tables. * Huffman tables.
@ -682,9 +682,9 @@ static int inflate_block(int *e)
/* decompress until an end-of-block code */ /* decompress until an end-of-block code */
inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes
/* huft_free code moved into inflate_codes */ /* huft_free code moved into inflate_codes */
return -2; return -2;
} }
case 2: /* Inflate dynamic */ case 2: /* Inflate dynamic */
@ -836,7 +836,7 @@ static int inflate_block(int *e)
inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes
/* huft_free code moved into inflate_codes */ /* huft_free code moved into inflate_codes */
return -2; return -2;
} }
default: default:
@ -859,12 +859,12 @@ static int inflate_get_next_window(void)
static int method = -1; // Method == -1 for stored, -2 for codes static int method = -1; // Method == -1 for stored, -2 for codes
static int e = 0; static int e = 0;
static int needAnotherBlock = 1; static int needAnotherBlock = 1;
gunzip_outbuf_count = 0; gunzip_outbuf_count = 0;
while(1) { while(1) {
int ret; int ret;
if (needAnotherBlock) { if (needAnotherBlock) {
if(e) { if(e) {
calculate_gunzip_crc(); calculate_gunzip_crc();
@ -875,7 +875,7 @@ static int inflate_get_next_window(void)
method = inflate_block(&e); method = inflate_block(&e);
needAnotherBlock = 0; needAnotherBlock = 0;
} }
switch (method) { switch (method) {
case -1: ret = inflate_stored(0,0,0,0); case -1: ret = inflate_stored(0,0,0,0);
break; break;
@ -920,7 +920,7 @@ extern int inflate_unzip(int in, int out)
make_gunzip_crc_table(); make_gunzip_crc_table();
/* Allocate space for buffer */ /* Allocate space for buffer */
bytebuffer = xmalloc(bytebuffer_max); bytebuffer = xmalloc(bytebuffer_max);
while(1) { while(1) {
int ret = inflate_get_next_window(); int ret = inflate_get_next_window();
@ -977,6 +977,6 @@ extern int inflate_gunzip(int in, int out)
(bytebuffer[bytebuffer_offset+2] << 16) | (bytebuffer[bytebuffer_offset+3] << 24))) { (bytebuffer[bytebuffer_offset+2] << 16) | (bytebuffer[bytebuffer_offset+3] << 24))) {
bb_error_msg("Incorrect length"); bb_error_msg("Incorrect length");
} }
return 0; return 0;
} }

View File

@ -26,7 +26,7 @@
/* /*
* Reassign the subarchive metadata parser based on the filename extension * Reassign the subarchive metadata parser based on the filename extension
* e.g. if its a .tar.gz modify archive_handle->sub_archive to process a .tar.gz * e.g. if its a .tar.gz modify archive_handle->sub_archive to process a .tar.gz
* or if its a .tar.bz2 make archive_handle->sub_archive handle that * or if its a .tar.bz2 make archive_handle->sub_archive handle that
*/ */
extern char filter_accept_list_reassign(archive_handle_t *archive_handle) extern char filter_accept_list_reassign(archive_handle_t *archive_handle)
{ {

View File

@ -113,7 +113,7 @@ extern char get_header_ar(archive_handle_t *archive_handle)
archive_handle->action_data(archive_handle); archive_handle->action_data(archive_handle);
} }
} else { } else {
data_skip(archive_handle); data_skip(archive_handle);
} }
archive_handle->offset += typed->size; archive_handle->offset += typed->size;

View File

@ -36,7 +36,7 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
int namesize; int namesize;
char dummy[16]; char dummy[16];
int major, minor, nlink, inode; int major, minor, nlink, inode;
if (pending_hardlinks) { /* Deal with any pending hardlinks */ if (pending_hardlinks) { /* Deal with any pending hardlinks */
hardlinks_t *tmp; hardlinks_t *tmp;
hardlinks_t *oldtmp; hardlinks_t *oldtmp;
@ -77,7 +77,7 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
{ {
unsigned long tmpsize; unsigned long tmpsize;
sscanf(cpio_header, "%6c%8x%8x%8x%8x%8x%8lx%8lx%16c%8x%8x%8x%8c", sscanf(cpio_header, "%6c%8x%8x%8x%8x%8x%8lx%8lx%16c%8x%8x%8x%8c",
dummy, &inode, (unsigned int*)&file_header->mode, dummy, &inode, (unsigned int*)&file_header->mode,
(unsigned int*)&file_header->uid, (unsigned int*)&file_header->gid, (unsigned int*)&file_header->uid, (unsigned int*)&file_header->gid,
&nlink, &file_header->mtime, &tmpsize, &nlink, &file_header->mtime, &tmpsize,
dummy, &major, &minor, &namesize, dummy); dummy, &major, &minor, &namesize, dummy);
@ -147,7 +147,7 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
archive_handle->action_data(archive_handle); archive_handle->action_data(archive_handle);
archive_handle->action_header(archive_handle->file_header); archive_handle->action_header(archive_handle->file_header);
} else { } else {
data_skip(archive_handle); data_skip(archive_handle);
} }
archive_handle->offset += file_header->size; archive_handle->offset += file_header->size;

View File

@ -119,7 +119,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
file_header->gid = strtol(tar.formated.gid, NULL, 8); file_header->gid = strtol(tar.formated.gid, NULL, 8);
file_header->size = strtol(tar.formated.size, NULL, 8); file_header->size = strtol(tar.formated.size, NULL, 8);
file_header->mtime = strtol(tar.formated.mtime, NULL, 8); file_header->mtime = strtol(tar.formated.mtime, NULL, 8);
file_header->link_name = (tar.formated.linkname[0] != '\0') ? file_header->link_name = (tar.formated.linkname[0] != '\0') ?
bb_xstrdup(tar.formated.linkname) : NULL; bb_xstrdup(tar.formated.linkname) : NULL;
file_header->device = (dev_t) ((strtol(tar.formated.devmajor, NULL, 8) << 8) + file_header->device = (dev_t) ((strtol(tar.formated.devmajor, NULL, 8) << 8) +
strtol(tar.formated.devminor, NULL, 8)); strtol(tar.formated.devminor, NULL, 8));
@ -205,7 +205,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
archive_handle->action_data(archive_handle); archive_handle->action_data(archive_handle);
archive_handle->passed = llist_add_to(archive_handle->passed, file_header->name); archive_handle->passed = llist_add_to(archive_handle->passed, file_header->name);
} else { } else {
data_skip(archive_handle); data_skip(archive_handle);
} }
archive_handle->offset += file_header->size; archive_handle->offset += file_header->size;

View File

@ -3,7 +3,7 @@
/* uncompress for busybox -- (c) 2002 Robert Griebl /* uncompress for busybox -- (c) 2002 Robert Griebl
* *
* based on the original compress42.c source * based on the original compress42.c source
* (see disclaimer below) * (see disclaimer below)
*/ */

View File

@ -13,7 +13,7 @@
* *
* General cleanup to better adhere to the style guide and make use of standard * General cleanup to better adhere to the style guide and make use of standard
* busybox functions by Glenn McGrath <bug1@optushome.com.au> * busybox functions by Glenn McGrath <bug1@optushome.com.au>
* *
* read_gz interface + associated hacking by Laurence Anderson * read_gz interface + associated hacking by Laurence Anderson
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -148,7 +148,7 @@ static unsigned int fill_bitbuffer(unsigned int bitbuffer, unsigned int *current
{ {
while (*current < required) { while (*current < required) {
if (bytebuffer_offset >= bytebuffer_size) { if (bytebuffer_offset >= bytebuffer_size) {
/* Leave the first 4 bytes empty so we can always unwind the bitbuffer /* Leave the first 4 bytes empty so we can always unwind the bitbuffer
* to the front of the bytebuffer, leave 4 bytes free at end of tail * to the front of the bytebuffer, leave 4 bytes free at end of tail
* so we can easily top up buffer in check_trailer_gzip() */ * so we can easily top up buffer in check_trailer_gzip() */
bytebuffer_size = 4 + bb_xread(gunzip_src_fd, &bytebuffer[4], bytebuffer_max - 8); bytebuffer_size = 4 + bb_xread(gunzip_src_fd, &bytebuffer[4], bytebuffer_max - 8);
@ -193,7 +193,7 @@ static void make_gunzip_crc_table(void)
/* /*
* Free the malloc'ed tables built by huft_build(), which makes a linked * Free the malloc'ed tables built by huft_build(), which makes a linked
* list of the tables it made, with the links in a dummy first entry of * list of the tables it made, with the links in a dummy first entry of
* each table. * each table.
* t: table to free * t: table to free
*/ */
static int huft_free(huft_t * t) static int huft_free(huft_t * t)
@ -435,9 +435,9 @@ static int inflate_codes(huft_t * my_tl, huft_t * my_td, const unsigned int my_b
md = mask_bits[bd]; md = mask_bits[bd];
return 0; // Don't actually do anything the first time return 0; // Don't actually do anything the first time
} }
if (resumeCopy) goto do_copy; if (resumeCopy) goto do_copy;
while (1) { /* do until end of block */ while (1) { /* do until end of block */
b = fill_bitbuffer(b, &k, bl); b = fill_bitbuffer(b, &k, bl);
if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) if ((e = (t = tl + ((unsigned) b & ml))->e) > 16)
@ -533,7 +533,7 @@ do_copy: do {
/* free the decoding tables, return */ /* free the decoding tables, return */
huft_free(tl); huft_free(tl);
huft_free(td); huft_free(td);
/* done */ /* done */
return 0; return 0;
} }
@ -548,7 +548,7 @@ static int inflate_stored(int my_n, int my_b_stored, int my_k_stored, int setup)
w = gunzip_outbuf_count; /* initialize gunzip_window position */ w = gunzip_outbuf_count; /* initialize gunzip_window position */
return 0; // Don't do anything first time return 0; // Don't do anything first time
} }
/* read and output the compressed data */ /* read and output the compressed data */
while (n--) { while (n--) {
b_stored = fill_bitbuffer(b_stored, &k_stored, 8); b_stored = fill_bitbuffer(b_stored, &k_stored, 8);
@ -639,7 +639,7 @@ static int inflate_block(int *e)
inflate_stored(n, b_stored, k_stored, 1); // Setup inflate_stored inflate_stored(n, b_stored, k_stored, 1); // Setup inflate_stored
return -1; return -1;
} }
case 1: /* Inflate fixed case 1: /* Inflate fixed
* decompress an inflated type 1 (fixed Huffman codes) block. We should * decompress an inflated type 1 (fixed Huffman codes) block. We should
* either replace this with a custom decoder, or at least precompute the * either replace this with a custom decoder, or at least precompute the
* Huffman tables. * Huffman tables.
@ -682,9 +682,9 @@ static int inflate_block(int *e)
/* decompress until an end-of-block code */ /* decompress until an end-of-block code */
inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes
/* huft_free code moved into inflate_codes */ /* huft_free code moved into inflate_codes */
return -2; return -2;
} }
case 2: /* Inflate dynamic */ case 2: /* Inflate dynamic */
@ -836,7 +836,7 @@ static int inflate_block(int *e)
inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes inflate_codes(tl, td, bl, bd, 1); // Setup inflate_codes
/* huft_free code moved into inflate_codes */ /* huft_free code moved into inflate_codes */
return -2; return -2;
} }
default: default:
@ -859,12 +859,12 @@ static int inflate_get_next_window(void)
static int method = -1; // Method == -1 for stored, -2 for codes static int method = -1; // Method == -1 for stored, -2 for codes
static int e = 0; static int e = 0;
static int needAnotherBlock = 1; static int needAnotherBlock = 1;
gunzip_outbuf_count = 0; gunzip_outbuf_count = 0;
while(1) { while(1) {
int ret; int ret;
if (needAnotherBlock) { if (needAnotherBlock) {
if(e) { if(e) {
calculate_gunzip_crc(); calculate_gunzip_crc();
@ -875,7 +875,7 @@ static int inflate_get_next_window(void)
method = inflate_block(&e); method = inflate_block(&e);
needAnotherBlock = 0; needAnotherBlock = 0;
} }
switch (method) { switch (method) {
case -1: ret = inflate_stored(0,0,0,0); case -1: ret = inflate_stored(0,0,0,0);
break; break;
@ -920,7 +920,7 @@ extern int inflate_unzip(int in, int out)
make_gunzip_crc_table(); make_gunzip_crc_table();
/* Allocate space for buffer */ /* Allocate space for buffer */
bytebuffer = xmalloc(bytebuffer_max); bytebuffer = xmalloc(bytebuffer_max);
while(1) { while(1) {
int ret = inflate_get_next_window(); int ret = inflate_get_next_window();
@ -977,6 +977,6 @@ extern int inflate_gunzip(int in, int out)
(bytebuffer[bytebuffer_offset+2] << 16) | (bytebuffer[bytebuffer_offset+3] << 24))) { (bytebuffer[bytebuffer_offset+2] << 16) | (bytebuffer[bytebuffer_offset+3] << 24))) {
bb_error_msg("Incorrect length"); bb_error_msg("Incorrect length");
} }
return 0; return 0;
} }

View File

@ -204,12 +204,12 @@ void extract_cpio_gz(int fd) {
archive_handle->flags |= ARCHIVE_CREATE_LEADING_DIRS; archive_handle->flags |= ARCHIVE_CREATE_LEADING_DIRS;
archive_handle->src_fd = fd; archive_handle->src_fd = fd;
archive_handle->offset = 0; archive_handle->offset = 0;
bb_xread_all(archive_handle->src_fd, &magic, 2); bb_xread_all(archive_handle->src_fd, &magic, 2);
if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) { if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) {
bb_error_msg_and_die("Invalid gzip magic"); bb_error_msg_and_die("Invalid gzip magic");
} }
check_header_gzip(archive_handle->src_fd); check_header_gzip(archive_handle->src_fd);
chdir("/"); // Install RPM's to root chdir("/"); // Install RPM's to root
archive_handle->src_fd = open_transformer(archive_handle->src_fd, inflate_gunzip); archive_handle->src_fd = open_transformer(archive_handle->src_fd, inflate_gunzip);

View File

@ -89,7 +89,7 @@ extern int rpm2cpio_main(int argc, char **argv)
/* Skip the main header */ /* Skip the main header */
skip_header(rpm_fd); skip_header(rpm_fd);
bb_xread_all(rpm_fd, &magic, 2); bb_xread_all(rpm_fd, &magic, 2);
if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) { if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) {
bb_error_msg_and_die("Invalid gzip magic"); bb_error_msg_and_die("Invalid gzip magic");

View File

@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */ /* vi: set sw=4 ts=4: */
/* /*
* Mini tar implementation for busybox * Mini tar implementation for busybox
* *
* Modifed to use common extraction code used by ar, cpio, dpkg-deb, dpkg * Modifed to use common extraction code used by ar, cpio, dpkg-deb, dpkg
* Glenn McGrath <bug1@optushome.com.au> * Glenn McGrath <bug1@optushome.com.au>
@ -9,7 +9,7 @@
* ground up. It still has remnents of the old code lying about, but it is * ground up. It still has remnents of the old code lying about, but it is
* very different now (i.e., cleaner, less global variables, etc.) * very different now (i.e., cleaner, less global variables, etc.)
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* Based in part in the tar implementation in sash * Based in part in the tar implementation in sash
* Copyright (c) 1999 by David I. Bell * Copyright (c) 1999 by David I. Bell
@ -111,7 +111,7 @@ struct TarBallInfo {
for the tarball */ for the tarball */
struct stat statBuf; /* Stat info for the tarball, letting struct stat statBuf; /* Stat info for the tarball, letting
us know the inode and device that the us know the inode and device that the
tarball lives, so we can avoid trying tarball lives, so we can avoid trying
to include the tarball into itself */ to include the tarball into itself */
int verboseFlag; /* Whether to print extra stuff or not */ int verboseFlag; /* Whether to print extra stuff or not */
const llist_t *excludeList; /* List of files to not include */ const llist_t *excludeList; /* List of files to not include */
@ -470,7 +470,7 @@ static inline int writeTarFile(const int tar_fd, const int verboseFlag,
(void) &include; (void) &include;
(void) &errorFlag; (void) &errorFlag;
# endif # endif
gzipPid = vfork(); gzipPid = vfork();
if (gzipPid == 0) { if (gzipPid == 0) {
@ -616,7 +616,7 @@ static char get_header_tar_Z(archive_handle_t *archive_handle)
#endif #endif
#ifdef CONFIG_FEATURE_TAR_BZIP2 #ifdef CONFIG_FEATURE_TAR_BZIP2
# define TAR_OPT_BZIP2 (1 << (8 + TAR_OPT_FLAG_CREATE)) # define TAR_OPT_BZIP2 (1 << (8 + TAR_OPT_FLAG_CREATE))
# define TAR_OPT_STR_BZIP2 "j" # define TAR_OPT_STR_BZIP2 "j"
# define TAR_OPT_FLAG_BZIP2 1 # define TAR_OPT_FLAG_BZIP2 1
#else #else
@ -646,7 +646,7 @@ static char get_header_tar_Z(archive_handle_t *archive_handle)
#ifdef CONFIG_FEATURE_TAR_COMPRESS #ifdef CONFIG_FEATURE_TAR_COMPRESS
# define TAR_OPT_UNCOMPRESS (1 << (8 + TAR_OPT_FLAG_CREATE + TAR_OPT_FLAG_BZIP2 + TAR_OPT_FLAG_FROM + TAR_OPT_FLAG_GZIP)) # define TAR_OPT_UNCOMPRESS (1 << (8 + TAR_OPT_FLAG_CREATE + TAR_OPT_FLAG_BZIP2 + TAR_OPT_FLAG_FROM + TAR_OPT_FLAG_GZIP))
# define TAR_OPT_STR_COMPRESS "Z" # define TAR_OPT_STR_COMPRESS "Z"
#else #else
# define TAR_OPT_STR_COMPRESS "" # define TAR_OPT_STR_COMPRESS ""
#endif #endif
@ -740,7 +740,7 @@ int tar_main(int argc, char **argv)
bb_show_usage(); bb_show_usage();
} }
if(ctx_flag & CTX_TEST) { if(ctx_flag & CTX_TEST) {
if ((tar_handle->action_header == header_list) || if ((tar_handle->action_header == header_list) ||
(tar_handle->action_header == header_verbose_list)) { (tar_handle->action_header == header_verbose_list)) {
tar_handle->action_header = header_verbose_list; tar_handle->action_header = header_verbose_list;
} else { } else {
@ -756,8 +756,8 @@ int tar_main(int argc, char **argv)
tar_handle->action_data = data_extract_to_stdout; tar_handle->action_data = data_extract_to_stdout;
} }
if(opt & TAR_OPT_VERBOSE) { if(opt & TAR_OPT_VERBOSE) {
if ((tar_handle->action_header == header_list) || if ((tar_handle->action_header == header_list) ||
(tar_handle->action_header == header_verbose_list)) (tar_handle->action_header == header_verbose_list))
{ {
tar_handle->action_header = header_verbose_list; tar_handle->action_header = header_verbose_list;
} else { } else {
@ -860,13 +860,13 @@ int tar_main(int argc, char **argv)
} }
# endif /* CONFIG_FEATURE_TAR_BZIP2 */ # endif /* CONFIG_FEATURE_TAR_BZIP2 */
if ((tar_handle->action_header == header_list) || if ((tar_handle->action_header == header_list) ||
(tar_handle->action_header == header_verbose_list)) { (tar_handle->action_header == header_verbose_list)) {
verboseFlag = TRUE; verboseFlag = TRUE;
} }
writeTarFile(tar_handle->src_fd, verboseFlag, opt & TAR_OPT_DEREFERNCE, tar_handle->accept, writeTarFile(tar_handle->src_fd, verboseFlag, opt & TAR_OPT_DEREFERNCE, tar_handle->accept,
tar_handle->reject, gzipFlag); tar_handle->reject, gzipFlag);
} else } else
#endif /* CONFIG_FEATURE_TAR_CREATE */ #endif /* CONFIG_FEATURE_TAR_CREATE */
{ {
while (get_header_ptr(tar_handle) == EXIT_SUCCESS); while (get_header_ptr(tar_handle) == EXIT_SUCCESS);

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -2,7 +2,7 @@
/* /*
* Mini chvt implementation for busybox * Mini chvt implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -2,7 +2,7 @@
/* /*
* Mini clear implementation for busybox * Mini clear implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -3,13 +3,13 @@
* Disallocate virtual terminal(s) * Disallocate virtual terminal(s)
* *
* Copyright (C) 2003 by Tito Ragusa <farmatito@tiscali.it> * Copyright (C) 2003 by Tito Ragusa <farmatito@tiscali.it>
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

View File

@ -56,7 +56,7 @@ int dumpkmap_main(int argc, char **argv)
write(1, magic, 7); write(1, magic, 7);
for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0; for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0;
flags[0]=1; flags[0]=1;
flags[1]=1; flags[1]=1;
flags[2]=1; flags[2]=1;
flags[4]=1; flags[4]=1;
@ -66,9 +66,9 @@ int dumpkmap_main(int argc, char **argv)
flags[9]=1; flags[9]=1;
flags[10]=1; flags[10]=1;
flags[12]=1; flags[12]=1;
/* dump flags */ /* dump flags */
for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1); for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1);
for (i = 0; i < MAX_NR_KEYMAPS; i++) { for (i = 0; i < MAX_NR_KEYMAPS; i++) {
if (flags[i] == 1) { if (flags[i] == 1) {
@ -76,13 +76,13 @@ int dumpkmap_main(int argc, char **argv)
ke.kb_index = j; ke.kb_index = j;
ke.kb_table = i; ke.kb_table = i;
if (ioctl(fd, KDGKBENT, &ke) < 0) { if (ioctl(fd, KDGKBENT, &ke) < 0) {
bb_error_msg("ioctl returned: %m, %s, %s, %xqq", (char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value); bb_error_msg("ioctl returned: %m, %s, %s, %xqq", (char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value);
} }
else { else {
write(1,(void*)&ke.kb_value,2); write(1,(void*)&ke.kb_value,2);
} }
} }
} }
} }

View File

@ -75,7 +75,7 @@ int loadkmap_main(int argc, char **argv)
} }
} }
/* Don't bother to close files. Exit does that /* Don't bother to close files. Exit does that
* automagically, so we can save a few bytes */ * automagically, so we can save a few bytes */
/* close(fd); */ /* close(fd); */
return EXIT_SUCCESS; return EXIT_SUCCESS;

View File

@ -56,7 +56,7 @@ int openvt_main(int argc, char **argv)
if (setsid() < 0) { if (setsid() < 0) {
#endif #endif
bb_perror_msg_and_die("Unable to set new session"); bb_perror_msg_and_die("Unable to set new session");
} }
close(0); /* so that new vt becomes stdin */ close(0); /* so that new vt becomes stdin */

View File

@ -2,7 +2,7 @@
/* /*
* Mini reset implementation for busybox * Mini reset implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* Written by Erik Andersen and Kent Robotti <robotti@metconnect.com> * Written by Erik Andersen and Kent Robotti <robotti@metconnect.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -35,7 +35,7 @@ struct kbkeycode {
}; };
static const int KDSETKEYCODE = 0x4B4D; /* write kernel keycode table entry */ static const int KDSETKEYCODE = 0x4B4D; /* write kernel keycode table entry */
extern int extern int
setkeycodes_main(int argc, char** argv) setkeycodes_main(int argc, char** argv)
{ {
char *ep; char *ep;
@ -45,7 +45,7 @@ setkeycodes_main(int argc, char** argv)
if (argc % 2 != 1 || argc < 2) { if (argc % 2 != 1 || argc < 2) {
bb_show_usage(); bb_show_usage();
} }
fd = get_console_fd(); fd = get_console_fd();
while (argc > 2) { while (argc > 2) {

View File

@ -10,7 +10,7 @@ config CONFIG_BASENAME
default n default n
help help
basename is used to strip the directory and suffix from filenames, basename is used to strip the directory and suffix from filenames,
leaving just the filename itself. Enable this option if you wish leaving just the filename itself. Enable this option if you wish
to enable the 'basename' utility. to enable the 'basename' utility.
config CONFIG_CAL config CONFIG_CAL
@ -101,7 +101,7 @@ config CONFIG_DD
help help
dd copies a file (from standard input to standard output, dd copies a file (from standard input to standard output,
by default) using specific input and output blocksizes, by default) using specific input and output blocksizes,
while optionally performing conversions on it. while optionally performing conversions on it.
config CONFIG_DF config CONFIG_DF
bool "df" bool "df"
@ -154,7 +154,7 @@ config CONFIG_FEATURE_FANCY_ECHO
default y default y
depends on CONFIG_ECHO depends on CONFIG_ECHO
help help
This adds options (-n and -e) to echo. This adds options (-n and -e) to echo.
config CONFIG_ENV config CONFIG_ENV
bool "env" bool "env"

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -2,7 +2,7 @@
/* /*
* Mini basename implementation for busybox * Mini basename implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -161,7 +161,7 @@ int cal_main(int argc, char **argv)
int row, len, days[MAXDAYS]; int row, len, days[MAXDAYS];
int *dp = days; int *dp = days;
char lineout[30]; char lineout[30];
day_array(month, year, dp); day_array(month, year, dp);
len = sprintf(lineout, "%s %d", month_names[month - 1], year); len = sprintf(lineout, "%s %d", month_names[month - 1], year);
bb_printf("%*s%s\n%s\n", bb_printf("%*s%s\n%s\n",
@ -176,7 +176,7 @@ int cal_main(int argc, char **argv)
int row, which_cal, week_len, days[12][MAXDAYS]; int row, which_cal, week_len, days[12][MAXDAYS];
int *dp; int *dp;
char lineout[80]; char lineout[80];
sprintf(lineout, "%d", year); sprintf(lineout, "%d", year);
center(lineout, center(lineout,
(WEEK_LEN * 3 + HEAD_SEP * 2) (WEEK_LEN * 3 + HEAD_SEP * 2)
@ -317,7 +317,7 @@ static void blank_string(char *buf, size_t buflen)
static char *build_row(char *p, int *dp) static char *build_row(char *p, int *dp)
{ {
int col, val, day; int col, val, day;
memset(p, ' ', (julian + DAY_LEN) * 7); memset(p, ' ', (julian + DAY_LEN) * 7);
col = 0; col = 0;

View File

@ -2,7 +2,7 @@
/* /*
* Mini chgrp implementation for busybox * Mini chgrp implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -63,7 +63,7 @@ int chgrp_main(int argc, char **argv)
/* Ok, ready to do the deed now */ /* Ok, ready to do the deed now */
do { do {
if (! recursive_action (*argv, recursiveFlag, FALSE, FALSE, if (! recursive_action (*argv, recursiveFlag, FALSE, FALSE,
fileAction, fileAction, &gid)) { fileAction, fileAction, &gid)) {
retval = EXIT_FAILURE; retval = EXIT_FAILURE;
} }

View File

@ -2,7 +2,7 @@
/* /*
* Mini chmod implementation for busybox * Mini chmod implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* Reworked by (C) 2002 Vladimir Oleynik <dzo@simtreas.ru> * Reworked by (C) 2002 Vladimir Oleynik <dzo@simtreas.ru>
* to correctly parse '-rwxgoa' * to correctly parse '-rwxgoa'

View File

@ -2,7 +2,7 @@
/* /*
* Mini chown implementation for busybox * Mini chown implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -84,10 +84,10 @@ int chown_main(int argc, char **argv)
uid = get_ug_id(*argv, my_getpwnam); uid = get_ug_id(*argv, my_getpwnam);
++argv; ++argv;
/* Ok, ready to do the deed now */ /* Ok, ready to do the deed now */
do { do {
if (! recursive_action (*argv, (flags & FLAG_R), FALSE, FALSE, if (! recursive_action (*argv, (flags & FLAG_R), FALSE, FALSE,
fileAction, fileAction, NULL)) { fileAction, fileAction, NULL)) {
retval = EXIT_FAILURE; retval = EXIT_FAILURE;
} }

View File

@ -2,7 +2,7 @@
/* /*
* Mini chroot implementation for busybox * Mini chroot implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -3,7 +3,7 @@
* cut.c - minimalist version of cut * cut.c - minimalist version of cut
* *
* Copyright (C) 1999,2000,2001 by Lineo, inc. * Copyright (C) 1999,2000,2001 by Lineo, inc.
* Written by Mark Whitley <markw@lineo.com>, <markw@codepoet.org> * Written by Mark Whitley <markw@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -69,7 +69,7 @@ static int cmpfunc(const void *a, const void *b)
/* /*
* parse_lists() - parses a list and puts values into startpos and endpos. * parse_lists() - parses a list and puts values into startpos and endpos.
* valid list formats: N, N-, N-M, -M * valid list formats: N, N-, N-M, -M
* more than one list can be seperated by commas * more than one list can be seperated by commas
*/ */
static void parse_lists(char *lists) static void parse_lists(char *lists)
@ -96,7 +96,7 @@ static void parse_lists(char *lists)
s = strtoul(ntok, &junk, 10); s = strtoul(ntok, &junk, 10);
if(*junk != '\0' || s < 0) if(*junk != '\0' || s < 0)
bb_error_msg_and_die("invalid byte or field list"); bb_error_msg_and_die("invalid byte or field list");
/* account for the fact that arrays are zero based, while the user /* account for the fact that arrays are zero based, while the user
* expects the first char on the line to be char # 1 */ * expects the first char on the line to be char # 1 */
if (s != 0) if (s != 0)
@ -125,7 +125,7 @@ static void parse_lists(char *lists)
/* if there's something left to tokenize, the user past an invalid list */ /* if there's something left to tokenize, the user past an invalid list */
if (ltok) if (ltok)
bb_error_msg_and_die("invalid byte or field list"); bb_error_msg_and_die("invalid byte or field list");
/* add the new list */ /* add the new list */
cut_lists = xrealloc(cut_lists, sizeof(struct cut_list) * (++nlists)); cut_lists = xrealloc(cut_lists, sizeof(struct cut_list) * (++nlists));
cut_lists[nlists-1].startpos = s; cut_lists[nlists-1].startpos = s;
@ -227,7 +227,7 @@ static void cut_file_by_lines(const char *line, unsigned int linenum)
{ {
static int c = 0; static int c = 0;
static int l = -1; static int l = -1;
/* I can't initialize this above cuz the "initializer isn't /* I can't initialize this above cuz the "initializer isn't
* constant" *sigh* */ * constant" *sigh* */
if (l == -1) if (l == -1)

View File

@ -3,7 +3,7 @@
* Mini date implementation for busybox * Mini date implementation for busybox
* *
* by Matthew Grant <grantma@anathoth.gen.nz> * by Matthew Grant <grantma@anathoth.gen.nz>
* *
* iso-format handling added by Robert Griebl <griebl@gmx.de> * iso-format handling added by Robert Griebl <griebl@gmx.de>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -33,7 +33,7 @@
#include "busybox.h" #include "busybox.h"
/* This 'date' command supports only 2 time setting formats, /* This 'date' command supports only 2 time setting formats,
all the GNU strftime stuff (its in libc, lets use it), all the GNU strftime stuff (its in libc, lets use it),
setting time using UTC and displaying int, as well as setting time using UTC and displaying int, as well as
an RFC 822 complient date output for shell scripting an RFC 822 complient date output for shell scripting

View File

@ -2,7 +2,7 @@
/* /*
* Mini df implementation for busybox * Mini df implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* based on original code by (I think) Bruce Perens <bruce@pixar.com>. * based on original code by (I think) Bruce Perens <bruce@pixar.com>.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -51,7 +51,7 @@ extern int df_main(int argc, char **argv)
long blocks_used; long blocks_used;
long blocks_percent_used; long blocks_percent_used;
#ifdef CONFIG_FEATURE_HUMAN_READABLE #ifdef CONFIG_FEATURE_HUMAN_READABLE
unsigned long df_disp_hr = KILOBYTE; unsigned long df_disp_hr = KILOBYTE;
#endif #endif
int status = EXIT_SUCCESS; int status = EXIT_SUCCESS;
unsigned long opt; unsigned long opt;
@ -115,7 +115,7 @@ extern int df_main(int argc, char **argv)
bb_perror_msg("%s", mount_point); bb_perror_msg("%s", mount_point);
goto SET_ERROR; goto SET_ERROR;
} }
if ((s.f_blocks > 0) || !mount_table){ if ((s.f_blocks > 0) || !mount_table){
blocks_used = s.f_blocks - s.f_bfree; blocks_used = s.f_blocks - s.f_bfree;
blocks_percent_used = 0; blocks_percent_used = 0;
@ -124,7 +124,7 @@ extern int df_main(int argc, char **argv)
+ (blocks_used + s.f_bavail)/2 + (blocks_used + s.f_bavail)/2
) / (blocks_used + s.f_bavail); ) / (blocks_used + s.f_bavail);
} }
if (strcmp(device, "rootfs") == 0) { if (strcmp(device, "rootfs") == 0) {
continue; continue;
} else if (strcmp(device, "/dev/root") == 0) { } else if (strcmp(device, "/dev/root") == 0) {
@ -134,15 +134,15 @@ extern int df_main(int argc, char **argv)
goto SET_ERROR; goto SET_ERROR;
} }
} }
#ifdef CONFIG_FEATURE_HUMAN_READABLE #ifdef CONFIG_FEATURE_HUMAN_READABLE
bb_printf("%-21s%9s ", device, bb_printf("%-21s%9s ", device,
make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
bb_printf("%9s ", bb_printf("%9s ",
make_human_readable_str( (s.f_blocks - s.f_bfree), make_human_readable_str( (s.f_blocks - s.f_bfree),
s.f_bsize, df_disp_hr)); s.f_bsize, df_disp_hr));
bb_printf("%9s %3ld%% %s\n", bb_printf("%9s %3ld%% %s\n",
make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr), make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr),
blocks_percent_used, mount_point); blocks_percent_used, mount_point);

View File

@ -2,7 +2,7 @@
/* /*
* Mini dirname implementation for busybox * Mini dirname implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -50,7 +50,7 @@ typedef unsigned long int bb_uint64_t;
static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// if fn is NULL then input is stdin and output is stdout // if fn is NULL then input is stdin and output is stdout
static int convert(char *fn, int ConvType) static int convert(char *fn, int ConvType)
{ {
int c, fd; int c, fd;
struct timeval tv; struct timeval tv;
@ -156,12 +156,12 @@ static int convert(char *fn, int ConvType)
return 0; return 0;
} }
int dos2unix_main(int argc, char *argv[]) int dos2unix_main(int argc, char *argv[])
{ {
int ConvType = CT_AUTO; int ConvType = CT_AUTO;
int o; int o;
//See if we are supposed to be doing dos2unix or unix2dos //See if we are supposed to be doing dos2unix or unix2dos
if (argv[0][0]=='d') { if (argv[0][0]=='d') {
ConvType = CT_DOS2UNIX; ConvType = CT_DOS2UNIX;
} }

View File

@ -181,7 +181,7 @@ int du_main(int argc, char **argv)
#else #else
disp_k = 0; disp_k = 0;
#endif #endif
} }
#endif #endif
/* Note: SUSv3 specifies that -a and -s options can not be used together /* Note: SUSv3 specifies that -a and -s options can not be used together

View File

@ -55,7 +55,7 @@ extern int echo_main(int argc, char** argv)
* that all of the options specified are actually valid. * that all of the options specified are actually valid.
* Otherwise, the string should just be echoed. * Otherwise, the string should just be echoed.
*/ */
if (!*(p = *argv + 1)) { /* A single '-', so echo it. */ if (!*(p = *argv + 1)) { /* A single '-', so echo it. */
goto just_echo; goto just_echo;
} }
@ -87,7 +87,7 @@ just_echo:
while ((c = *(*argv)++)) { while ((c = *(*argv)++)) {
if (c == eflag) { /* Check for escape seq. */ if (c == eflag) { /* Check for escape seq. */
if (**argv == 'c') { if (**argv == 'c') {
/* '\c' means cancel newline and /* '\c' means cancel newline and
* ignore all subsequent chars. */ * ignore all subsequent chars. */
goto DONE; goto DONE;
} }
@ -141,8 +141,8 @@ DONE:
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* *
* 3. <BSD Advertising Clause omitted per the July 22, 1999 licensing change * 3. <BSD Advertising Clause omitted per the July 22, 1999 licensing change
* ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change> * ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change>
* *
* California, Berkeley and its contributors. * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors

View File

@ -5,7 +5,7 @@
* based on GNU expr Mike Parker. * based on GNU expr Mike Parker.
* Copyright (C) 86, 1991-1997, 1999 Free Software Foundation, Inc. * Copyright (C) 86, 1991-1997, 1999 Free Software Foundation, Inc.
* *
* Busybox modifications * Busybox modifications
* Copyright (c) 2000 Edward Betts <edward@debian.org>. * Copyright (c) 2000 Edward Betts <edward@debian.org>.
* Aug 2003 Vladimir Oleynik - reduced 464 bytes. * Aug 2003 Vladimir Oleynik - reduced 464 bytes.
* *

View File

@ -2,7 +2,7 @@
/* /*
* Mini false implementation for busybox * Mini false implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -47,7 +47,7 @@ extern int id_main(int argc, char **argv)
#ifdef CONFIG_SELINUX #ifdef CONFIG_SELINUX
int is_flask_enabled_flag = is_flask_enabled(); int is_flask_enabled_flag = is_flask_enabled();
#endif #endif
flags = bb_getopt_ulflags(argc, argv, "ugrn"); flags = bb_getopt_ulflags(argc, argv, "ugrn");
if (((flags & (JUST_USER | JUST_GROUP)) == (JUST_USER | JUST_GROUP)) if (((flags & (JUST_USER | JUST_GROUP)) == (JUST_USER | JUST_GROUP))

View File

@ -48,7 +48,7 @@ static const struct option install_long_options[] = {
{ "owner", 0, NULL, 'o' }, { "owner", 0, NULL, 'o' },
{ 0, 0, 0, 0 } { 0, 0, 0, 0 }
}; };
extern int install_main(int argc, char **argv) extern int install_main(int argc, char **argv)
{ {
struct stat statbuf; struct stat statbuf;
@ -116,7 +116,7 @@ extern int install_main(int argc, char **argv)
} }
return(ret); return(ret);
} }
cp_mv_stat2(argv[argc - 1], &statbuf, lstat); cp_mv_stat2(argv[argc - 1], &statbuf, lstat);
for (i = optind; i < argc - 1; i++) { for (i = optind; i < argc - 1; i++) {
unsigned char *dest; unsigned char *dest;
@ -137,15 +137,15 @@ extern int install_main(int argc, char **argv)
/* Set the user and group id */ /* Set the user and group id */
if (lchown(dest, uid, gid) == -1) { if (lchown(dest, uid, gid) == -1) {
bb_perror_msg("cannot change ownership of %s", dest); bb_perror_msg("cannot change ownership of %s", dest);
ret = EXIT_FAILURE; ret = EXIT_FAILURE;
} }
if (flags & INSTALL_OPT_STRIP) { if (flags & INSTALL_OPT_STRIP) {
if (execlp("strip", "strip", dest, NULL) == -1) { if (execlp("strip", "strip", dest, NULL) == -1) {
bb_error_msg("strip failed"); bb_error_msg("strip failed");
ret = EXIT_FAILURE; ret = EXIT_FAILURE;
} }
} }
} }
return(ret); return(ret);
} }

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -2,7 +2,7 @@
/* /*
* Mini ln implementation for busybox * Mini ln implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -88,14 +88,14 @@ extern int ln_main(int argc, char **argv)
if (flag & LN_SYMLINK) { if (flag & LN_SYMLINK) {
link_func = symlink; link_func = symlink;
} }
if (link_func(*argv, src) != 0) { if (link_func(*argv, src) != 0) {
bb_perror_msg(src); bb_perror_msg(src);
status = EXIT_FAILURE; status = EXIT_FAILURE;
} }
free(src_name); free(src_name);
} while ((++argv)[1]); } while ((++argv)[1]);
return status; return status;

View File

@ -315,7 +315,7 @@ static int count_dirs(struct dnode **dn, int nfiles, int notsubdirs)
if (S_ISDIR(dn[i]->dstat.st_mode) if (S_ISDIR(dn[i]->dstat.st_mode)
&& (notsubdirs && (notsubdirs
|| ((dn[i]->name[0] != '.') || ((dn[i]->name[0] != '.')
|| (dn[i]->name[1] || (dn[i]->name[1]
&& ((dn[i]->name[1] != '.') && ((dn[i]->name[1] != '.')
|| dn[i]->name[2]))))) || dn[i]->name[2])))))
dirs++; dirs++;
@ -1055,7 +1055,7 @@ extern int ls_main(int argc, char **argv)
if ((all_fmt & STYLE_MASK) == STYLE_LONG && (all_fmt & LIST_ID_NUMERIC)) if ((all_fmt & STYLE_MASK) == STYLE_LONG && (all_fmt & LIST_ID_NUMERIC))
all_fmt &= ~LIST_ID_NAME; /* don't list names if numeric uid */ all_fmt &= ~LIST_ID_NAME; /* don't list names if numeric uid */
#endif #endif
/* choose a display format */ /* choose a display format */
if ((all_fmt & STYLE_MASK) == STYLE_AUTO) if ((all_fmt & STYLE_MASK) == STYLE_AUTO)
#if STYLE_AUTO != 0 #if STYLE_AUTO != 0

View File

@ -1,7 +1,7 @@
/* /*
* Copyright (C) 2003 Glenn L. McGrath * Copyright (C) 2003 Glenn L. McGrath
* Copyright (C) 2003 Erik Andersen * Copyright (C) 2003-2004 Erik Andersen
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or

View File

@ -50,7 +50,7 @@ extern int mknod_main(int argc, char **argv)
dev = (bb_xgetularg10_bnd(argv[2], 0, 255) << 8) dev = (bb_xgetularg10_bnd(argv[2], 0, 255) << 8)
+ bb_xgetularg10_bnd(argv[3], 0, 255); + bb_xgetularg10_bnd(argv[3], 0, 255);
} }
if (argc == 2) { if (argc == 2) {
name = *argv; name = *argv;
if (mknod(name, mode, dev) == 0) { if (mknod(name, mode, dev) == 0) {

View File

@ -75,7 +75,7 @@ extern int mv_main(int argc, char **argv)
goto DO_MOVE; goto DO_MOVE;
} }
} }
do { do {
dest = concat_path_file(last, bb_get_last_path_component(*argv)); dest = concat_path_file(last, bb_get_last_path_component(*argv));
@ -84,7 +84,7 @@ extern int mv_main(int argc, char **argv)
} }
DO_MOVE: DO_MOVE:
if (dest_exists && !(flags & OPT_FILEUTILS_FORCE) && if (dest_exists && !(flags & OPT_FILEUTILS_FORCE) &&
((access(dest, W_OK) < 0 && isatty(0)) || ((access(dest, W_OK) < 0 && isatty(0)) ||
(flags & OPT_FILEUTILS_INTERACTIVE))) { (flags & OPT_FILEUTILS_INTERACTIVE))) {
@ -119,7 +119,7 @@ DO_MOVE:
bb_perror_msg("cannot remove `%s'", dest); bb_perror_msg("cannot remove `%s'", dest);
goto RET_1; goto RET_1;
} }
} }
if ((copy_file(*argv, dest, if ((copy_file(*argv, dest,
FILEUTILS_RECUR | FILEUTILS_PRESERVE_STATUS) >= 0) && FILEUTILS_RECUR | FILEUTILS_PRESERVE_STATUS) >= 0) &&
(remove_file(*argv, FILEUTILS_RECUR | FILEUTILS_FORCE) >= 0)) { (remove_file(*argv, FILEUTILS_RECUR | FILEUTILS_FORCE) >= 0)) {
@ -132,7 +132,7 @@ RET_1:
RET_0: RET_0:
if (dest != last) { if (dest != last) {
free((void *) dest); free((void *) dest);
} }
} while (*++argv != last); } while (*++argv != last);
return (status); return (status);

View File

@ -106,7 +106,7 @@ static int print_esc __P((char *escstart));
static int print_formatted __P((char *format, int argc, char **argv)); static int print_formatted __P((char *format, int argc, char **argv));
static long xstrtol __P((char *s)); static long xstrtol __P((char *s));
static unsigned long xstrtoul __P((char *s)); static unsigned long xstrtoul __P((char *s));
static void print_direc __P( (char *start, size_t length, static void print_direc __P( (char *start, size_t length,
int field_width, int precision, char *argument)); int field_width, int precision, char *argument));
static void print_esc_char __P((int c)); static void print_esc_char __P((int c));
static void print_esc_string __P((char *str)); static void print_esc_string __P((char *str));
@ -214,7 +214,7 @@ static int print_formatted(char *format, int argc, char **argv)
++f; ++f;
++direc_length; ++direc_length;
} }
/* /*
if (!strchr ("diouxXfeEgGcs", *f)) if (!strchr ("diouxXfeEgGcs", *f))
fprintf(stderr, "%%%c: invalid directive", *f); fprintf(stderr, "%%%c: invalid directive", *f);
*/ */

View File

@ -66,7 +66,7 @@ extern int rmdir_main(int argc, char **argv)
} }
break; break;
} while (1); } while (1);
} while (*++argv); } while (*++argv);
return status; return status;

View File

@ -118,7 +118,7 @@ int tail_main(int argc, char **argv)
/* Allow legacy syntax of an initial numeric option without -n. */ /* Allow legacy syntax of an initial numeric option without -n. */
if (argc >=2 && ((argv[1][0] == '+') || ((argv[1][0] == '-') if (argc >=2 && ((argv[1][0] == '+') || ((argv[1][0] == '-')
/* && (isdigit)(argv[1][1]) */ /* && (isdigit)(argv[1][1]) */
&& (((unsigned int)(argv[1][1] - '0')) <= 9)))) && (((unsigned int)(argv[1][1] - '0')) <= 9))))
{ {
optind = 2; optind = 2;
optarg = argv[1]; optarg = argv[1];

View File

@ -97,7 +97,7 @@ int tee_main(int argc, char **argv)
} }
#endif #endif
/* Now we need to check for i/o errors on stdin and the various /* Now we need to check for i/o errors on stdin and the various
* output files. Since we know that the first entry in the output * output files. Since we know that the first entry in the output
* file table is stdout, we can save one "if ferror" test by * file table is stdout, we can save one "if ferror" test by
* setting the first entry to stdin and checking stdout error * setting the first entry to stdin and checking stdout error

View File

@ -2,7 +2,7 @@
/* /*
* test implementation for busybox * test implementation for busybox
* *
* Copyright (c) by a whole pile of folks: * Copyright (c) by a whole pile of folks:
* *
* test(1); version 7-like -- author Erik Baalbergen * test(1); version 7-like -- author Erik Baalbergen
* modified by Eric Gisin to be used as built-in. * modified by Eric Gisin to be used as built-in.
@ -10,7 +10,7 @@
* (-x -c -b -p -u -g -k) plus Korn's -L -nt -ot -ef and new -S (socket). * (-x -c -b -p -u -g -k) plus Korn's -L -nt -ot -ef and new -S (socket).
* modified by J.T. Conklin for NetBSD. * modified by J.T. Conklin for NetBSD.
* modified by Herbert Xu to be used as built-in in ash. * modified by Herbert Xu to be used as built-in in ash.
* modified by Erik Andersen <andersen@codepoet.org> to be used * modified by Erik Andersen <andersen@codepoet.org> to be used
* in busybox. * in busybox.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -2,7 +2,7 @@
/* /*
* Mini touch implementation for busybox * Mini touch implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -4,7 +4,7 @@
* *
* Copyright (c) Michiel Huisjes * Copyright (c) Michiel Huisjes
* *
* This version of tr is adapted from Minix tr and was modified * This version of tr is adapted from Minix tr and was modified
* by Erik Andersen <andersen@codepoet.org> to be used in busybox. * by Erik Andersen <andersen@codepoet.org> to be used in busybox.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -20,7 +20,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
* Original copyright notice is retained at the end of this file. * Original copyright notice is retained at the end of this file.
*/ */
@ -213,24 +213,24 @@ extern int tr_main(int argc, char **argv)
/* /*
* Copyright (c) 1987,1997, Prentice Hall * Copyright (c) 1987,1997, Prentice Hall
* All rights reserved. * All rights reserved.
* *
* Redistribution and use of the MINIX operating system in source and * Redistribution and use of the MINIX operating system in source and
* binary forms, with or without modification, are permitted provided * binary forms, with or without modification, are permitted provided
* that the following conditions are met: * that the following conditions are met:
* *
* Redistributions of source code must retain the above copyright * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* *
* Redistributions in binary form must reproduce the above * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following * copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided * disclaimer in the documentation and/or other materials provided
* with the distribution. * with the distribution.
* *
* Neither the name of Prentice Hall nor the names of the software * Neither the name of Prentice Hall nor the names of the software
* authors or contributors may be used to endorse or promote * authors or contributors may be used to endorse or promote
* products derived from this software without specific prior * products derived from this software without specific prior
* written permission. * written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, AND
* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

View File

@ -2,7 +2,7 @@
/* /*
* Mini true implementation for busybox * Mini true implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@ -18,7 +18,7 @@
* Based on specification from * Based on specification from
* http://www.opengroup.org/onlinepubs/007904975/utilities/uuencode.html * http://www.opengroup.org/onlinepubs/007904975/utilities/uuencode.html
* *
* Bugs: the spec doesnt mention anything about "`\n`\n" prior to the "end" line * Bugs: the spec doesnt mention anything about "`\n`\n" prior to the "end" line
*/ */
@ -50,7 +50,7 @@ static int read_stduu(FILE *src_stream, FILE *dst_stream)
if (length > 60) { if (length > 60) {
bb_error_msg_and_die("Line too long"); bb_error_msg_and_die("Line too long");
} }
line_ptr++; line_ptr++;
/* Tolerate an overly long line to acomadate a possible exta '`' */ /* Tolerate an overly long line to acomadate a possible exta '`' */
if (strlen(line_ptr) < length) { if (strlen(line_ptr) < length) {

View File

@ -26,7 +26,7 @@
/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org) /* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org)
* *
* Rewritten to fix a number of problems and do some size optimizations. * Rewritten to fix a number of problems and do some size optimizations.
* Problems in the previous busybox implementation (besides bloat) included: * Problems in the previous busybox implementation (besides bloat) included:
* 1) broken 'wc -c' optimization (read note below) * 1) broken 'wc -c' optimization (read note below)
* 2) broken handling of '-' args * 2) broken handling of '-' args
* 3) no checking of ferror on EOF returns * 3) no checking of ferror on EOF returns
@ -110,33 +110,33 @@ int wc_main(int argc, char **argv)
char status = EXIT_SUCCESS; char status = EXIT_SUCCESS;
char in_word; char in_word;
char print_type; char print_type;
print_type = bb_getopt_ulflags(argc, argv, wc_opts); print_type = bb_getopt_ulflags(argc, argv, wc_opts);
if (print_type == 0) { if (print_type == 0) {
print_type = (1 << WC_LINES) | (1 << WC_WORDS) | (1 << WC_CHARS); print_type = (1 << WC_LINES) | (1 << WC_WORDS) | (1 << WC_CHARS);
} }
argv += optind; argv += optind;
if (!*argv) { if (!*argv) {
*--argv = (char *) bb_msg_standard_input; *--argv = (char *) bb_msg_standard_input;
} }
memset(totals, 0, sizeof(totals)); memset(totals, 0, sizeof(totals));
pcounts = counts; pcounts = counts;
do { do {
++num_files; ++num_files;
if (!(fp = bb_wfopen_input(*argv))) { if (!(fp = bb_wfopen_input(*argv))) {
status = EXIT_FAILURE; status = EXIT_FAILURE;
continue; continue;
} }
memset(counts, 0, sizeof(counts)); memset(counts, 0, sizeof(counts));
linepos = 0; linepos = 0;
in_word = 0; in_word = 0;
do { do {
++counts[WC_CHARS]; ++counts[WC_CHARS];
c = getc(fp); c = getc(fp);
@ -177,21 +177,21 @@ int wc_main(int argc, char **argv)
} else { } else {
continue; continue;
} }
counts[WC_WORDS] += in_word; counts[WC_WORDS] += in_word;
in_word = 0; in_word = 0;
if (c == EOF) { if (c == EOF) {
break; break;
} }
} while (1); } while (1);
if (totals[WC_LENGTH] < counts[WC_LENGTH]) { if (totals[WC_LENGTH] < counts[WC_LENGTH]) {
totals[WC_LENGTH] = counts[WC_LENGTH]; totals[WC_LENGTH] = counts[WC_LENGTH];
} }
totals[WC_LENGTH] -= counts[WC_LENGTH]; totals[WC_LENGTH] -= counts[WC_LENGTH];
bb_fclose_nonstdin(fp); bb_fclose_nonstdin(fp);
OUTPUT: OUTPUT:
s = fmt_str + 1; /* Skip the leading space on 1st pass. */ s = fmt_str + 1; /* Skip the leading space on 1st pass. */
u = 0; u = 0;
@ -202,16 +202,16 @@ int wc_main(int argc, char **argv)
} }
totals[u] += pcounts[u]; totals[u] += pcounts[u];
} while (++u < 4); } while (++u < 4);
s += 8; /* Set the format to the empty string. */ s += 8; /* Set the format to the empty string. */
if (*argv != bb_msg_standard_input) { if (*argv != bb_msg_standard_input) {
s -= 3; /* We have a name, so do %s conversion. */ s -= 3; /* We have a name, so do %s conversion. */
} }
bb_printf(s, *argv); bb_printf(s, *argv);
} while (*++argv); } while (*++argv);
/* If more than one file was processed, we want the totals. To save some /* If more than one file was processed, we want the totals. To save some
* space, we set the pcounts ptr to the totals array. This has the side * space, we set the pcounts ptr to the totals array. This has the side
* effect of trashing the totals array after outputting it, but that's * effect of trashing the totals array after outputting it, but that's
@ -222,6 +222,6 @@ int wc_main(int argc, char **argv)
pcounts = totals; pcounts = totals;
goto OUTPUT; goto OUTPUT;
} }
bb_fflush_stdout_and_exit(status); bb_fflush_stdout_and_exit(status);
} }

View File

@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */ /* vi: set sw=4 ts=4: */
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
* Mini who is used to display user name, login time, * Mini who is used to display user name, login time,
* idle time and host name. * idle time and host name.
* *
* Author: Da Chen <dchen@ayrnetworks.com> * Author: Da Chen <dchen@ayrnetworks.com>
@ -10,7 +10,7 @@
* as published by the Free Software Foundation: * as published by the Free Software Foundation:
* http://www.gnu.org/copyleft/gpl.html * http://www.gnu.org/copyleft/gpl.html
* *
* Copyright (c) 2002 AYR Networks, Inc. * Copyright (c) 2002 AYR Networks, Inc.
*---------------------------------------------------------------------- *----------------------------------------------------------------------
*/ */
@ -30,21 +30,21 @@ extern int who_main(int argc, char **argv)
struct utmp *ut; struct utmp *ut;
struct stat st; struct stat st;
int devlen, len; int devlen, len;
time_t now, idle; time_t now, idle;
if (argc > 1) if (argc > 1)
bb_show_usage(); bb_show_usage();
setutent(); setutent();
devlen = sizeof("/dev/") - 1; devlen = sizeof("/dev/") - 1;
printf("USER TTY IDLE FROM HOST\n"); printf("USER TTY IDLE FROM HOST\n");
while ((ut = getutent()) != NULL) { while ((ut = getutent()) != NULL) {
char name[40]; char name[40];
if (ut->ut_user[0] && ut->ut_type == USER_PROCESS) { if (ut->ut_user[0] && ut->ut_type == USER_PROCESS) {
len = strlen(ut->ut_line); len = strlen(ut->ut_line);
if (ut->ut_line[0] == '/') { if (ut->ut_line[0] == '/') {
strncpy(name, ut->ut_line, len); strncpy(name, ut->ut_line, len);
name[len] = '\0'; name[len] = '\0';
strcpy(ut->ut_line, ut->ut_line + devlen); strcpy(ut->ut_line, ut->ut_line + devlen);
@ -53,27 +53,27 @@ extern int who_main(int argc, char **argv)
strncpy(name+devlen, ut->ut_line, len); strncpy(name+devlen, ut->ut_line, len);
name[devlen+len] = '\0'; name[devlen+len] = '\0';
} }
printf("%-10s %-8s ", ut->ut_user, ut->ut_line); printf("%-10s %-8s ", ut->ut_user, ut->ut_line);
if (stat(name, &st) == 0) { if (stat(name, &st) == 0) {
now = time(NULL); now = time(NULL);
idle = now - st.st_atime; idle = now - st.st_atime;
if (idle < 60) if (idle < 60)
printf("00:00m "); printf("00:00m ");
else if (idle < (60 * 60)) else if (idle < (60 * 60))
printf("00:%02dm ", (int)(idle / 60)); printf("00:%02dm ", (int)(idle / 60));
else if (idle < (24 * 60 * 60)) else if (idle < (24 * 60 * 60))
printf("%02d:%02dm ", (int)(idle / (60 * 60)), printf("%02d:%02dm ", (int)(idle / (60 * 60)),
(int)(idle % (60 * 60)) / 60); (int)(idle % (60 * 60)) / 60);
else if (idle < (24 * 60 * 60 * 365)) else if (idle < (24 * 60 * 60 * 365))
printf("%03ddays ", (int)(idle / (24 * 60 * 60))); printf("%03ddays ", (int)(idle / (24 * 60 * 60)));
else else
printf("%02dyears ", (int) (idle / (24 * 60 * 60 * 365))); printf("%02dyears ", (int) (idle / (24 * 60 * 60 * 365)));
} else } else
printf("%-8s ", "?"); printf("%-8s ", "?");
printf("%-12.12s %s\n", ctime(&(ut->ut_tv.tv_sec)) + 4, ut->ut_host); printf("%-12.12s %s\n", ctime(&(ut->ut_tv.tv_sec)) + 4, ut->ut_host);
} }
} }

20
debian/changelog vendored
View File

@ -100,7 +100,7 @@ busybox-cvs (0.60.99.cvs20030426-10) unstable; urgency=low
busybox-cvs (0.60.99.cvs20030426-9) unstable; urgency=low busybox-cvs (0.60.99.cvs20030426-9) unstable; urgency=low
* modutils/depmod.c * modutils/depmod.c
- fix base_dir for modules.dep - fix base_dir for modules.dep
-- Bastian Blank <waldi@debian.org> Sat, 07 Jun 2003 14:52:54 +0200 -- Bastian Blank <waldi@debian.org> Sat, 07 Jun 2003 14:52:54 +0200
@ -236,13 +236,13 @@ busybox-cvs (0.60.99.cvs20030114-1) unstable; urgency=low
busybox-cvs (0.60.99.cvs20030105-1) unstable; urgency=low busybox-cvs (0.60.99.cvs20030105-1) unstable; urgency=low
* Fix ip command build failure on ia64 (Closes: #172580 * Fix ip command build failure on ia64 (Closes: #172580
* Dont build with BSD partition table support in fdisk, fails on m68k * Dont build with BSD partition table support in fdisk, fails on m68k
-- Glenn McGrath <bug1@home> Sun, 5 Jan 2003 12:48:05 +1100 -- Glenn McGrath <bug1@home> Sun, 5 Jan 2003 12:48:05 +1100
busybox-cvs (0.60.99.cvs20030104-2) unstable; urgency=low busybox-cvs (0.60.99.cvs20030104-2) unstable; urgency=low
* floppy-retriever needs the cut command in the udeb * floppy-retriever needs the cut command in the udeb
-- Glenn McGrath <bug1@debian.org> Sat, 4 Jan 2003 17:13:05 +1100 -- Glenn McGrath <bug1@debian.org> Sat, 4 Jan 2003 17:13:05 +1100
@ -380,7 +380,7 @@ busybox (1:0.51-4) unstable; urgency=low
busybox (1:0.51-3) unstable; urgency=low busybox (1:0.51-3) unstable; urgency=low
* This is the "I am an idiot" release. * This is the "I am an idiot" release.
* Make cp and mv work again (closes: #97290) * Make cp and mv work again (closes: #97290)
* Fix the version number. * Fix the version number.
-- Erik Andersen <andersee@debian.org> Sat, 12 May 2001 17:35:58 -0600 -- Erik Andersen <andersee@debian.org> Sat, 12 May 2001 17:35:58 -0600
@ -401,13 +401,13 @@ busybox (0.51-1) unstable; urgency=low
for complete details) for complete details)
* Force USE_SYSTEM_PWD_GRP=false, so busybox bypasses * Force USE_SYSTEM_PWD_GRP=false, so busybox bypasses
the glibc NSS libraries. (closes: #93362) the glibc NSS libraries. (closes: #93362)
* Fixed a bug in sed's address range handling (closes: #91758) * Fixed a bug in sed's address range handling (closes: #91758)
* Removed irrelevant cruft from the bottem of debian/changelog * Removed irrelevant cruft from the bottem of debian/changelog
-- Erik Andersen <andersee@debian.org> Tue, 10 Apr 2001 14:07:29 -0600 -- Erik Andersen <andersee@debian.org> Tue, 10 Apr 2001 14:07:29 -0600
busybox (0.50-2) unstable; urgency=low busybox (0.50-2) unstable; urgency=low
* Enabled freeramdisk and pivot_root in the udeb (closes: #91336) * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
* Disabled lash (the busybox shell) in the udeb (closes: #91337) * Disabled lash (the busybox shell) in the udeb (closes: #91337)
* fixed a bug in syslog, a problem with rebooting when booted as * fixed a bug in syslog, a problem with rebooting when booted as
@ -417,7 +417,7 @@ busybox (0.50-2) unstable; urgency=low
busybox (0.50-2) unstable; urgency=low busybox (0.50-2) unstable; urgency=low
* Enabled freeramdisk and pivot_root in the udeb (closes: #91336) * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
* Disabled lash (the busybox shell) in the udeb (closes: #91337) * Disabled lash (the busybox shell) in the udeb (closes: #91337)
* fixed a bug in syslog, a problem with rebooting when booted as * fixed a bug in syslog, a problem with rebooting when booted as
@ -446,7 +446,7 @@ busybox (0.49-1) unstable; urgency=low
busybox (0.48-1) unstable; urgency=low busybox (0.48-1) unstable; urgency=low
* Lots more source updates and bug fixes. See changelog for details. * Lots more source updates and bug fixes. See changelog for details.
* Now includes .udeb support for the debian-installer. The .udeb * Now includes .udeb support for the debian-installer. The .udeb
probably needs some more work, but this should be a good start. probably needs some more work, but this should be a good start.
-- Erik Andersen <andersee@debian.org> Wed, 13 Dec 2000 08:36:07 -0700 -- Erik Andersen <andersee@debian.org> Wed, 13 Dec 2000 08:36:07 -0700
@ -465,11 +465,11 @@ busybox (0.46-1) unstable; urgency=low
busybox (0.45-1) unstable; urgency=low busybox (0.45-1) unstable; urgency=low
* First attempt at packaging BusyBox as a .deb. This has been in * First attempt at packaging BusyBox as a .deb. This has been in
in the Debian boot-floppies CVS tree forever. Hopefully, having it as a in the Debian boot-floppies CVS tree forever. Hopefully, having it as a
standalone app will make life easier for me, the debian-installer team, and standalone app will make life easier for me, the debian-installer team, and
everyone else as well... everyone else as well...
* I have created a busybox-static that can be used as a rescue shell when you * I have created a busybox-static that can be used as a rescue shell when you
hose your system. Just invoke "busybox sh" to fir up the shell. This has hose your system. Just invoke "busybox sh" to fir up the shell. This has
every app provided by busybox staically linked in. There have been several every app provided by busybox staically linked in. There have been several
times in the past that I would have loved to have this sitting on my system times in the past that I would have loved to have this sitting on my system

4
debian/control vendored
View File

@ -64,7 +64,7 @@ Description: Tiny utilities for the debian-installer
counterparts. counterparts.
. .
busybox-udeb is used by the debian-installer, so unless you are working busybox-udeb is used by the debian-installer, so unless you are working
on the debian-installer, this package is not for you. Installing this on the debian-installer, this package is not for you. Installing this
on your Debian system is a very, very bad idea. You have been warned. on your Debian system is a very, very bad idea. You have been warned.
Package: busybox-cvs-floppy-udeb Package: busybox-cvs-floppy-udeb
@ -83,6 +83,6 @@ Description: Tiny utilities for the debian-installer floppy images
counterparts. counterparts.
. .
busybox-udeb is used by the debian-installer, so unless you are working busybox-udeb is used by the debian-installer, so unless you are working
on the debian-installer, this package is not for you. Installing this on the debian-installer, this package is not for you. Installing this
on your Debian system is a very, very bad idea. You have been warned. on your Debian system is a very, very bad idea. You have been warned.

View File

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

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
# Makefile for busybox # Makefile for busybox
# #
# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@ -40,7 +40,7 @@ extern int mktemp_main(int argc, char **argv)
} }
else if (opt != 'q') { else if (opt != 'q') {
bb_show_usage(); bb_show_usage();
} }
} }
if (optind + 1 != argc) { if (optind + 1 != argc) {

View File

@ -8,7 +8,7 @@
* Based on the Debian run-parts program, version 1.15 * Based on the Debian run-parts program, version 1.15
* Copyright (C) 1996 Jeff Noxon <jeff@router.patch.net>, * Copyright (C) 1996 Jeff Noxon <jeff@router.patch.net>,
* Copyright (C) 1996-1999 Guy Maor <maor@debian.org> * Copyright (C) 1996-1999 Guy Maor <maor@debian.org>
* *
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -31,21 +31,21 @@
* attempt to write a program! :-) . */ * attempt to write a program! :-) . */
/* This piece of code is heavily based on the original version of run-parts, /* This piece of code is heavily based on the original version of run-parts,
* taken from debian-utils. I've only removed the long options and a the * taken from debian-utils. I've only removed the long options and a the
* report mode. As the original run-parts support only long options, I've * report mode. As the original run-parts support only long options, I've
* broken compatibility because the BusyBox policy doesn't allow them. * broken compatibility because the BusyBox policy doesn't allow them.
* The supported options are: * The supported options are:
* -t test. Print the name of the files to be executed, without * -t test. Print the name of the files to be executed, without
* execute them. * execute them.
* -a ARG argument. Pass ARG as an argument the program executed. It can * -a ARG argument. Pass ARG as an argument the program executed. It can
* be repeated to pass multiple arguments. * be repeated to pass multiple arguments.
* -u MASK umask. Set the umask of the program executed to MASK. */ * -u MASK umask. Set the umask of the program executed to MASK. */
/* TODO /* TODO
* done - convert calls to error in perror... and remove error() * done - convert calls to error in perror... and remove error()
* done - convert malloc/realloc to their x... counterparts * done - convert malloc/realloc to their x... counterparts
* done - remove catch_sigchld * done - remove catch_sigchld
* done - use bb's concat_path_file() * done - use bb's concat_path_file()
* done - declare run_parts_main() as extern and any other function as static? * done - declare run_parts_main() as extern and any other function as static?
*/ */
@ -85,7 +85,7 @@ int run_parts_main(int argc, char **argv)
/* Set the umask of the programs executed */ /* Set the umask of the programs executed */
case 'u': case 'u':
/* Check and set the umask of the program executed. As stated in the original /* Check and set the umask of the program executed. As stated in the original
* run-parts, the octal conversion in libc is not foolproof; it will take the * run-parts, the octal conversion in libc is not foolproof; it will take the
* 8 and 9 digits under some circumstances. We'll just have to live with it. * 8 and 9 digits under some circumstances. We'll just have to live with it.
*/ */
umask(bb_xgetlarg(optarg, 8, 0, 07777)); umask(bb_xgetlarg(optarg, 8, 0, 07777));

View File

@ -2,7 +2,7 @@
/* /*
* Which implementation for busybox * Which implementation for busybox
* *
* Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org> * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -53,7 +53,7 @@ extern int which_main(int argc, char **argv)
count = 5; count = 5;
} }
while (argc-- > 0) { while (argc-- > 0) {
char *buf; char *buf;
char *path_n; char *path_n;
char found = 0; char found = 0;

View File

@ -26,7 +26,7 @@ nodes in /dev, a few configuration files in /etc, and a Linux kernel.
BusyBox is maintained by <a href= BusyBox is maintained by <a href=
"http://codepoet.org/andersen/erik/erik.html">Erik Andersen</a>, and "http://codepoet.org/andersen/erik/erik.html">Erik Andersen</a>, and
licensed under the licensed under the
<a href= "http://www.gnu.org/copyleft/gpl.html">GNU GENERAL PUBLIC LICENSE</a> <a href= "http://www.gnu.org/copyleft/gpl.html">GNU GENERAL PUBLIC LICENSE</a>
<p> <p>
@ -37,7 +37,7 @@ licensed under the
Please visit our sponsors and thank them for their Please visit our sponsors and thank them for their
support! They have provided money for equipment and support! They have provided money for equipment and
bandwidth. Next time you need help with a project, bandwidth. Next time you need help with a project,
consider these fine companies! consider these fine companies!
<ul> <ul>
@ -57,7 +57,7 @@ consider these fine companies!
</ul> </ul>
If you wish to be a sponsor, or if you have already contributed and would like If you wish to be a sponsor, or if you have already contributed and would like
your name added here, email <a href= "mailto:andersen@codepoet.org">Erik</a>. your name added here, email <a href= "mailto:andersen@codepoet.org">Erik</a>.
<!--#include file="footer.html" --> <!--#include file="footer.html" -->

View File

@ -213,7 +213,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave /PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def closepath stroke grestore } def
/CircE { stroke [] 0 setdash /CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M /DiaW { stroke [] 0 setdash vpt add M
@ -233,7 +233,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave /PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def Opaque stroke grestore } def
/CircW { stroke [] 0 setdash /CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def /BoxFill { gsave Rec 1 setgray fill grestore } def
end end

View File

@ -1,6 +1,6 @@
The code and graphics on this website (and it's mirror sites, if any) are The code and graphics on this website (and it's mirror sites, if any) are
Copyright (c) 1999-2003 by Erik Andersen. All rights reserved. Copyright (c) 1999-2004 by Erik Andersen. All rights reserved.
Documents on this Web site including their graphical elements, design, and Documents on this Web site including their graphical elements, design, and
layout are protected by trade dress and other laws and MAY BE COPIED OR layout are protected by trade dress and other laws and MAY BE COPIED OR

View File

@ -18,8 +18,8 @@ CVS modules by running the following command (all on one line):
cvs -z3 -d:pserver:anonymous@busybox.net:/var/cvs co -c </pre> cvs -z3 -d:pserver:anonymous@busybox.net:/var/cvs co -c </pre>
<p> <p>
If you wish, you can then check out a local copy of any of the If you wish, you can then check out a local copy of any of the
available modules. The following is an example of how to grab available modules. The following is an example of how to grab
a copy of busybox and tinylogin: a copy of busybox and tinylogin:
<pre> <pre>
cvs -z3 -d:pserver:anonymous@busybox.net:/var/cvs co -P busybox tinylogin</pre> cvs -z3 -d:pserver:anonymous@busybox.net:/var/cvs co -P busybox tinylogin</pre>
@ -41,7 +41,7 @@ recommend you should use the same:
diff -ubBwpN diff -ubBwpN
checkout -P</pre> checkout -P</pre>
<p> <p>
Once you've checked out a copy of the source tree, you can update your Once you've checked out a copy of the source tree, you can update your
source tree at any time so it is in sync with the latest and greatest by source tree at any time so it is in sync with the latest and greatest by
running the command: running the command:

View File

@ -12,16 +12,16 @@ For the impatient, the following is probably about all you need to know:
<dl> <dl>
<dt><pre>cvs checkout -c</pre> <dt><pre>cvs checkout -c</pre>
<dd>Will list the modules available for checkout <dd>Will list the modules available for checkout
<dt><pre>cvs checkout &lt module name &gt</pre> <dt><pre>cvs checkout &lt module name &gt</pre>
<dd>Will checkout the named module <dd>Will checkout the named module
<dt><pre>cvs co &lt module name &gt</pre> <dt><pre>cvs co &lt module name &gt</pre>
<dd>Same thing <dd>Same thing
<dt><pre>cvs update</pre> <dt><pre>cvs update</pre>
<dd>Updates your local archive so it is in sync with the repository <dd>Updates your local archive so it is in sync with the repository
-- your local updates are left intact. Tries to merge upstream updates -- your local updates are left intact. Tries to merge upstream updates
into your local updates. You will see the following tags when it is into your local updates. You will see the following tags when it is
updating your local repository: C means conflict, U means update, updating your local repository: C means conflict, U means update,
P means patched, and M means modified. P means patched, and M means modified.
<dt><pre>cvs up</pre> <dt><pre>cvs up</pre>
<dd>Same thing <dd>Same thing

View File

@ -4,8 +4,8 @@
<h3>CVS Read/Write Access</h3> <h3>CVS Read/Write Access</h3>
If you want to be able to commit things to CVS, first contribute some If you want to be able to commit things to CVS, first contribute some
stuff to show you are serious. Then, very nicely ask stuff to show you are serious. Then, very nicely ask
<a href="mailto:andersen@codepoet.org">Erik Andersen</a> if he will set you up with <a href="mailto:andersen@codepoet.org">Erik Andersen</a> if he will set you up with
an account. To access CVS, you will want to add the following to set up your environment: an account. To access CVS, you will want to add the following to set up your environment:
<pre> <pre>
$ export CVS_RSH=/usr/bin/ssh $ export CVS_RSH=/usr/bin/ssh
@ -16,7 +16,7 @@ username...
<p> <p>
To obtain commit access, you will need to demonstrate you are To obtain commit access, you will need to demonstrate you are
serious by submitting a few good patches first. Then, you will need to serious by submitting a few good patches first. Then, you will need to
select a user-name to use when committing stuff, and finally, you will select a user-name to use when committing stuff, and finally, you will
need to send me the username you have selected, an ssh key, and the email need to send me the username you have selected, an ssh key, and the email
address where you prefer email to be sent (I will forward any email sent address where you prefer email to be sent (I will forward any email sent
@ -24,8 +24,8 @@ to you, but not store it).
<p> <p>
Note that if you would prefer to keep your communications with me Note that if you would prefer to keep your communications with me
private, you can encrypt your email using my private, you can encrypt your email using my
<a href="http://www.codepoet.org/~andersen/erik/gpg.asc">public key</a>. <a href="http://www.codepoet.org/~andersen/erik/gpg.asc">public key</a>.
<!--#include file="footer.html" --> <!--#include file="footer.html" -->

View File

@ -2,7 +2,7 @@
<h3>Documentation</h3> <h3>Documentation</h3>
Current documentation for BusyBox includes: Current documentation for BusyBox includes:
<ul> <ul>
<li><a href= <li><a href=

View File

@ -8,7 +8,7 @@ Source for the latest release can always be
downloaded from <a href="downloads">http://www.busybox.net/downloads</a>. downloaded from <a href="downloads">http://www.busybox.net/downloads</a>.
<p> <p>
You can also obtain <a href= "downloads/snapshots/">Daily Snapshots</a> of You can also obtain <a href= "downloads/snapshots/">Daily Snapshots</a> of
the latest stable, and the latest development CVS source trees. the latest stable, and the latest development CVS source trees.
<p> <p>

View File

@ -11,7 +11,7 @@
<font face="arial, helvetica, sans-serif" size="-1"> <font face="arial, helvetica, sans-serif" size="-1">
<a HREF="/copyright.txt">Copyright &copy; 1999-2003 Erik Andersen</a> <a HREF="/copyright.txt">Copyright &copy; 1999-2003 Erik Andersen</a>
<br> <br>
Mail all comments, insults, suggestions and bribes to Mail all comments, insults, suggestions and bribes to
<br> <br>
Erik Andersen <A HREF="mailto:andersen@codepoet.org">andersen@codepoet.org</A><BR> Erik Andersen <A HREF="mailto:andersen@codepoet.org">andersen@codepoet.org</A><BR>
</font> </font>

Some files were not shown because too many files have changed in this diff Show More