--- a/init/init.c
+++ b/init/init.c
-@@ -460,8 +460,11 @@ static void run_actions(int action_type)
+@@ -572,8 +572,11 @@ static void run_actions(int action_type)
/* Only run stuff with pid == 0. If pid != 0,
* it is already running
*/
int fd;
--- a/networking/Config.src
+++ b/networking/Config.src
-@@ -79,12 +79,12 @@ config FEATURE_BRCTL_FANCY
+@@ -82,12 +82,12 @@ config FEATURE_BRCTL_FANCY
This adds about 600 bytes.
config FEATURE_BRCTL_SHOW
--- a/networking/wget.c
+++ b/networking/wget.c
-@@ -545,7 +545,7 @@ int wget_main(int argc UNUSED_PARAM, cha
+@@ -597,7 +597,7 @@ int wget_main(int argc UNUSED_PARAM, cha
+ /* Ignored: */
// "tries\0" Required_argument "t"
- // "timeout\0" Required_argument "T"
/* Ignored (we always use PASV): */
- "passive-ftp\0" No_argument "\xff"
+ "passive-ftp\0" No_argument "\xfd"
-#define CRONTABS CONFIG_FEATURE_CROND_DIR "/crontabs"
+#define CRONTABS "/etc/crontabs"
#ifndef SENDMAIL
- #define SENDMAIL "sendmail"
+ # define SENDMAIL "sendmail"
#endif
--- a/miscutils/crontab.c
+++ b/miscutils/crontab.c
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -1017,7 +1017,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -1196,7 +1196,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
switch (state) {
case INIT_SELECTING:
if (packet_num == 0)
xid = random_xid();
/* broadcast */
-@@ -1046,7 +1046,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -1225,7 +1225,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
packet_num = 0;
continue;
case REQUESTING:
-diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c
-index 2b7528c..94e53dc 100644
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
-@@ -165,6 +165,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *addr, int count)
+@@ -165,6 +165,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *
return ~sum;
}
/* Construct a ip/udp header for a packet, send packet */
int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
uint32_t source_nip, int source_port,
-@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
+@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru
{
struct sockaddr_ll dest_sll;
struct ip_udp_dhcp_packet packet;
fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
if (fd < 0) {
-@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
+@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru
}
memset(&dest_sll, 0, sizeof(dest_sll));
dest_sll.sll_family = AF_PACKET;
dest_sll.sll_protocol = htons(ETH_P_IP);
-@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
+@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru
goto ret_close;
}
(struct sockaddr *) &dest_sll, sizeof(dest_sll));
msg = "sendto";
ret_close:
-@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
+@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
uint32_t dest_nip, int dest_port)
{
struct sockaddr_in client;
int fd;
int result = -1;
const char *msg;
-@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
+@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
}
udhcp_dump_packet(dhcp_pkt);
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -428,6 +428,7 @@ static int raw_bcast_from_client_config_
- static int send_discover(uint32_t xid, uint32_t requested)
+@@ -436,6 +436,7 @@ static int raw_bcast_from_client_config_
+ static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcp_packet packet;
+ static int msgs = 0;
- init_packet(&packet, DHCPDISCOVER);
- packet.xid = xid;
-@@ -438,6 +439,7 @@ static int send_discover(uint32_t xid, u
- udhcp_add_simple_option(&packet, DHCP_MAX_SIZE, htons(576));
+ /* Fill in: op, htype, hlen, cookie, chaddr fields,
+ * random xid field (we override it below),
+@@ -453,6 +454,7 @@ static NOINLINE int send_discover(uint32
+ */
add_client_options(&packet);
+ if (msgs++ < 3)
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -980,6 +980,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -1144,6 +1144,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
/* silence "uninitialized!" warning */
unsigned timestamp_before_wait = timestamp_before_wait;
--- a/shell/ash.c
+++ b/shell/ash.c
-@@ -12429,8 +12429,17 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12532,8 +12532,17 @@ exportcmd(int argc UNUSED_PARAM, char **
const char *p;
char **aptr;
int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
aptr = argptr;
name = *aptr;
if (name) {
-@@ -12442,10 +12451,12 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12545,10 +12554,12 @@ exportcmd(int argc UNUSED_PARAM, char **
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;
-diff --git a/include/applets.src.h b/include/applets.src.h
-index f4fab53..f97f2d8 100644
--- a/include/applets.src.h
+++ b/include/applets.src.h
-@@ -256,6 +256,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP))
+@@ -256,6 +256,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_D
IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP))
IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP))
IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-diff --git a/include/usage.src.h b/include/usage.src.h
-index 30fef24..ac78992 100644
--- a/include/usage.src.h
+++ b/include/usage.src.h
@@ -1,3 +1,4 @@
#define nmeter_trivial_usage \
"format_string"
#define nmeter_full_usage "\n\n" \
-diff --git a/networking/Config.src b/networking/Config.src
-index 6dd7df7..4682dd3 100644
--- a/networking/Config.src
+++ b/networking/Config.src
@@ -640,6 +640,12 @@ config FEATURE_NAMEIF_EXTENDED
config NETSTAT
bool "netstat"
default y
-diff --git a/networking/Kbuild.src b/networking/Kbuild.src
-index f41a2df..6070a40 100644
--- a/networking/Kbuild.src
+++ b/networking/Kbuild.src
@@ -27,6 +27,7 @@ lib-$(CONFIG_IP) += ip.o
lib-$(CONFIG_NETSTAT) += netstat.o
lib-$(CONFIG_NSLOOKUP) += nslookup.o
lib-$(CONFIG_NTPD) += ntpd.o
-diff --git a/networking/netmsg.c b/networking/netmsg.c
-new file mode 100644
-index 0000000..43aba0d
--- /dev/null
+++ b/networking/netmsg.c
@@ -0,0 +1,63 @@
--- a/networking/httpd.c
+++ b/networking/httpd.c
-@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char
+@@ -1742,21 +1742,32 @@ static int check_user_passwd(const char
if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
char *md5_passwd;
--- a/include/applets.src.h
+++ b/include/applets.src.h
-@@ -229,6 +229,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN,
+@@ -213,6 +213,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN,
IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP))
IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname))
--- a/include/usage.src.h
+++ b/include/usage.src.h
-@@ -2320,6 +2320,9 @@ INSERT
+@@ -2089,6 +2089,9 @@ INSERT
#define loadkmap_example_usage \
"$ loadkmap < /etc/i18n/lang-keymap\n"
#define logger_full_usage "\n\n" \
--- a/miscutils/Config.src
+++ b/miscutils/Config.src
-@@ -465,6 +465,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
+@@ -485,6 +485,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
help
Enables the 'hdparm -d' option to get/set using_dma flag.
--- a/include/usage.src.h
+++ b/include/usage.src.h
-@@ -1719,7 +1719,8 @@ INSERT
+@@ -1623,7 +1623,8 @@ INSERT
IF_FEATURE_HTTPD_SETUID(" [-u USER[:GRP]]") \
IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \
" [-h HOME]\n" \
#define httpd_full_usage "\n\n" \
"Listen for incoming HTTP requests\n" \
"\nOptions:" \
-@@ -1737,6 +1738,8 @@ INSERT
+@@ -1641,6 +1642,8 @@ INSERT
"\n -m STRING MD5 crypt STRING") \
"\n -e STRING HTML encode STRING" \
"\n -d STRING URL decode STRING" \
IF_FEATURE_HWCLOCK_LONG_OPTIONS( \
--- a/networking/httpd.c
+++ b/networking/httpd.c
-@@ -250,6 +250,8 @@ struct globals {
+@@ -243,6 +243,8 @@ struct globals {
const char *found_mime_type;
const char *found_moved_temporarily;
Htaccess_IP *ip_a_d; /* config allow/deny lines */
IF_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
-@@ -296,6 +298,8 @@ struct globals {
+@@ -293,6 +295,8 @@ struct globals {
#define index_page (G.index_page )
#define found_mime_type (G.found_mime_type )
#define found_moved_temporarily (G.found_moved_temporarily)
#define last_mod (G.last_mod )
#define ip_a_d (G.ip_a_d )
#define g_realm (G.g_realm )
-@@ -997,8 +1001,11 @@ static void send_headers(int responseNum
+@@ -999,8 +1003,11 @@ static void send_headers(int responseNum
}
#endif
if (responseNum == HTTP_MOVED_TEMPORARILY) {
(g_query ? "?" : ""),
(g_query ? g_query : ""));
}
-@@ -1942,8 +1949,12 @@ static void handle_incoming_and_exit(con
+@@ -1967,8 +1974,12 @@ static void handle_incoming_and_exit(con
} while (*++tptr);
*++urlp = '\0'; /* terminate after last character */
if (is_directory(urlcopy + 1, 1, NULL)) {
found_moved_temporarily = urlcopy;
}
-@@ -2283,7 +2294,9 @@ static void sighup_handler(int sig UNUSE
+@@ -2325,7 +2336,9 @@ static void sighup_handler(int sig UNUSE
}
enum {
d_opt_decode_url,
h_opt_home_httpd,
IF_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
-@@ -2332,12 +2345,13 @@ int httpd_main(int argc UNUSED_PARAM, ch
+@@ -2374,12 +2387,13 @@ int httpd_main(int argc UNUSED_PARAM, ch
/* We do not "absolutize" path given by -h (home) opt.
* If user gives relative path in -h,
* $SCRIPT_FILENAME will not be set. */
--- a/networking/httpd.c
+++ b/networking/httpd.c
-@@ -1255,10 +1255,10 @@ static NOINLINE void cgi_io_loop_and_exi
+@@ -1261,10 +1261,10 @@ static NOINLINE void cgi_io_loop_and_exi
if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
break;
}
--- a/networking/httpd.c
+++ b/networking/httpd.c
-@@ -1828,6 +1828,7 @@ static void handle_incoming_and_exit(con
+@@ -1853,6 +1853,7 @@ static void handle_incoming_and_exit(con
char *header_ptr = header_ptr;
Htaccess_Proxy *proxy_entry;
#endif
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
-@@ -9,6 +9,99 @@
+@@ -11,6 +11,99 @@
#include "libbb.h"
#include "modutils.h"
/* 2.6 style insmod has no options and required filename
* (not module name - .ko can't be omitted) */
-@@ -55,9 +148,15 @@ int insmod_main(int argc UNUSED_PARAM, c
+@@ -59,9 +152,15 @@ int insmod_main(int argc UNUSED_PARAM, c
if (!filename)
bb_show_usage();
}
--- a/modutils/Config.src
+++ b/modutils/Config.src
-@@ -228,7 +228,7 @@ config FEATURE_MODUTILS_SYMBOLS
+@@ -229,7 +229,7 @@ config FEATURE_MODUTILS_SYMBOLS
config DEFAULT_MODULES_DIR
string "Default directory containing modules"
default "/lib/modules"
/* vi: set sw=4 ts=4: */
/*
* awk implementation for busybox
-@@ -70,9 +71,14 @@ typedef struct chain_s {
+@@ -74,9 +75,14 @@ typedef struct chain_s {
} chain;
/* Function */
} func;
/* I/O stream */
-@@ -1453,7 +1459,8 @@ static void parse_program(char *p)
+@@ -1466,7 +1472,8 @@ static void parse_program(char *p)
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
-@@ -1462,7 +1469,7 @@ static void parse_program(char *p)
+@@ -1475,7 +1482,7 @@ static void parse_program(char *p)
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
chain_group();
clear_array(ahash);
-@@ -2547,7 +2554,8 @@ static var *evaluate(node *op, var *res)
+@@ -2573,7 +2580,8 @@ static var *evaluate(node *op, var *res)
var *vbeg, *v;
const char *sv_progname;
syntax_error(EMSG_UNDEF_FUNC);
vbeg = v = nvalloc(op->r.f->nargs + 1);
-@@ -2564,7 +2572,10 @@ static var *evaluate(node *op, var *res)
+@@ -2590,7 +2598,10 @@ static var *evaluate(node *op, var *res)
fnargs = vbeg;
sv_progname = g_progname;
g_progname = sv_progname;
nvfree(fnargs);
-@@ -2942,6 +2953,143 @@ static rstream *next_input_file(void)
+@@ -2984,6 +2995,143 @@ static rstream *next_input_file(void)
#undef files_happen
}
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int awk_main(int argc, char **argv)
{
-@@ -3007,6 +3155,9 @@ int awk_main(int argc, char **argv)
+@@ -3049,6 +3197,9 @@ int awk_main(int argc, char **argv)
*s1 = '=';
}
}
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -793,7 +793,6 @@ static void perform_renew(void)
+@@ -874,7 +874,6 @@ static void perform_renew(void)
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
--- a/coreutils/id.c
+++ b/coreutils/id.c
-@@ -17,10 +17,12 @@
+@@ -19,10 +19,12 @@
- #include "libbb.h"
+ /* This is a NOEXEC applet. Be very careful! */
+#define HAVE_GETGROUPLIST 1
+
#endif
#endif
#endif
-@@ -82,7 +84,11 @@ static int get_groups(const char *userna
+@@ -84,7 +86,11 @@ static int get_groups(const char *userna
/* If the user is a member of more than
* *n groups, then -1 is returned. Otherwise >= 0.
* (and no defined way of detecting errors?!) */
/* I guess *n < 0 might indicate error. Anyway,
* malloc'ing -1 bytes won't be good, so: */
//if (*n < 0)
-@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char
+@@ -156,6 +162,7 @@ int id_main(int argc UNUSED_PARAM, char
if (egid != rgid)
status |= print_group(egid, " ");
}
/* We are supplying largish buffer, trying
* to not run get_groups() twice. That might be slow
* ("user database in remote SQL server" case) */
-@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char
+@@ -183,6 +190,7 @@ int id_main(int argc UNUSED_PARAM, char
}
if (ENABLE_FEATURE_CLEAN_UP)
free(groups);
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
-@@ -129,7 +129,7 @@ int insmod_main(int argc, char **argv) M
+@@ -133,7 +133,7 @@ int insmod_main(int argc, char **argv) M
int insmod_main(int argc UNUSED_PARAM, char **argv)
{
char *filename;
/* Compat note:
* 2.6 style insmod has no options and required filename
-@@ -139,10 +139,8 @@ int insmod_main(int argc UNUSED_PARAM, c
+@@ -143,10 +143,8 @@ int insmod_main(int argc UNUSED_PARAM, c
* or in $MODPATH.
*/
filename = *++argv;
if (!filename)
-@@ -153,7 +151,7 @@ int insmod_main(int argc UNUSED_PARAM, c
+@@ -157,7 +155,7 @@ int insmod_main(int argc UNUSED_PARAM, c
goto done;
rc = bb_init_module(g_filename, parse_cmdline_module_options(argv));