busybox: update to version 1.24.1
Patches applied upstream and dropped: 280-fix_find_regression.patch 300-ip-addr-improvements.patch Fixed upstream: 290-ash-fix-a-regression-in-handling-local-variables.patch (see thread: http://lists.busybox.net/pipermail/busybox/2015-April/082783.html) Signed-off-by: Magnus Kroken <mkroken@gmail.com> SVN-Revision: 47288
This commit is contained in:
parent
ce09894398
commit
e35d42e890
@ -8,14 +8,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=busybox
|
||||
PKG_VERSION:=1.23.2
|
||||
PKG_RELEASE:=3
|
||||
PKG_VERSION:=1.24.1
|
||||
PKG_RELEASE:=1
|
||||
PKG_FLAGS:=essential
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
|
||||
http://distfiles.gentoo.org/distfiles/
|
||||
PKG_MD5SUM:=7925683d7dd105aabe9b6b618d48cc73
|
||||
PKG_MD5SUM:=be98a40cadf84ce2d6b05fa41a275c6a
|
||||
|
||||
PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc BUSYBOX_CONFIG_PAM:libpam
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/util-linux/mount.c
|
||||
+++ b/util-linux/mount.c
|
||||
@@ -138,9 +138,6 @@
|
||||
@@ -236,9 +236,6 @@
|
||||
#if ENABLE_FEATURE_MOUNT_NFS
|
||||
/* This is just a warning of a common mistake. Possibly this should be a
|
||||
* uclibc faq entry rather than in busybox... */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -685,6 +685,7 @@ static int bcast_or_ucast(struct dhcp_pa
|
||||
@@ -695,6 +695,7 @@ static int bcast_or_ucast(struct dhcp_pa
|
||||
static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
|
||||
{
|
||||
struct dhcp_packet packet;
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
/* Fill in: op, htype, hlen, cookie, chaddr fields,
|
||||
* random xid field (we override it below),
|
||||
@@ -702,6 +703,7 @@ static NOINLINE int send_discover(uint32
|
||||
@@ -712,6 +713,7 @@ static NOINLINE int send_discover(uint32
|
||||
*/
|
||||
add_client_options(&packet);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -1410,6 +1410,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
|
||||
@@ -1418,6 +1418,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
|
||||
/* silence "uninitialized!" warning */
|
||||
unsigned timestamp_before_wait = timestamp_before_wait;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -1093,7 +1093,6 @@ static void perform_renew(void)
|
||||
@@ -1101,7 +1101,6 @@ static void perform_renew(void)
|
||||
state = RENEW_REQUESTED;
|
||||
break;
|
||||
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -663,10 +663,10 @@ static void add_client_options(struct dh
|
||||
@@ -673,10 +673,10 @@ static void add_client_options(struct dh
|
||||
* client reverts to using the IP broadcast address.
|
||||
*/
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
/*dst*/ INADDR_BROADCAST, SERVER_PORT, MAC_BCAST_ADDR,
|
||||
client_config.ifindex);
|
||||
}
|
||||
@@ -677,7 +677,7 @@ static int bcast_or_ucast(struct dhcp_pa
|
||||
@@ -687,7 +687,7 @@ static int bcast_or_ucast(struct dhcp_pa
|
||||
return udhcp_send_kernel_packet(packet,
|
||||
ciaddr, CLIENT_PORT,
|
||||
server, SERVER_PORT);
|
||||
@ -22,7 +22,7 @@
|
||||
}
|
||||
|
||||
/* Broadcast a DHCP discover packet to the network, with an optionally requested IP */
|
||||
@@ -705,7 +705,7 @@ static NOINLINE int send_discover(uint32
|
||||
@@ -715,7 +715,7 @@ static NOINLINE int send_discover(uint32
|
||||
|
||||
if (msgs++ < 3)
|
||||
bb_info_msg("Sending discover...");
|
||||
@ -31,7 +31,7 @@
|
||||
}
|
||||
|
||||
/* Broadcast a DHCP request message */
|
||||
@@ -749,7 +749,7 @@ static NOINLINE int send_select(uint32_t
|
||||
@@ -759,7 +759,7 @@ static NOINLINE int send_select(uint32_t
|
||||
|
||||
addr.s_addr = requested;
|
||||
bb_info_msg("Sending select for %s...", inet_ntoa(addr));
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
/* Unicast or broadcast a DHCP renew message */
|
||||
@@ -817,7 +817,7 @@ static NOINLINE int send_decline(/*uint3
|
||||
@@ -827,7 +827,7 @@ static NOINLINE int send_decline(/*uint3
|
||||
udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server);
|
||||
|
||||
bb_info_msg("Sending decline...");
|
||||
|
@ -10,7 +10,7 @@
|
||||
IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
|
||||
--- a/networking/Config.src
|
||||
+++ b/networking/Config.src
|
||||
@@ -619,6 +619,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
|
||||
@@ -626,6 +626,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
|
||||
help
|
||||
Support long options for the ipcalc applet.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/networking/ntpd.c
|
||||
+++ b/networking/ntpd.c
|
||||
@@ -251,6 +251,7 @@ typedef struct {
|
||||
@@ -265,6 +265,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
len_and_sockaddr *p_lsa;
|
||||
char *p_dotted;
|
||||
@ -8,7 +8,7 @@
|
||||
int p_fd;
|
||||
int datapoint_idx;
|
||||
uint32_t lastpkt_refid;
|
||||
@@ -756,8 +757,9 @@ add_peers(const char *s)
|
||||
@@ -766,8 +767,9 @@ add_peers(const char *s)
|
||||
peer_t *p;
|
||||
|
||||
p = xzalloc(sizeof(*p));
|
||||
@ -20,7 +20,7 @@
|
||||
p->p_fd = -1;
|
||||
p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
|
||||
p->next_action_time = G.cur_time; /* = set_next(p, 0); */
|
||||
@@ -806,6 +808,25 @@ send_query_to_peer(peer_t *p)
|
||||
@@ -816,6 +818,25 @@ send_query_to_peer(peer_t *p)
|
||||
*
|
||||
* Uncomment this and use strace to see it in action:
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/libbb/printable_string.c
|
||||
+++ b/libbb/printable_string.c
|
||||
@@ -31,8 +31,6 @@ const char* FAST_FUNC printable_string(u
|
||||
@@ -28,8 +28,6 @@ const char* FAST_FUNC printable_string(u
|
||||
}
|
||||
if (c < ' ')
|
||||
break;
|
||||
@ -9,7 +9,7 @@
|
||||
s++;
|
||||
}
|
||||
|
||||
@@ -45,7 +43,7 @@ const char* FAST_FUNC printable_string(u
|
||||
@@ -42,7 +40,7 @@ const char* FAST_FUNC printable_string(u
|
||||
unsigned char c = *d;
|
||||
if (c == '\0')
|
||||
break;
|
||||
|
@ -1,31 +0,0 @@
|
||||
find: fix regression in status processing for path arguments
|
||||
|
||||
Regression added in commit 14158b4127dba30466c50147b868a6a89702960b
|
||||
"find: add optional support for '-exec ... {} +'"
|
||||
|
||||
This commit causes find to exit on the first path argument that was not
|
||||
found, which breaks existing scripts and is incompatible to other
|
||||
implementations.
|
||||
|
||||
Instead of exiting on the first failure, return EXIT_FAILURE at the end
|
||||
if any error occurred.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
--- a/findutils/find.c
|
||||
+++ b/findutils/find.c
|
||||
@@ -1460,12 +1460,10 @@ int find_main(int argc UNUSED_PARAM, cha
|
||||
NULL, /* user data */
|
||||
0) /* depth */
|
||||
) {
|
||||
- status = EXIT_FAILURE;
|
||||
- goto out;
|
||||
+ status |= EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
- IF_FEATURE_FIND_EXEC_PLUS(status = flush_exec_plus();)
|
||||
-out:
|
||||
+ IF_FEATURE_FIND_EXEC_PLUS(status |= flush_exec_plus();)
|
||||
return status;
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Fri, 17 Apr 2015 01:54:51 +0200
|
||||
Subject: [PATCH] ash: fix a regression in handling local variables
|
||||
|
||||
commit 109ee5d33694a03cda3424b4846584250832ba8e
|
||||
"ash: make "locak VAR" unset VAR (bash does that)"
|
||||
|
||||
This commit introduced a regression where calling local on an already
|
||||
local variable unsets it. This does not match bash behavior.
|
||||
|
||||
Update test case to check for this behavior
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
---
|
||||
|
||||
--- a/shell/ash.c
|
||||
+++ b/shell/ash.c
|
||||
@@ -8961,6 +8961,21 @@ parse_command_args(char **argv, const ch
|
||||
}
|
||||
#endif
|
||||
|
||||
+static bool
|
||||
+findlocal(struct var *vp)
|
||||
+{
|
||||
+ struct localvar *lvp = localvars;
|
||||
+
|
||||
+ while (lvp) {
|
||||
+ if (lvp->vp == vp)
|
||||
+ return true;
|
||||
+
|
||||
+ lvp = lvp->next;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Make a variable a local variable. When a variable is made local, it's
|
||||
* value and flags are saved in a localvar structure. The saved values
|
||||
@@ -9000,7 +9015,7 @@ mklocal(char *name)
|
||||
vp->flags |= VSTRFIXED|VTEXTFIXED;
|
||||
if (eq)
|
||||
setvareq(name, 0);
|
||||
- else
|
||||
+ else if (!findlocal(vp))
|
||||
/* "local VAR" unsets VAR: */
|
||||
setvar(name, NULL, 0);
|
||||
}
|
||||
--- a/shell/ash_test/ash-misc/local1.right
|
||||
+++ b/shell/ash_test/ash-misc/local1.right
|
||||
@@ -1,4 +1,5 @@
|
||||
A1:'A'
|
||||
A2:''
|
||||
-A3:''
|
||||
-A4:'A'
|
||||
+A3:'B'
|
||||
+A4:''
|
||||
+A5:'A'
|
||||
--- a/shell/ash_test/ash-misc/local1.tests
|
||||
+++ b/shell/ash_test/ash-misc/local1.tests
|
||||
@@ -3,9 +3,12 @@ f() {
|
||||
local a
|
||||
# the above line unsets $a
|
||||
echo "A2:'$a'"
|
||||
- unset a
|
||||
+ a=B
|
||||
+ local a
|
||||
echo "A3:'$a'"
|
||||
+ unset a
|
||||
+ echo "A4:'$a'"
|
||||
}
|
||||
echo "A1:'$a'"
|
||||
f
|
||||
-echo "A4:'$a'"
|
||||
+echo "A5:'$a'"
|
@ -1,73 +0,0 @@
|
||||
From 6a7cd3d4aba493c0b0d00155b1e09a867db437cf Mon Sep 17 00:00:00 2001
|
||||
From: Michael Tokarev <mjt@tls.msk.ru>
|
||||
Date: Wed, 20 May 2015 16:27:44 +0300
|
||||
Subject: [PATCH] ip addr: support change and replace commands
|
||||
|
||||
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
---
|
||||
networking/ip.c | 2 +-
|
||||
networking/libiproute/ipaddress.c | 20 ++++++++++++--------
|
||||
2 files changed, 13 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/networking/ip.c
|
||||
+++ b/networking/ip.c
|
||||
@@ -33,7 +33,7 @@
|
||||
//usage: "{ {add|del} IFADDR dev STRING | {show|flush}\n"
|
||||
//usage: " [dev STRING] [to PREFIX] }"
|
||||
//usage:#define ipaddr_full_usage "\n\n"
|
||||
-//usage: "ipaddr {add|delete} IFADDR dev STRING\n"
|
||||
+//usage: "ipaddr {add|change|replace|delete} IFADDR dev STRING\n"
|
||||
//usage: "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n"
|
||||
//usage: " [to PREFIX] [label PATTERN]\n"
|
||||
//usage: " IFADDR := PREFIX | ADDR peer PREFIX\n"
|
||||
--- a/networking/libiproute/ipaddress.c
|
||||
+++ b/networking/libiproute/ipaddress.c
|
||||
@@ -598,7 +598,7 @@ static int default_scope(inet_prefix *lc
|
||||
}
|
||||
|
||||
/* Return value becomes exitcode. It's okay to not return at all */
|
||||
-static int ipaddr_modify(int cmd, char **argv)
|
||||
+static int ipaddr_modify(int cmd, int flags, char **argv)
|
||||
{
|
||||
static const char option[] ALIGN1 =
|
||||
"peer\0""remote\0""broadcast\0""brd\0"
|
||||
@@ -622,7 +622,7 @@ static int ipaddr_modify(int cmd, char *
|
||||
memset(&req, 0, sizeof(req));
|
||||
|
||||
req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
|
||||
- req.n.nlmsg_flags = NLM_F_REQUEST;
|
||||
+ req.n.nlmsg_flags = NLM_F_REQUEST | flags;
|
||||
req.n.nlmsg_type = cmd;
|
||||
req.ifa.ifa_family = preferred_family;
|
||||
|
||||
@@ -749,16 +749,24 @@ static int ipaddr_modify(int cmd, char *
|
||||
int FAST_FUNC do_ipaddr(char **argv)
|
||||
{
|
||||
static const char commands[] ALIGN1 =
|
||||
- "add\0""delete\0""list\0""show\0""lst\0""flush\0";
|
||||
+ /* 0 1 2 3 4 5 6 7 8 */
|
||||
+ "add\0""change\0""chg\0""replace\0""delete\0""list\0""show\0""lst\0""flush\0";
|
||||
int cmd = 2;
|
||||
if (*argv) {
|
||||
cmd = index_in_substrings(commands, *argv);
|
||||
if (cmd < 0)
|
||||
invarg(*argv, applet_name);
|
||||
argv++;
|
||||
- if (cmd <= 1)
|
||||
- return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv);
|
||||
+ if (cmd <= 4) {
|
||||
+ return ipaddr_modify(
|
||||
+ /*cmd:*/ cmd == 4 ? RTM_DELADDR : RTM_NEWADDR,
|
||||
+ /*flags:*/
|
||||
+ cmd == 0 ? NLM_F_CREATE|NLM_F_EXCL : /* add */
|
||||
+ cmd == 1 || cmd == 2 ? NLM_F_REPLACE : /* change */
|
||||
+ cmd == 3 ? NLM_F_CREATE|NLM_F_REPLACE : /* replace */
|
||||
+ 0 /* delete */
|
||||
+ , argv);
|
||||
+ }
|
||||
}
|
||||
- /* 2 == list, 3 == show, 4 == lst */
|
||||
- return ipaddr_list_or_flush(argv, cmd == 5);
|
||||
+ return ipaddr_list_or_flush(argv, cmd == 8);
|
||||
}
|
Loading…
Reference in New Issue
Block a user