upgrade busybox to 1.4.0

SVN-Revision: 6204
This commit is contained in:
Felix Fietkau 2007-01-25 19:08:01 +00:00
parent e2c94324e7
commit 1233a57f74
22 changed files with 586 additions and 1394 deletions

View File

@ -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)

View File

@ -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

View File

@ -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"

View File

@ -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

View 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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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.

View File

@ -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

View 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

View File

@ -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 */

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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));

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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
+
+

View File

@ -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;
}