Remove trailing whitespace. Update copyright to include 2004.
This commit is contained in:
parent
8854004b41
commit
c7bda1ce65
10
AUTHORS
10
AUTHORS
@ -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
414
Changelog
@ -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
|
||||||
|
|
||||||
|
6
INSTALL
6
INSTALL
@ -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'
|
||||||
|
4
Makefile
4
Makefile
@ -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
18
README
@ -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>
|
||||||
|
|
||||||
|
@ -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
2
TODO
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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] */
|
||||||
|
@ -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");;
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 */
|
||||||
|
@ -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 */
|
||||||
|
@ -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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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");
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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'
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
*/
|
*/
|
||||||
|
@ -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;
|
||||||
|
@ -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];
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
20
debian/changelog
vendored
@ -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
4
debian/control
vendored
@ -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.
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
|
@ -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" -->
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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 < module name ></pre>
|
<dt><pre>cvs checkout < module name ></pre>
|
||||||
<dd>Will checkout the named module
|
<dd>Will checkout the named module
|
||||||
<dt><pre>cvs co < module name ></pre>
|
<dt><pre>cvs co < module name ></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
|
||||||
|
@ -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" -->
|
||||||
|
|
||||||
|
@ -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=
|
||||||
|
@ -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>
|
||||||
|
@ -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 © 1999-2003 Erik Andersen</a>
|
<a HREF="/copyright.txt">Copyright © 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
Loading…
Reference in New Issue
Block a user