upgrade busybox to 1.4.0
SVN-Revision: 6204
This commit is contained in:
parent
e2c94324e7
commit
1233a57f74
22 changed files with 586 additions and 1394 deletions
|
@ -9,13 +9,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=busybox
|
||||
PKG_VERSION:=1.3.1
|
||||
PKG_VERSION:=1.4.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
|
||||
http://distfiles.gentoo.org/distfiles/
|
||||
PKG_MD5SUM:=571531cfa83726947ccb566de017ad4f
|
||||
PKG_MD5SUM:=f24a3c1e08bc55ec44381d588e8bcced
|
||||
PKG_CAT:=bzcat
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
|
|
@ -396,14 +396,14 @@ config BUSYBOX_CONFIG_EFENCE
|
|||
|
||||
endchoice
|
||||
|
||||
config BUSYBOX_CONFIG_DEBUG_YANK_SUSv2
|
||||
bool "Disable obsolete features removed before SUSv3?"
|
||||
config BUSYBOX_CONFIG_INCLUDE_SUSv2
|
||||
bool "Enable obsolete features removed before SUSv3?"
|
||||
default y
|
||||
help
|
||||
This option will disable backwards compatibility with SuSv2,
|
||||
This option will enable backwards compatibility with SuSv2,
|
||||
specifically, old-style numeric options ('command -1 <file>')
|
||||
will not be supported in head, tail, and fold. (Note: should
|
||||
yank from renice too.)
|
||||
will be supported in head, tail, and fold. (Note: should
|
||||
affect renice too.)
|
||||
|
||||
endmenu
|
||||
|
||||
|
@ -440,7 +440,7 @@ config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
|
|||
prompt "not installed"
|
||||
depends on BUSYBOX_CONFIG_FEATURE_INSTALLER || BUSYBOX_CONFIG_FEATURE_SH_STANDALONE_SHELL
|
||||
help
|
||||
Do not install applets links. Usefull when using the -install feature
|
||||
Do not install applet links. Useful when using the -install feature
|
||||
or a standalone shell for rescue pruposes.
|
||||
|
||||
endchoice
|
||||
|
|
|
@ -139,7 +139,7 @@ config BUSYBOX_CONFIG_RPM
|
|||
bool "rpm"
|
||||
default n
|
||||
help
|
||||
Mini RPM applet - queries and extracts
|
||||
Mini RPM applet - queries and extracts RPM packages.
|
||||
|
||||
config BUSYBOX_CONFIG_TAR
|
||||
bool "tar"
|
||||
|
|
|
@ -11,14 +11,14 @@ config BUSYBOX_CONFIG_CHATTR
|
|||
help
|
||||
chattr changes the file attributes on a second extended file system.
|
||||
|
||||
config BUSYBOX_CONFIG_E2FSCK
|
||||
bool "e2fsck"
|
||||
default n
|
||||
help
|
||||
e2fsck is used to check Linux second extended file systems (ext2fs).
|
||||
e2fsck also supports ext2 filesystems countaining a journal (ext3).
|
||||
The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
|
||||
provided.
|
||||
### config E2FSCK
|
||||
### bool "e2fsck"
|
||||
### default n
|
||||
### help
|
||||
### e2fsck is used to check Linux second extended file systems (ext2fs).
|
||||
### e2fsck also supports ext2 filesystems countaining a journal (ext3).
|
||||
### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
|
||||
### provided.
|
||||
|
||||
config BUSYBOX_CONFIG_FSCK
|
||||
bool "fsck"
|
||||
|
@ -34,34 +34,34 @@ config BUSYBOX_CONFIG_LSATTR
|
|||
help
|
||||
lsattr lists the file attributes on a second extended file system.
|
||||
|
||||
config BUSYBOX_CONFIG_MKE2FS
|
||||
bool "mke2fs"
|
||||
default n
|
||||
help
|
||||
mke2fs is used to create an ext2/ext3 filesystem. The normal compat
|
||||
symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
|
||||
### config MKE2FS
|
||||
### bool "mke2fs"
|
||||
### default n
|
||||
### help
|
||||
### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
|
||||
### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
|
||||
|
||||
config BUSYBOX_CONFIG_TUNE2FS
|
||||
bool "tune2fs"
|
||||
default n
|
||||
help
|
||||
tune2fs allows the system administrator to adjust various tunable
|
||||
filesystem parameters on Linux ext2/ext3 filesystems.
|
||||
### config TUNE2FS
|
||||
### bool "tune2fs"
|
||||
### default n
|
||||
### help
|
||||
### tune2fs allows the system administrator to adjust various tunable
|
||||
### filesystem parameters on Linux ext2/ext3 filesystems.
|
||||
|
||||
config BUSYBOX_CONFIG_E2LABEL
|
||||
bool "e2label"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_TUNE2FS
|
||||
help
|
||||
e2label will display or change the filesystem label on the ext2
|
||||
filesystem located on device.
|
||||
### config E2LABEL
|
||||
### bool "e2label"
|
||||
### default n
|
||||
### depends on TUNE2FS
|
||||
### help
|
||||
### e2label will display or change the filesystem label on the ext2
|
||||
### filesystem located on device.
|
||||
|
||||
config BUSYBOX_CONFIG_FINDFS
|
||||
bool "findfs"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_TUNE2FS
|
||||
help
|
||||
findfs will search the disks in the system looking for a filesystem
|
||||
which has a label matching label or a UUID equal to uuid.
|
||||
### config FINDFS
|
||||
### bool "findfs"
|
||||
### default n
|
||||
### depends on TUNE2FS
|
||||
### help
|
||||
### findfs will search the disks in the system looking for a filesystem
|
||||
### which has a label matching label or a UUID equal to uuid.
|
||||
|
||||
endmenu
|
||||
|
|
67
package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
Normal file
67
package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
Normal file
|
@ -0,0 +1,67 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see scripts/kbuild/config-language.txt.
|
||||
#
|
||||
|
||||
menu "Linux Ext2 FS Progs"
|
||||
|
||||
config BUSYBOX_CONFIG_CHATTR
|
||||
bool "chattr"
|
||||
default n
|
||||
help
|
||||
chattr changes the file attributes on a second extended file system.
|
||||
|
||||
config BUSYBOX_CONFIG_E2FSCK
|
||||
bool "e2fsck"
|
||||
default n
|
||||
help
|
||||
e2fsck is used to check Linux second extended file systems (ext2fs).
|
||||
e2fsck also supports ext2 filesystems countaining a journal (ext3).
|
||||
The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
|
||||
provided.
|
||||
|
||||
config BUSYBOX_CONFIG_FSCK
|
||||
bool "fsck"
|
||||
default n
|
||||
help
|
||||
fsck is used to check and optionally repair one or more filesystems.
|
||||
In actuality, fsck is simply a front-end for the various file system
|
||||
checkers (fsck.fstype) available under Linux.
|
||||
|
||||
config BUSYBOX_CONFIG_LSATTR
|
||||
bool "lsattr"
|
||||
default n
|
||||
help
|
||||
lsattr lists the file attributes on a second extended file system.
|
||||
|
||||
config BUSYBOX_CONFIG_MKE2FS
|
||||
bool "mke2fs"
|
||||
default n
|
||||
help
|
||||
mke2fs is used to create an ext2/ext3 filesystem. The normal compat
|
||||
symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
|
||||
|
||||
config BUSYBOX_CONFIG_TUNE2FS
|
||||
bool "tune2fs"
|
||||
default n
|
||||
help
|
||||
tune2fs allows the system administrator to adjust various tunable
|
||||
filesystem parameters on Linux ext2/ext3 filesystems.
|
||||
|
||||
config BUSYBOX_CONFIG_E2LABEL
|
||||
bool "e2label"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_TUNE2FS
|
||||
help
|
||||
e2label will display or change the filesystem label on the ext2
|
||||
filesystem located on device.
|
||||
|
||||
config BUSYBOX_CONFIG_FINDFS
|
||||
bool "findfs"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_TUNE2FS
|
||||
help
|
||||
findfs will search the disks in the system looking for a filesystem
|
||||
which has a label matching label or a UUID equal to uuid.
|
||||
|
||||
endmenu
|
|
@ -127,5 +127,12 @@ config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR
|
|||
This will make the cursor movement faster, but requires more memory
|
||||
and it makes the applet a tiny bit larger.
|
||||
|
||||
endmenu
|
||||
config BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC
|
||||
bool "Allow vi and awk to execute shell commands"
|
||||
default y
|
||||
depends on BUSYBOX_CONFIG_VI || BUSYBOX_CONFIG_AWK
|
||||
help
|
||||
Enables vi and awk features which allows user to execute
|
||||
shell commands (using system() C call).
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -142,6 +142,13 @@ config BUSYBOX_CONFIG_PASSWD
|
|||
Note that Busybox binary must be setuid root for this applet to
|
||||
work properly.
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
|
||||
bool "Check new passwords for weakness"
|
||||
default y
|
||||
depends on BUSYBOX_CONFIG_PASSWD
|
||||
help
|
||||
With this option passwd will refuse new passwords which are "weak".
|
||||
|
||||
config BUSYBOX_CONFIG_SU
|
||||
bool "su"
|
||||
default n
|
||||
|
@ -154,12 +161,15 @@ config BUSYBOX_CONFIG_SU
|
|||
Note that Busybox binary must be setuid root for this applet to
|
||||
work properly.
|
||||
|
||||
config BUSYBOX_CONFIG_SU_SYSLOG
|
||||
bool "Support for syslog in su"
|
||||
config BUSYBOX_CONFIG_FEATURE_SU_SYSLOG
|
||||
bool "Enable su to write to syslog"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_SU
|
||||
help
|
||||
Enables support for syslog in su.
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_SU_CHECKS_SHELLS
|
||||
bool "Enable su to check user's shell to be listed in /etc/shells"
|
||||
depends on BUSYBOX_CONFIG_SU
|
||||
default n
|
||||
|
||||
config BUSYBOX_CONFIG_SULOGIN
|
||||
bool "sulogin"
|
||||
|
|
|
@ -133,6 +133,11 @@ config BUSYBOX_CONFIG_LESS
|
|||
'less' is a pager, meaning that it displays text files. It possesses
|
||||
a wide array of features, and is an improvement over 'more'.
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_LESS_MAXLINES
|
||||
int "Max number of input lines less will try to eat"
|
||||
default 9999999
|
||||
depends on BUSYBOX_CONFIG_LESS
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
|
||||
bool "Enable bracket searching"
|
||||
default n
|
||||
|
|
|
@ -12,6 +12,12 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
|
|||
Enable IPv6 support in busybox.
|
||||
This adds IPv6 support in the networking applets.
|
||||
|
||||
config BUSYBOX_CONFIG_ARP
|
||||
bool "arp"
|
||||
default n
|
||||
help
|
||||
Manipulate the system ARP cache
|
||||
|
||||
config BUSYBOX_CONFIG_ARPING
|
||||
bool "arping"
|
||||
default y
|
||||
|
@ -72,15 +78,15 @@ config BUSYBOX_CONFIG_HTTPD
|
|||
config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
|
||||
bool "Support reloading the global config file using hup signal"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_HTTPD && BUSYBOX_CONFIG_FEATURE_HTTPD_WITHOUT_INETD
|
||||
depends on BUSYBOX_CONFIG_HTTPD
|
||||
help
|
||||
This option enables processing of SIGHUP to reload cached
|
||||
configuration settings.
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
|
||||
bool "Enable support -u <user> option"
|
||||
bool "Enable -u <user> option"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_HTTPD && BUSYBOX_CONFIG_FEATURE_HTTPD_WITHOUT_INETD
|
||||
depends on BUSYBOX_CONFIG_HTTPD
|
||||
help
|
||||
This option allows the server to run as a specific user
|
||||
rather than defaulting to the user that starts the server.
|
||||
|
|
|
@ -42,7 +42,7 @@ config BUSYBOX_CONFIG_KILLALL5
|
|||
bool "killall5"
|
||||
default y
|
||||
depends on BUSYBOX_CONFIG_KILL
|
||||
|
||||
|
||||
config BUSYBOX_CONFIG_PIDOF
|
||||
bool "pidof"
|
||||
default y
|
||||
|
|
11
package/busybox/patches/100-syslogd_segfault_fix.patch
Normal file
11
package/busybox/patches/100-syslogd_segfault_fix.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- busybox-1.4.0/libbb/xreadlink.c Fri Jan 19 22:23:06 2007
|
||||
+++ busybox-1.4.0-syslogd-n/libbb/xreadlink.c Tue Jan 23 22:35:45 2007
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
char *xmalloc_realpath(const char *path)
|
||||
{
|
||||
-#ifdef __GLIBC__
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__)
|
||||
/* glibc provides a non-standard extension */
|
||||
return realpath(path, NULL);
|
||||
#else
|
|
@ -1,230 +0,0 @@
|
|||
--- busybox-1.3.1/include/libbb.h Wed Dec 27 05:56:18 2006
|
||||
+++ busybox-1.3.1.shadow/include/libbb.h Sat Dec 30 15:24:07 2006
|
||||
@@ -46,11 +46,13 @@
|
||||
#ifdef CONFIG_LOCALE_SUPPORT
|
||||
#include <locale.h>
|
||||
#else
|
||||
-#define setlocale(x,y)
|
||||
+#define setlocale(x,y) ((void)0)
|
||||
#endif
|
||||
|
||||
#include "pwd_.h"
|
||||
#include "grp_.h"
|
||||
+/* ifdef it out, because it may include <shadow.h> */
|
||||
+/* and we may not even _have_ <shadow.h>! */
|
||||
#if ENABLE_FEATURE_SHADOWPASSWDS
|
||||
#include "shadow_.h"
|
||||
#endif
|
||||
@@ -59,7 +61,7 @@
|
||||
#include <limits.h>
|
||||
#include <sys/param.h>
|
||||
#ifndef PATH_MAX
|
||||
-#define PATH_MAX 256
|
||||
+#define PATH_MAX 256
|
||||
#endif
|
||||
|
||||
/* Tested to work correctly (IIRC :]) */
|
||||
--- busybox-1.3.1/libpwdgrp/pwd_grp.c Wed Dec 27 05:56:32 2006
|
||||
+++ busybox-1.3.1.shadow/libpwdgrp/pwd_grp.c Sat Dec 30 15:24:07 2006
|
||||
@@ -52,7 +52,9 @@
|
||||
|
||||
extern int __parsepwent(void *pw, char *line);
|
||||
extern int __parsegrent(void *gr, char *line);
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
extern int __parsespent(void *sp, char *line);
|
||||
+#endif
|
||||
|
||||
extern int __pgsreader(int (*__parserfunc)(void *d, char *line), void *data,
|
||||
char *__restrict line_buff, size_t buflen, FILE *f);
|
||||
@@ -103,6 +105,7 @@
|
||||
return rv;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
|
||||
char *__restrict buffer, size_t buflen,
|
||||
struct spwd **__restrict result)
|
||||
@@ -117,6 +120,7 @@
|
||||
|
||||
return rv;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**********************************************************************/
|
||||
/* For the various fget??ent funcs, return NULL on failure and a
|
||||
@@ -144,6 +148,7 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
extern int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
|
||||
char *__restrict buffer, size_t buflen,
|
||||
struct spwd **__restrict result);
|
||||
@@ -184,6 +189,7 @@
|
||||
DONE:
|
||||
return rv;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
@@ -207,6 +213,7 @@
|
||||
#define DO_GETXXKEY_R_PATHNAME _PATH_GROUP
|
||||
#include "pwd_grp_internal.c"
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
#define GETXXKEY_R_FUNC getspnam_R
|
||||
#define GETXXKEY_R_PARSER __parsespent
|
||||
#define GETXXKEY_R_ENTTYPE struct spwd
|
||||
@@ -214,6 +221,7 @@
|
||||
#define DO_GETXXKEY_R_KEYTYPE const char *__restrict
|
||||
#define DO_GETXXKEY_R_PATHNAME _PATH_SHADOW
|
||||
#include "pwd_grp_internal.c"
|
||||
+#endif
|
||||
|
||||
#define GETXXKEY_R_FUNC getpwuid_R
|
||||
#define GETXXKEY_R_PARSER __parsepwent
|
||||
@@ -253,6 +261,7 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if 0 //ENABLE_USE_BB_SHADOW
|
||||
/* This function is non-standard and is currently not built. It seems
|
||||
* to have been created as a reentrant version of the non-standard
|
||||
* functions getspuid. Why getspuid was added, I do not know. */
|
||||
@@ -286,6 +295,7 @@
|
||||
getspuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result);
|
||||
return result;
|
||||
}
|
||||
+#endif
|
||||
|
||||
struct passwd *getpwnam(const char *name)
|
||||
{
|
||||
@@ -307,6 +317,7 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
struct spwd *getspnam(const char *name)
|
||||
{
|
||||
static char buffer[PWD_BUFFER_SIZE];
|
||||
@@ -316,6 +327,7 @@
|
||||
getspnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
|
||||
return result;
|
||||
}
|
||||
+#endif
|
||||
|
||||
int getpw(uid_t uid, char *buf)
|
||||
{
|
||||
@@ -444,6 +456,7 @@
|
||||
return rv;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
static FILE *spf /*= NULL*/;
|
||||
void setspent(void)
|
||||
{
|
||||
@@ -488,6 +501,7 @@
|
||||
UNLOCK;
|
||||
return rv;
|
||||
}
|
||||
+#endif
|
||||
|
||||
struct passwd *getpwent(void)
|
||||
{
|
||||
@@ -509,6 +523,7 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
struct spwd *getspent(void)
|
||||
{
|
||||
static char line_buff[PWD_BUFFER_SIZE];
|
||||
@@ -528,6 +543,7 @@
|
||||
sgetspent_r(string, &spwd, line_buff, sizeof(line_buff), &result);
|
||||
return result;
|
||||
}
|
||||
+#endif
|
||||
|
||||
int initgroups(const char *user, gid_t gid)
|
||||
{
|
||||
@@ -643,6 +659,7 @@
|
||||
return rv;
|
||||
}
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
static const unsigned char _sp_off[] = {
|
||||
offsetof(struct spwd, sp_lstchg), /* 2 - not a char ptr */
|
||||
offsetof(struct spwd, sp_min), /* 3 - not a char ptr */
|
||||
@@ -688,6 +705,7 @@
|
||||
DO_UNLOCK:
|
||||
return rv;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**********************************************************************/
|
||||
/* Internal uClibc functions. */
|
||||
@@ -846,6 +864,7 @@
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
+#if ENABLE_USE_BB_SHADOW
|
||||
static const unsigned char sp_off[] = {
|
||||
offsetof(struct spwd, sp_namp), /* 0 */
|
||||
offsetof(struct spwd, sp_pwdp), /* 1 */
|
||||
@@ -900,6 +919,7 @@
|
||||
|
||||
return EINVAL;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
--- busybox-1.3.1/loginutils/passwd.c Wed Dec 27 05:56:20 2006
|
||||
+++ busybox-1.3.1.shadow/loginutils/passwd.c Sat Dec 30 15:24:07 2006
|
||||
@@ -275,7 +275,8 @@
|
||||
}
|
||||
|
||||
filename = bb_path_passwd_file;
|
||||
- if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||
+#if ENABLE_FEATURE_SHADOWPASSWDS
|
||||
+ {
|
||||
struct spwd *sp = getspnam(name);
|
||||
if (!sp) {
|
||||
/* LOGMODE_BOTH */
|
||||
@@ -287,6 +288,7 @@
|
||||
pw->pw_passwd = sp->sp_pwdp;
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
/* Decide what the new password will be */
|
||||
newp = NULL;
|
||||
--- busybox-1.3.1/loginutils/sulogin.c Wed Dec 27 05:56:20 2006
|
||||
+++ busybox-1.3.1.shadow/loginutils/sulogin.c Sat Dec 30 15:24:07 2006
|
||||
@@ -41,7 +41,6 @@
|
||||
char *timeout_arg;
|
||||
const char * const *p;
|
||||
struct passwd *pwd;
|
||||
- struct spwd *spwd;
|
||||
const char *shell;
|
||||
|
||||
logmode = LOGMODE_BOTH;
|
||||
@@ -75,13 +74,15 @@
|
||||
goto auth_error;
|
||||
}
|
||||
|
||||
- if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||
- spwd = getspnam(pwd->pw_name);
|
||||
+#if ENABLE_FEATURE_SHADOWPASSWDS
|
||||
+ {
|
||||
+ struct spwd *spwd = getspnam(pwd->pw_name);
|
||||
if (!spwd) {
|
||||
goto auth_error;
|
||||
}
|
||||
pwd->pw_passwd = spwd->sp_pwdp;
|
||||
}
|
||||
+#endif
|
||||
|
||||
while (1) {
|
||||
/* cp points to a static buffer that is zeroed every time */
|
|
@ -1,24 +0,0 @@
|
|||
--- busybox-1.3.1/networking/ping.c 2006-12-27 05:52:39.000000000 +0100
|
||||
+++ busybox-1.3.1-new/networking/ping.c 2006-12-29 18:42:36.000000000 +0100
|
||||
@@ -217,7 +217,8 @@
|
||||
pkt->icmp_type = ICMP_ECHO;
|
||||
pkt->icmp_code = 0;
|
||||
pkt->icmp_cksum = 0;
|
||||
- pkt->icmp_seq = htons(ntransmitted++);
|
||||
+ pkt->icmp_seq = htons(ntransmitted);
|
||||
+ ntransmitted++;
|
||||
pkt->icmp_id = myid;
|
||||
CLR(ntohs(pkt->icmp_seq) % MAX_DUP_CHK);
|
||||
|
||||
--- busybox-1.3.1/networking/ping6.c 2006-12-27 05:52:39.000000000 +0100
|
||||
+++ busybox-1.3.1-new/networking/ping6.c 2006-12-29 18:44:02.000000000 +0100
|
||||
@@ -205,7 +205,8 @@
|
||||
pkt->icmp6_type = ICMP6_ECHO_REQUEST;
|
||||
pkt->icmp6_code = 0;
|
||||
pkt->icmp6_cksum = 0;
|
||||
- pkt->icmp6_seq = htons(ntransmitted++);
|
||||
+ pkt->icmp6_seq = htons(ntransmitted);
|
||||
+ ntransmitted++;
|
||||
pkt->icmp6_id = myid;
|
||||
CLR(pkt->icmp6_seq % MAX_DUP_CHK);
|
||||
|
|
@ -3,7 +3,7 @@ diff -ruN busybox-1.3.1-old/scripts/trylink busybox-1.3.1-new/scripts/trylink
|
|||
+++ busybox-1.3.1-new/scripts/trylink 2007-01-01 21:01:08.000000000 +0100
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/sh
|
||||
+#!/bin/bash
|
||||
+#!/usr/bin/env bash
|
||||
|
||||
debug=false
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff -ur busybox.old/e2fsprogs/ext2fs/unix_io.c busybox.dev/e2fsprogs/ext2fs/unix_io.c
|
||||
--- busybox.old/e2fsprogs/ext2fs/unix_io.c 2006-12-27 05:55:58.000000000 +0100
|
||||
+++ busybox.dev/e2fsprogs/ext2fs/unix_io.c 2007-01-07 16:16:52.000000000 +0100
|
||||
@@ -419,7 +419,7 @@
|
||||
|
||||
#ifdef __linux__
|
||||
#undef RLIM_INFINITY
|
||||
-#if (defined(__alpha__) || ((defined(__sparc__) || defined(__mips__)) && (SIZEOF_LONG == 4)))
|
||||
+#if (defined(__alpha__) || defined(__sparc__) || defined(__mips__))
|
||||
#define RLIM_INFINITY ((unsigned long)(~0UL>>1))
|
||||
#else
|
||||
#define RLIM_INFINITY (~0UL)
|
|
@ -1,6 +1,6 @@
|
|||
diff -ruN busybox-1.3.1-old/networking/httpd.c busybox-1.3.1/networking/httpd.c
|
||||
--- busybox-1.3.1-old/networking/httpd.c 2006-12-27 05:52:39.000000000 +0100
|
||||
+++ busybox-1.3.1/networking/httpd.c 2006-12-28 18:04:53.000000000 +0100
|
||||
diff -ur busybox.old/networking/httpd.c busybox.dev/networking/httpd.c
|
||||
--- busybox.old/networking/httpd.c 2007-01-19 22:22:59.000000000 +0100
|
||||
+++ busybox.dev/networking/httpd.c 2007-01-22 13:09:03.000000000 +0100
|
||||
@@ -137,6 +137,7 @@
|
||||
const char *query;
|
||||
|
||||
|
@ -9,15 +9,15 @@ diff -ruN busybox-1.3.1-old/networking/httpd.c busybox-1.3.1/networking/httpd.c
|
|||
|
||||
const char *configFile;
|
||||
|
||||
@@ -1062,6 +1063,7 @@
|
||||
putenv("SERVER_PROTOCOL=HTTP/1.0");
|
||||
putenv("GATEWAY_INTERFACE=CGI/1.1");
|
||||
setenv1("REMOTE_ADDR", config->rmt_ip_str);
|
||||
+ setenv1("HTTP_USER_AGENT", config->user_agent);
|
||||
@@ -1066,6 +1067,7 @@
|
||||
if (cp) *cp = '\0'; /* delete :PORT */
|
||||
setenv1("REMOTE_ADDR", p);
|
||||
}
|
||||
+ setenv1("HTTP_USER_AGENT", config->user_agent);
|
||||
#if ENABLE_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
|
||||
setenv_long("REMOTE_PORT", config->port);
|
||||
#endif
|
||||
@@ -1605,6 +1607,8 @@
|
||||
@@ -1629,6 +1631,8 @@
|
||||
content_type = strdup(skip_whitespace(buf + sizeof("Content-Type:")-1));
|
||||
} else if ((STRNCASECMP(buf, "Referer:") == 0)) {
|
||||
config->referer = strdup(skip_whitespace(buf + sizeof("Referer:")-1));
|
||||
|
|
|
@ -1,37 +1,44 @@
|
|||
diff -ur busybox.old/editors/awk.c busybox.dev/editors/awk.c
|
||||
--- busybox.old/editors/awk.c 2006-12-27 05:56:50.000000000 +0100
|
||||
+++ busybox.dev/editors/awk.c 2007-01-01 23:12:04.000000000 +0100
|
||||
@@ -2634,8 +2634,6 @@
|
||||
--- busybox.old/editors/awk.c 2007-01-19 22:23:12.000000000 +0100
|
||||
+++ busybox.dev/editors/awk.c 2007-01-25 20:01:26.000000000 +0100
|
||||
@@ -2639,14 +2639,13 @@
|
||||
|
||||
int awk_main(int argc, char **argv)
|
||||
{
|
||||
- unsigned opt;
|
||||
- char *opt_F, *opt_v, *opt_W;
|
||||
char *s, *s1;
|
||||
int i, j, c, flen;
|
||||
int i, j, flen;
|
||||
var *v;
|
||||
@@ -2691,32 +2689,44 @@
|
||||
var tv;
|
||||
char **envp;
|
||||
char *vnames = (char *)vNames; /* cheat */
|
||||
char *vvalues = (char *)vValues;
|
||||
+ int c;
|
||||
|
||||
/* Undo busybox.c, or else strtod may eat ','! This breaks parsing:
|
||||
* $1,$2 == '$1,' '$2', NOT '$1' ',' '$2' */
|
||||
@@ -2694,39 +2693,46 @@
|
||||
free(s);
|
||||
}
|
||||
|
||||
- opt = getopt32(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W);
|
||||
- argv += optind;
|
||||
- argc -= optind;
|
||||
- if (opt & 0x1) setvar_s(V[FS], opt_F); // -F
|
||||
- if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v
|
||||
- if (opt & 0x4) { // -f
|
||||
- from_file = TRUE;
|
||||
- F = afopen(programname, "r");
|
||||
- s = NULL;
|
||||
- char *s = s; /* die, gcc, die */
|
||||
- FILE *from_file = afopen(programname, "r");
|
||||
- /* one byte is reserved for some trick in next_token */
|
||||
- if (fseek(F, 0, SEEK_END) == 0) {
|
||||
- flen = ftell(F);
|
||||
- s = (char *)xmalloc(flen+4);
|
||||
- fseek(F, 0, SEEK_SET);
|
||||
- i = 1 + fread(s+1, 1, flen, F);
|
||||
- if (fseek(from_file, 0, SEEK_END) == 0) {
|
||||
- flen = ftell(from_file);
|
||||
- s = xmalloc(flen + 4);
|
||||
- fseek(from_file, 0, SEEK_SET);
|
||||
- i = 1 + fread(s + 1, 1, flen, from_file);
|
||||
- } else {
|
||||
- for (i=j=1; j>0; i+=j) {
|
||||
- s = (char *)xrealloc(s, i+4096);
|
||||
- j = fread(s+i, 1, 4094, F);
|
||||
- }
|
||||
- for (i = j = 1; j > 0; i += j) {
|
||||
- s = xrealloc(s, i + 4096);
|
||||
- j = fread(s + i, 1, 4094, from_file);
|
||||
+ while((c = getopt(argc, argv, "F:v:f:W:")) != EOF) {
|
||||
+ switch (c) {
|
||||
+ case 'F':
|
||||
|
@ -41,10 +48,9 @@ diff -ur busybox.old/editors/awk.c busybox.dev/editors/awk.c
|
|||
+ if (! is_assignment(optarg))
|
||||
+ bb_show_usage();
|
||||
+ break;
|
||||
+ case 'f':
|
||||
+ from_file = TRUE;
|
||||
+ F = afopen(programname = optarg, "r");
|
||||
+ s = NULL;
|
||||
+ case 'f': {
|
||||
+ FILE *F = afopen(programname = optarg, "r");
|
||||
+ char *s = NULL;
|
||||
+ /* one byte is reserved for some trick in next_token */
|
||||
+ if (fseek(F, 0, SEEK_END) == 0) {
|
||||
+ flen = ftell(F);
|
||||
|
@ -62,6 +68,7 @@ diff -ur busybox.old/editors/awk.c busybox.dev/editors/awk.c
|
|||
+ parse_program(s+1);
|
||||
+ free(s);
|
||||
+ break;
|
||||
}
|
||||
+ case 'W':
|
||||
+ bb_error_msg("Warning: unrecognized option '-W %s' ignored\n", optarg);
|
||||
+ break;
|
||||
|
@ -70,12 +77,20 @@ diff -ur busybox.old/editors/awk.c busybox.dev/editors/awk.c
|
|||
+ bb_show_usage();
|
||||
}
|
||||
- s[i] = '\0';
|
||||
- fclose(F);
|
||||
- parse_program(s+1);
|
||||
- fclose(from_file);
|
||||
- parse_program(s + 1);
|
||||
- free(s);
|
||||
- } else { // no -f: take program from 1st parameter
|
||||
- if (!argc)
|
||||
- bb_show_usage();
|
||||
- programname = "cmd. line";
|
||||
- parse_program(*argv++);
|
||||
- argc--;
|
||||
}
|
||||
- if (opt & 0x8) // -W
|
||||
- bb_error_msg("warning: unrecognized option '-W %s' ignored", opt_W);
|
||||
+ argc -= optind;
|
||||
+ argv += optind;
|
||||
|
||||
if (!from_file) {
|
||||
if (argc == optind)
|
||||
/* fill in ARGV array */
|
||||
setvar_i(V[ARGC], argc + 1);
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
diff -Nru busybox-1.3.1.orig/sysklogd/syslogd.c busybox-1.3.1/sysklogd/syslogd.c
|
||||
--- busybox-1.3.1.orig/sysklogd/syslogd.c 2007-01-02 21:28:26.000000000 +0700
|
||||
+++ busybox-1.3.1/sysklogd/syslogd.c 2007-01-02 21:29:10.000000000 +0700
|
||||
@@ -304,8 +304,8 @@
|
||||
vsnprintf(b, sizeof(b) - 1, fmt, arguments);
|
||||
va_end(arguments);
|
||||
circ_message(b);
|
||||
-
|
||||
- } else
|
||||
+ return;
|
||||
+ }
|
||||
#endif
|
||||
fd = device_open(logFilePath, O_WRONLY | O_CREAT
|
||||
| O_NOCTTY | O_APPEND | O_NONBLOCK);
|
File diff suppressed because it is too large
Load diff
|
@ -1,448 +0,0 @@
|
|||
# Copyright (C) 2006 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# remove (numerous) compile warnings
|
||||
#
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/file_util.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.c 2006-05-09 02:06:48.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/file_util.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
int file_mkdir_hier(const char *path, long mode)
|
||||
{
|
||||
- return bb_make_directory(path, mode, FILEUTILS_RECUR);
|
||||
+ return bb_make_directory((char *)path, mode, FILEUTILS_RECUR);
|
||||
}
|
||||
|
||||
char *file_md5sum_alloc(const char *file_name)
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_cmd.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c 2006-05-09 02:23:37.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_cmd.c 2006-05-09 02:23:17.000000000 +0200
|
||||
@@ -246,7 +246,7 @@
|
||||
in = fopen (tmp_file_name, "r");
|
||||
out = fopen (list_file_name, "w");
|
||||
if (in && out)
|
||||
- inflate_unzip (in, out);
|
||||
+ inflate_unzip (fileno(in), fileno(out));
|
||||
else
|
||||
err = 1;
|
||||
if (in)
|
||||
@@ -894,14 +894,13 @@
|
||||
pkg_vec_free(available);
|
||||
} else {
|
||||
pkg_vec_t *installed_pkgs = pkg_vec_alloc();
|
||||
- int i;
|
||||
int flagged_pkg_count = 0;
|
||||
int removed;
|
||||
|
||||
pkg_hash_fetch_all_installed(&conf->pkg_hash, installed_pkgs);
|
||||
|
||||
for (i = 0; i < installed_pkgs->len; i++) {
|
||||
- pkg_t *pkg = installed_pkgs->pkgs[i];
|
||||
+ pkg = installed_pkgs->pkgs[i];
|
||||
if (pkg->state_flag & SF_USER) {
|
||||
flagged_pkg_count++;
|
||||
} else {
|
||||
@@ -921,7 +920,7 @@
|
||||
do {
|
||||
removed = 0;
|
||||
for (i = 0; i < installed_pkgs->len; i++) {
|
||||
- pkg_t *pkg = installed_pkgs->pkgs[i];
|
||||
+ pkg = installed_pkgs->pkgs[i];
|
||||
if (!(pkg->state_flag & SF_USER)
|
||||
&& !pkg_has_installed_dependents(conf, pkg->parent, pkg, NULL)) {
|
||||
removed++;
|
||||
@@ -976,7 +975,7 @@
|
||||
{
|
||||
int i;
|
||||
pkg_t *pkg;
|
||||
- const char *flags = argv[0];
|
||||
+ char *flags = argv[0];
|
||||
|
||||
global_conf = conf;
|
||||
signal(SIGINT, sigint_handler);
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_conf.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.c 2006-05-09 02:12:04.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_conf.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -542,14 +542,14 @@
|
||||
if (strcmp(type, "option") == 0) {
|
||||
ipkg_conf_set_option(options, name, value);
|
||||
} else if (strcmp(type, "src") == 0) {
|
||||
- if (!nv_pair_list_find(pkg_src_list, name)) {
|
||||
+ if (!nv_pair_list_find((nv_pair_list_t *)pkg_src_list, name)) {
|
||||
pkg_src_list_append (pkg_src_list, name, value, extra, 0);
|
||||
} else {
|
||||
ipkg_message(conf, IPKG_ERROR, "ERROR: duplicate src declaration. Skipping:\n\t src %s %s\n",
|
||||
name, value);
|
||||
}
|
||||
} else if (strcmp(type, "src/gz") == 0) {
|
||||
- if (!nv_pair_list_find(pkg_src_list, name)) {
|
||||
+ if (!nv_pair_list_find((nv_pair_list_t *)pkg_src_list, name)) {
|
||||
pkg_src_list_append (pkg_src_list, name, value, extra, 1);
|
||||
} else {
|
||||
ipkg_message(conf, IPKG_ERROR, "ERROR: duplicate src declaration. Skipping:\n\t src %s %s\n",
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_download.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.c 2006-05-09 02:12:04.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/ipkg_download.c 2006-05-09 02:22:51.000000000 +0200
|
||||
@@ -166,7 +166,7 @@
|
||||
if (err)
|
||||
return err;
|
||||
pkg->local_filename = strdup(url);
|
||||
- ipkg_message(conf, IPKG_DEBUG2, "Package %s provided by hand \(%s\).\n", pkg->name,pkg->local_filename);
|
||||
+ ipkg_message(conf, IPKG_DEBUG2, "Package %s provided by hand (%s).\n", pkg->name,pkg->local_filename);
|
||||
pkg->provided_by_hand = 1;
|
||||
|
||||
} else {
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/libipkg.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.c 2006-05-09 02:12:05.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/libipkg.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -445,7 +445,7 @@
|
||||
int
|
||||
ipkg_op (int argc, char *argv[])
|
||||
{
|
||||
- int err, optind;
|
||||
+ int err, opt_index;
|
||||
args_t args;
|
||||
char *cmd_name;
|
||||
ipkg_cmd_t *cmd;
|
||||
@@ -453,13 +453,13 @@
|
||||
|
||||
args_init (&args);
|
||||
|
||||
- optind = args_parse (&args, argc, argv);
|
||||
- if (optind == argc || optind < 0)
|
||||
+ opt_index = args_parse (&args, argc, argv);
|
||||
+ if (opt_index == argc || opt_index < 0)
|
||||
{
|
||||
args_usage ("ipkg must have one sub-command argument");
|
||||
}
|
||||
|
||||
- cmd_name = argv[optind++];
|
||||
+ cmd_name = argv[opt_index++];
|
||||
/* Pigi: added a flag to disable the checking of structures if the command does not need to
|
||||
read anything from there.
|
||||
*/
|
||||
@@ -509,7 +509,7 @@
|
||||
args_usage (NULL);
|
||||
}
|
||||
|
||||
- if (cmd->requires_args && optind == argc)
|
||||
+ if (cmd->requires_args && opt_index == argc)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"%s: the ``%s'' command requires at least one argument\n",
|
||||
@@ -517,7 +517,7 @@
|
||||
args_usage (NULL);
|
||||
}
|
||||
|
||||
- err = ipkg_cmd_exec (cmd, &ipkg_conf, argc - optind, (const char **) (argv + optind), NULL);
|
||||
+ err = ipkg_cmd_exec (cmd, &ipkg_conf, argc - opt_index, (const char **) (argv + opt_index), NULL);
|
||||
|
||||
ipkg_conf_deinit (&ipkg_conf);
|
||||
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/md5.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.c 2006-05-09 02:06:48.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/md5.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -25,7 +25,6 @@
|
||||
int md5_stream(FILE *stream, void *resblock)
|
||||
{
|
||||
int fd;
|
||||
- int sum;
|
||||
|
||||
if( (fd = fileno(stream)) == -1 ) {
|
||||
bb_error_msg("bad file descriptor");
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.c 2006-05-09 02:12:05.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -528,6 +528,7 @@
|
||||
char * pkg_formatted_field(pkg_t *pkg, const char *field )
|
||||
{
|
||||
static size_t LINE_LEN = 128;
|
||||
+ char line_str[LINE_LEN];
|
||||
char * temp = (char *)malloc(1);
|
||||
int len = 0;
|
||||
int flag_provide_false = 0;
|
||||
@@ -567,7 +568,6 @@
|
||||
if (strcasecmp(field, "Conffiles") == 0) {
|
||||
/* Conffiles */
|
||||
conffile_list_elt_t *iter;
|
||||
- char confstr[LINE_LEN];
|
||||
|
||||
if (pkg->conffiles.head == NULL) {
|
||||
return temp;
|
||||
@@ -588,15 +588,14 @@
|
||||
strncpy(temp, "Conffiles:\n", 12);
|
||||
for (iter = pkg->conffiles.head; iter; iter = iter->next) {
|
||||
if (iter->data->name && iter->data->value) {
|
||||
- snprintf(confstr, LINE_LEN, "%s %s\n", iter->data->name, iter->data->value);
|
||||
- strncat(temp, confstr, strlen(confstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s\n", iter->data->name, iter->data->value);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
}
|
||||
} else if (strcasecmp(field, "Conflicts") == 0) {
|
||||
int i;
|
||||
|
||||
if (pkg->conflicts_count) {
|
||||
- char conflictstr[LINE_LEN];
|
||||
len = 14 ;
|
||||
for(i = 0; i < pkg->conflicts_count; i++) {
|
||||
len = len + (strlen(pkg->conflicts_str[i])+5);
|
||||
@@ -609,8 +608,8 @@
|
||||
temp[0]='\0';
|
||||
strncpy(temp, "Conflicts:", 11);
|
||||
for(i = 0; i < pkg->conflicts_count; i++) {
|
||||
- snprintf(conflictstr, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->conflicts_str[i]);
|
||||
- strncat(temp, conflictstr, strlen(conflictstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->conflicts_str[i]);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
strncat(temp, "\n", strlen("\n"));
|
||||
}
|
||||
@@ -625,7 +624,6 @@
|
||||
int i;
|
||||
|
||||
if (pkg->depends_count) {
|
||||
- char depstr[LINE_LEN];
|
||||
len = 14 ;
|
||||
for(i = 0; i < pkg->depends_count; i++) {
|
||||
len = len + (strlen(pkg->depends_str[i])+4);
|
||||
@@ -638,8 +636,8 @@
|
||||
temp[0]='\0';
|
||||
strncpy(temp, "Depends:", 10);
|
||||
for(i = 0; i < pkg->depends_count; i++) {
|
||||
- snprintf(depstr, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->depends_str[i]);
|
||||
- strncat(temp, depstr, strlen(depstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->depends_str[i]);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
strncat(temp, "\n", strlen("\n"));
|
||||
}
|
||||
@@ -804,7 +802,6 @@
|
||||
/* Replaces | Recommends*/
|
||||
if (strcasecmp (field, "Replaces") == 0) {
|
||||
if (pkg->replaces_count) {
|
||||
- char replstr[LINE_LEN];
|
||||
len = 14;
|
||||
for (i = 0; i < pkg->replaces_count; i++) {
|
||||
len = len + (strlen(pkg->replaces_str[i])+5);
|
||||
@@ -817,14 +814,13 @@
|
||||
temp[0]='\0';
|
||||
strncpy(temp, "Replaces:", 12);
|
||||
for (i = 0; i < pkg->replaces_count; i++) {
|
||||
- snprintf(replstr, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->replaces_str[i]);
|
||||
- strncat(temp, replstr, strlen(replstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->replaces_str[i]);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
strncat(temp, "\n", strlen("\n"));
|
||||
}
|
||||
} else if (strcasecmp (field, "Recommends") == 0) {
|
||||
if (pkg->recommends_count) {
|
||||
- char recstr[LINE_LEN];
|
||||
len = 15;
|
||||
for(i = 0; i < pkg->recommends_count; i++) {
|
||||
len = len + (strlen( pkg->recommends_str[i])+5);
|
||||
@@ -837,8 +833,8 @@
|
||||
temp[0]='\0';
|
||||
strncpy(temp, "Recommends:", 13);
|
||||
for(i = 0; i < pkg->recommends_count; i++) {
|
||||
- snprintf(recstr, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->recommends_str[i]);
|
||||
- strncat(temp, recstr, strlen(recstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->recommends_str[i]);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
strncat(temp, "\n", strlen("\n"));
|
||||
}
|
||||
@@ -907,7 +903,6 @@
|
||||
} else if (strcasecmp(field, "Suggests") == 0) {
|
||||
if (pkg->suggests_count) {
|
||||
int i;
|
||||
- char sugstr[LINE_LEN];
|
||||
len = 13;
|
||||
for(i = 0; i < pkg->suggests_count; i++) {
|
||||
len = len + (strlen(pkg->suggests_str[i])+5);
|
||||
@@ -920,8 +915,8 @@
|
||||
temp[0]='\0';
|
||||
strncpy(temp, "Suggests:", 10);
|
||||
for(i = 0; i < pkg->suggests_count; i++) {
|
||||
- snprintf(sugstr, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->suggests_str[i]);
|
||||
- strncat(temp, sugstr, strlen(sugstr));
|
||||
+ snprintf(line_str, LINE_LEN, "%s %s", i == 0 ? "" : ",", pkg->suggests_str[i]);
|
||||
+ strncat(temp, line_str, strlen(line_str));
|
||||
}
|
||||
strncat(temp, "\n", strlen("\n"));
|
||||
}
|
||||
@@ -1140,10 +1135,8 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int pkg_name_version_and_architecture_compare(void *p1, void *p2)
|
||||
+int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b)
|
||||
{
|
||||
- const pkg_t *a = *(const pkg_t **)p1;
|
||||
- const pkg_t *b = *(const pkg_t **)p2;
|
||||
int namecmp;
|
||||
int vercmp;
|
||||
if (!a->name || !b->name) {
|
||||
@@ -1170,10 +1163,8 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int abstract_pkg_name_compare(void *p1, void *p2)
|
||||
+int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b)
|
||||
{
|
||||
- const abstract_pkg_t *a = *(const abstract_pkg_t **)p1;
|
||||
- const abstract_pkg_t *b = *(const abstract_pkg_t **)p2;
|
||||
if (!a->name || !b->name) {
|
||||
fprintf(stderr, "abstract_pkg_name_compare: a=%p a->name=%p b=%p b->name=%p\n",
|
||||
a, a->name, b, b->name);
|
||||
@@ -1193,7 +1184,7 @@
|
||||
#endif
|
||||
|
||||
if (pkg->epoch) {
|
||||
- sprintf_alloc(&epoch_str, "%d:", pkg->epoch);
|
||||
+ sprintf_alloc(&epoch_str, "%d:", (int)(pkg->epoch));
|
||||
} else {
|
||||
epoch_str = strdup("");
|
||||
}
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.h busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.h
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.h 2006-05-09 02:12:05.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.h 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -194,8 +194,8 @@
|
||||
char *pkg_version_str_alloc(pkg_t *pkg);
|
||||
|
||||
int pkg_compare_versions(const pkg_t *pkg, const pkg_t *ref_pkg);
|
||||
-int pkg_name_version_and_architecture_compare(void *a, void *b);
|
||||
-int abstract_pkg_name_compare(void *a, void *b);
|
||||
+int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b);
|
||||
+int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b);
|
||||
|
||||
char * pkg_formatted_info(pkg_t *pkg );
|
||||
char * pkg_formatted_field(pkg_t *pkg, const char *field );
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_depends.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.c 2006-05-09 02:12:05.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_depends.c 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -68,7 +68,7 @@
|
||||
pkg_vec_t *unsatisfied, char *** unresolved)
|
||||
{
|
||||
pkg_t * satisfier_entry_pkg;
|
||||
- register int i, j, k;
|
||||
+ register int i, j, k, l;
|
||||
int count, found;
|
||||
char ** the_lost;
|
||||
abstract_pkg_t * ab_pkg;
|
||||
@@ -113,7 +113,6 @@
|
||||
abstract_pkg_vec_t *ab_provider_vec = abpkg->provided_by;
|
||||
int nposs = ab_provider_vec->len;
|
||||
abstract_pkg_t **ab_providers = ab_provider_vec->pkgs;
|
||||
- int l;
|
||||
for (l = 0; l < nposs; l++) {
|
||||
pkg_vec_t *test_vec = ab_providers[l]->pkgs;
|
||||
/* if no depends on this one, try the first package that Provides this one */
|
||||
@@ -137,10 +136,9 @@
|
||||
tmp_vec,
|
||||
&newstuff);
|
||||
if (newstuff == NULL) {
|
||||
- int i;
|
||||
int ok = 1;
|
||||
- for (i = 0; i < rc; i++) {
|
||||
- pkg_t *p = tmp_vec->pkgs[i];
|
||||
+ for (l = 0; l < rc; l++) {
|
||||
+ pkg_t *p = tmp_vec->pkgs[l];
|
||||
if (p->state_want == SW_INSTALL)
|
||||
continue;
|
||||
ipkg_message(conf, IPKG_DEBUG, "not installing %s due to requirement for %s\n", pkg_scout->name, p->name);
|
||||
@@ -814,27 +812,27 @@
|
||||
* [npredepends+nrecommends,npredepends+nrecommends+nsuggests) -> returns recommends_str[index]
|
||||
* [npredepends+nrecommends+nsuggests,npredepends+nrecommends+nsuggests+ndepends) -> returns depends_str[index]
|
||||
*/
|
||||
-char *pkg_depend_str(pkg_t *pkg, int index)
|
||||
+char *pkg_depend_str(pkg_t *pkg, int pkg_index)
|
||||
{
|
||||
- if (index < pkg->pre_depends_count) {
|
||||
- return pkg->pre_depends_str[index];
|
||||
+ if (pkg_index < pkg->pre_depends_count) {
|
||||
+ return pkg->pre_depends_str[pkg_index];
|
||||
}
|
||||
- index -= pkg->pre_depends_count;
|
||||
+ pkg_index -= pkg->pre_depends_count;
|
||||
|
||||
- if (index < pkg->recommends_count) {
|
||||
- return pkg->recommends_str[index];
|
||||
+ if (pkg_index < pkg->recommends_count) {
|
||||
+ return pkg->recommends_str[pkg_index];
|
||||
}
|
||||
- index -= pkg->recommends_count;
|
||||
+ pkg_index -= pkg->recommends_count;
|
||||
|
||||
- if (index < pkg->suggests_count) {
|
||||
- return pkg->suggests_str[index];
|
||||
+ if (pkg_index < pkg->suggests_count) {
|
||||
+ return pkg->suggests_str[pkg_index];
|
||||
}
|
||||
- index -= pkg->suggests_count;
|
||||
+ pkg_index -= pkg->suggests_count;
|
||||
|
||||
- if (index < pkg->depends_count) {
|
||||
- return pkg->depends_str[index];
|
||||
+ if (pkg_index < pkg->depends_count) {
|
||||
+ return pkg->depends_str[pkg_index];
|
||||
}
|
||||
- fprintf(stderr, "pkg_depend_str: index %d out of range for pkg=%s\n", index, pkg->name);
|
||||
+ fprintf(stderr, "pkg_depend_str: index %d out of range for pkg=%s\n", pkg_index, pkg->name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.h busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_depends.h
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.h 2006-05-09 02:06:48.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_depends.h 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -92,7 +92,7 @@
|
||||
*/
|
||||
int pkg_conflicts(pkg_t *pkg, pkg_t *conflicts);
|
||||
|
||||
-char *pkg_depend_str(pkg_t *pkg, int index);
|
||||
+char *pkg_depend_str(pkg_t *pkg, int pkg_index);
|
||||
void buildDependedUponBy(pkg_t * pkg, abstract_pkg_t * ab_pkg);
|
||||
void freeDepends(pkg_t *pkg);
|
||||
void printDepends(pkg_t * pkg);
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.c busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_hash.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.c 2006-05-09 02:12:05.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_hash.c 2006-05-09 02:17:35.000000000 +0200
|
||||
@@ -143,7 +143,7 @@
|
||||
pkg_t *pkg_hash_fetch_best_installation_candidate(ipkg_conf_t *conf, abstract_pkg_t *apkg,
|
||||
int (*constraint_fcn)(pkg_t *pkg, void *cdata), void *cdata, int quiet)
|
||||
{
|
||||
- int i;
|
||||
+ int i, j;
|
||||
int nprovides = 0;
|
||||
int nmatching = 0;
|
||||
pkg_vec_t *matching_pkgs = pkg_vec_alloc();
|
||||
@@ -209,11 +209,10 @@
|
||||
/* now check for supported architecture */
|
||||
{
|
||||
int max_count = 0;
|
||||
- int i;
|
||||
|
||||
/* count packages matching max arch priority and keep track of last one */
|
||||
- for (i = 0; i < vec->len; i++) {
|
||||
- pkg_t *maybe = vec->pkgs[i];
|
||||
+ for (j = 0; j < vec->len; j++) {
|
||||
+ pkg_t *maybe = vec->pkgs[j];
|
||||
ipkg_message(conf, IPKG_DEBUG, " %s arch=%s arch_priority=%d version=%s \n",
|
||||
maybe->name, maybe->architecture, maybe->arch_priority, maybe->version);
|
||||
if (maybe->arch_priority > 0) {
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.h busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_vec.h
|
||||
--- busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.h 2006-05-09 02:06:48.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg_vec.h 2006-05-09 02:16:48.000000000 +0200
|
||||
@@ -35,6 +35,8 @@
|
||||
};
|
||||
typedef struct abstract_pkg_vec abstract_pkg_vec_t;
|
||||
|
||||
+typedef int (*pkg_compar_t)(pkg_t *, pkg_t *);
|
||||
+typedef int (*abstract_pkg_compar_t)(abstract_pkg_t *, abstract_pkg_t *);
|
||||
|
||||
pkg_vec_t * pkg_vec_alloc(void);
|
||||
void pkg_vec_free(pkg_vec_t *vec);
|
|
@ -1,14 +1,7 @@
|
|||
# Copyright (C) 2006 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# expose (again) an hash_fd function (used in 911-ipkg.patch)
|
||||
#
|
||||
diff -ruN busybox-1.3.1-orig/coreutils/md5_sha1_sum.c busybox-1.3.1-913/coreutils/md5_sha1_sum.c
|
||||
--- busybox-1.3.1-orig/coreutils/md5_sha1_sum.c 2006-12-27 05:54:50.000000000 +0100
|
||||
+++ busybox-1.3.1-913/coreutils/md5_sha1_sum.c 2006-12-28 00:59:35.000000000 +0100
|
||||
@@ -8,78 +8,10 @@
|
||||
diff -ur busybox.old/coreutils/md5_sha1_sum.c busybox.dev/coreutils/md5_sha1_sum.c
|
||||
--- busybox.old/coreutils/md5_sha1_sum.c 2007-01-19 22:23:05.000000000 +0100
|
||||
+++ busybox.dev/coreutils/md5_sha1_sum.c 2007-01-22 13:24:51.000000000 +0100
|
||||
@@ -8,76 +8,10 @@
|
||||
|
||||
#include "busybox.h"
|
||||
|
||||
|
@ -22,11 +15,9 @@ diff -ruN busybox-1.3.1-orig/coreutils/md5_sha1_sum.c busybox-1.3.1-913/coreutil
|
|||
-static unsigned char *hash_bin_to_hex(unsigned char *hash_value,
|
||||
- unsigned hash_length)
|
||||
-{
|
||||
- int len = 0;
|
||||
- char *hex_value = xmalloc((hash_length * 2) + 2);
|
||||
- while (hash_length--) {
|
||||
- len += sprintf(hex_value + len, "%02x", *hash_value++);
|
||||
- }
|
||||
- /* xzalloc zero-terminates */
|
||||
- char *hex_value = xzalloc((hash_length * 2) + 1);
|
||||
- bin2hex(hex_value, (char*)hash_value, hash_length);
|
||||
- return hex_value;
|
||||
-}
|
||||
-
|
||||
|
@ -43,7 +34,7 @@ diff -ruN busybox-1.3.1-orig/coreutils/md5_sha1_sum.c busybox-1.3.1-913/coreutil
|
|||
- void (*final)(void*, void*);
|
||||
-
|
||||
- src_fd = STDIN_FILENO;
|
||||
- if (filename[0] != '-' || filename[1]) { /* not "-" */
|
||||
- if (NOT_LONE_DASH(filename)) {
|
||||
- src_fd = open(filename, O_RDONLY);
|
||||
- if (src_fd < 0) {
|
||||
- bb_perror_msg("%s", filename);
|
||||
|
@ -87,33 +78,40 @@ diff -ruN busybox-1.3.1-orig/coreutils/md5_sha1_sum.c busybox-1.3.1-913/coreutil
|
|||
int md5_sha1_sum_main(int argc, char **argv)
|
||||
{
|
||||
int return_value = EXIT_SUCCESS;
|
||||
diff -ruN busybox-1.3.1-orig/include/libbb.h busybox-1.3.1-913/include/libbb.h
|
||||
--- busybox-1.3.1-orig/include/libbb.h 2006-12-27 05:56:18.000000000 +0100
|
||||
+++ busybox-1.3.1-913/include/libbb.h 2006-12-27 23:25:52.000000000 +0100
|
||||
@@ -528,6 +528,8 @@
|
||||
diff -ur busybox.old/include/libbb.h busybox.dev/include/libbb.h
|
||||
--- busybox.old/include/libbb.h 2007-01-19 22:23:10.000000000 +0100
|
||||
+++ busybox.dev/include/libbb.h 2007-01-22 13:28:56.000000000 +0100
|
||||
@@ -637,6 +637,7 @@
|
||||
extern const char bb_uuenc_tbl_std[];
|
||||
void bb_uuencode(const unsigned char *s, char *store, const int length, const char *tbl);
|
||||
|
||||
+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
|
||||
+
|
||||
typedef struct sha1_ctx_t {
|
||||
uint32_t count[2];
|
||||
uint32_t hash[5];
|
||||
@@ -550,6 +552,10 @@
|
||||
@@ -658,6 +659,8 @@
|
||||
void md5_begin(md5_ctx_t *ctx);
|
||||
void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
|
||||
void *md5_end(void *resbuf, md5_ctx_t *ctx);
|
||||
|
||||
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned char hash_length);
|
||||
+int hash_fd(int fd, hash_algo_t hash_algo, uint8_t *hash_value);
|
||||
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned hash_length);
|
||||
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
|
||||
+
|
||||
|
||||
uint32_t *crc32_filltable(int endian);
|
||||
|
||||
|
||||
diff -ruN busybox-1.3.1-orig/libbb/hash.c busybox-1.3.1-913/libbb/hash.c
|
||||
--- busybox-1.3.1-orig/libbb/hash.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ busybox-1.3.1-913/libbb/hash.c 2006-12-28 00:48:52.000000000 +0100
|
||||
@@ -0,0 +1,99 @@
|
||||
diff -ur busybox.old/libbb/Kbuild busybox.dev/libbb/Kbuild
|
||||
--- busybox.old/libbb/Kbuild 2007-01-19 22:23:06.000000000 +0100
|
||||
+++ busybox.dev/libbb/Kbuild 2007-01-22 13:29:24.000000000 +0100
|
||||
@@ -37,6 +37,7 @@
|
||||
lib-y += get_last_path_component.o
|
||||
lib-y += get_line_from_file.o
|
||||
lib-y += getopt32.o
|
||||
+lib-y += hash.o
|
||||
lib-y += herror_msg.o
|
||||
lib-y += herror_msg_and_die.o
|
||||
lib-y += human_readable.o
|
||||
--- busybox.old/libbb/hash.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ busybox.dev/libbb/hash.c 2007-01-22 13:52:41.000000000 +0100
|
||||
@@ -0,0 +1,82 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2003 Glenn L. McGrath
|
||||
+ * Copyright (C) 2003-2004 Erik Andersen
|
||||
|
@ -131,69 +129,30 @@ diff -ruN busybox-1.3.1-orig/libbb/hash.c busybox-1.3.1-913/libbb/hash.c
|
|||
+
|
||||
+#include "busybox.h"
|
||||
+
|
||||
+unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned char hash_length)
|
||||
+/* This might be useful elsewhere */
|
||||
+unsigned char *hash_bin_to_hex(unsigned char *hash_value,
|
||||
+ unsigned hash_length)
|
||||
+{
|
||||
+ int len = 0;
|
||||
+ char *hex_value = xmalloc((hash_length * 2) + 2);
|
||||
+ while (hash_length--) {
|
||||
+ len += sprintf(hex_value + len, "%02x", *hash_value++);
|
||||
+ }
|
||||
+ /* xzalloc zero-terminates */
|
||||
+ char *hex_value = xzalloc((hash_length * 2) + 1);
|
||||
+ bin2hex(hex_value, (char*)hash_value, hash_length);
|
||||
+ return hex_value;
|
||||
+}
|
||||
+
|
||||
+int hash_fd(int fd, hash_algo_t hash_algo, uint8_t *hash_value)
|
||||
+{
|
||||
+ int count, result = 0;
|
||||
+ union _ctx_ {
|
||||
+ sha1_ctx_t sha1;
|
||||
+ md5_ctx_t md5;
|
||||
+ } context;
|
||||
+ RESERVE_CONFIG_UBUFFER(in_buf, 4096);
|
||||
+ void (*update)(const void*, size_t, void*) = NULL;
|
||||
+ void (*final)(void*, void*) = NULL;
|
||||
+
|
||||
+ // figure specific hash algorithims
|
||||
+ if (hash_algo==HASH_MD5) {
|
||||
+ md5_begin(&context.md5);
|
||||
+ update = (void (*)(const void*, size_t, void*))md5_hash;
|
||||
+ final = (void (*)(void*, void*))md5_end;
|
||||
+ } else if (hash_algo==HASH_SHA1) {
|
||||
+ sha1_begin(&context.sha1);
|
||||
+ update = (void (*)(const void*, size_t, void*))sha1_hash;
|
||||
+ final = (void (*)(void*, void*))sha1_end;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ while (0 < (count = safe_read(fd, in_buf, sizeof in_buf))) {
|
||||
+ update(in_buf, count, &context);
|
||||
+ result += count;
|
||||
+ }
|
||||
+
|
||||
+ if (count == 0) {
|
||||
+ final(hash_value, &context);
|
||||
+ }
|
||||
+
|
||||
+ RELEASE_CONFIG_BUFFER(in_buf);
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
|
||||
+{
|
||||
+ int src_fd, hash_len;
|
||||
+ RESERVE_CONFIG_UBUFFER(hash_buf, 20);
|
||||
+ int src_fd, hash_len, count;
|
||||
+ union _ctx_ {
|
||||
+ sha1_ctx_t sha1;
|
||||
+ md5_ctx_t md5;
|
||||
+ } context;
|
||||
+ uint8_t *hash_value = NULL;
|
||||
+
|
||||
+ if (ENABLE_MD5SUM && hash_algo==HASH_MD5) {
|
||||
+ hash_len = 16;
|
||||
+ } else if (ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
|
||||
+ hash_len = 20;
|
||||
+ } else {
|
||||
+ bb_error_msg_and_die("algotithm not supported");
|
||||
+ }
|
||||
+ RESERVE_CONFIG_UBUFFER(in_buf, 4096);
|
||||
+ void (*update)(const void*, size_t, void*);
|
||||
+ void (*final)(void*, void*);
|
||||
+
|
||||
+ src_fd = STDIN_FILENO;
|
||||
+ if (filename[0] != '-' || filename[1]) { /* not "-" */
|
||||
+ if (NOT_LONE_DASH(filename)) {
|
||||
+ src_fd = open(filename, O_RDONLY);
|
||||
+ if (src_fd < 0) {
|
||||
+ bb_perror_msg("%s", filename);
|
||||
|
@ -201,26 +160,37 @@ diff -ruN busybox-1.3.1-orig/libbb/hash.c busybox-1.3.1-913/libbb/hash.c
|
|||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (hash_fd(src_fd, hash_algo, hash_buf) > 0) {
|
||||
+ hash_value = hash_bin_to_hex(hash_buf, hash_len);
|
||||
+ /* figure specific hash algorithims */
|
||||
+ if (hash_algo==HASH_MD5) {
|
||||
+ md5_begin(&context.md5);
|
||||
+ update = (void (*)(const void*, size_t, void*))md5_hash;
|
||||
+ final = (void (*)(void*, void*))md5_end;
|
||||
+ hash_len = 16;
|
||||
+ } else if (hash_algo==HASH_SHA1) {
|
||||
+ sha1_begin(&context.sha1);
|
||||
+ update = (void (*)(const void*, size_t, void*))sha1_hash;
|
||||
+ final = (void (*)(void*, void*))sha1_end;
|
||||
+ hash_len = 20;
|
||||
+ } else {
|
||||
+ bb_error_msg_and_die("algorithm not supported");
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ while (0 < (count = safe_read(src_fd, in_buf, 4096))) {
|
||||
+ update(in_buf, count, &context);
|
||||
+ }
|
||||
+
|
||||
+ if (count == 0) {
|
||||
+ final(in_buf, &context);
|
||||
+ hash_value = hash_bin_to_hex(in_buf, hash_len);
|
||||
+ }
|
||||
+
|
||||
+ RELEASE_CONFIG_BUFFER(in_buf);
|
||||
+
|
||||
+ if (src_fd != STDIN_FILENO) {
|
||||
+ close(src_fd);
|
||||
+ }
|
||||
+
|
||||
+ RELEASE_CONFIG_BUFFER(hash_buf);
|
||||
+
|
||||
+ return hash_value;
|
||||
+}
|
||||
diff -ruN busybox-1.3.1-orig/libbb/Kbuild busybox-1.3.1-913/libbb/Kbuild
|
||||
--- busybox-1.3.1-orig/libbb/Kbuild 2006-12-27 05:55:04.000000000 +0100
|
||||
+++ busybox-1.3.1-913/libbb/Kbuild 2006-12-27 23:31:20.000000000 +0100
|
||||
@@ -37,6 +37,7 @@
|
||||
lib-y += get_last_path_component.o
|
||||
lib-y += get_line_from_file.o
|
||||
lib-y += getopt32.o
|
||||
+lib-y += hash.o
|
||||
lib-y += herror_msg.o
|
||||
lib-y += herror_msg_and_die.o
|
||||
lib-y += human_readable.o
|
||||
+
|
||||
+
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
# Copyright (C) 2006 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# fix ipkg bugs
|
||||
#
|
||||
diff -ruN busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.c busybox-1.1.2+ipkg-0.99.162-fixes/archival/libipkg/pkg.c
|
||||
--- busybox-1.1.2+ipkg-0.99.162-no_warnings/archival/libipkg/pkg.c 2006-05-09 02:16:48.000000000 +0200
|
||||
+++ busybox-1.1.2+ipkg-0.99.162-fixes/archival/libipkg/pkg.c 2006-05-09 05:15:29.000000000 +0200
|
||||
@@ -359,6 +359,8 @@
|
||||
if (!oldpkg->essential)
|
||||
oldpkg->essential = newpkg->essential;
|
||||
|
||||
+ oldpkg->provided_by_hand |= newpkg->provided_by_hand;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in a new issue