include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
-PKG_VERSION:=1.19.2
-PKG_RELEASE:=3
+PKG_VERSION:=1.19.3
+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:=50267054345f1a0b77fe65f6e0e5ba29
+PKG_MD5SUM:=c3938e1ac59602387009bbf1dd1af7f6
PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc
PKG_BUILD_PARALLEL:=1
config BUSYBOX_CONFIG_MODINFO
bool "modinfo"
default n
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Show information about a Linux Kernel module
+++ /dev/null
---- a/include/platform.h
-+++ b/include/platform.h
-@@ -433,7 +433,7 @@ typedef unsigned smalluint;
- # undef HAVE_STPCPY
- #endif
-
--#if defined(ANDROID)
-+#if defined(ANDROID) || defined(__ANDROID__)
- # undef HAVE_DPRINTF
- # undef HAVE_GETLINE
- # undef HAVE_STPCPY
+++ /dev/null
---- a/applets/applet_tables.c
-+++ b/applets/applet_tables.c
-@@ -80,8 +80,15 @@ int main(int argc, char **argv)
-
- printf("#define NUM_APPLETS %u\n", NUM_APPLETS);
- if (NUM_APPLETS == 1) {
-+ char *dash_to_underscore, *p;
- printf("#define SINGLE_APPLET_STR \"%s\"\n", applets[0].name);
-- printf("#define SINGLE_APPLET_MAIN %s_main\n", applets[0].name);
-+ /* Example: "ether-wake" -> "ether_wake" */
-+ p = dash_to_underscore = strdup(applets[0].name);
-+ p--;
-+ while (*++p)
-+ if (*p == '-')
-+ *p = '_';
-+ printf("#define SINGLE_APPLET_MAIN %s_main\n", dash_to_underscore);
- }
- printf("\n");
-
+++ /dev/null
---- a/loginutils/chpasswd.c
-+++ b/loginutils/chpasswd.c
-@@ -33,9 +33,8 @@ static const char chpasswd_longopts[] AL
- int chpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int chpasswd_main(int argc UNUSED_PARAM, char **argv)
- {
-- char *name, *pass;
-- char salt[sizeof("$N$XXXXXXXX")];
-- int opt, rc;
-+ char *name;
-+ int opt;
-
- if (getuid() != 0)
- bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
-@@ -45,6 +44,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
- opt = getopt32(argv, "em");
-
- while ((name = xmalloc_fgetline(stdin)) != NULL) {
-+ char *free_me;
-+ char *pass;
-+ int rc;
-+
- pass = strchr(name, ':');
- if (!pass)
- bb_error_msg_and_die("missing new password");
-@@ -52,7 +55,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
-
- xuname2uid(name); /* dies if there is no such user */
-
-+ free_me = NULL;
- if (!(opt & OPT_ENC)) {
-+ char salt[sizeof("$N$XXXXXXXX")];
-+
- crypt_make_salt(salt, 1);
- if (opt & OPT_MD5) {
- salt[0] = '$';
-@@ -60,7 +66,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
- salt[2] = '$';
- crypt_make_salt(salt + 3, 4);
- }
-- pass = pw_encrypt(pass, salt, 0);
-+ free_me = pass = pw_encrypt(pass, salt, 0);
- }
-
- /* This is rather complex: if user is not found in /etc/shadow,
-@@ -81,8 +87,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
- bb_info_msg("Password for '%s' changed", name);
- logmode = LOGMODE_STDIO;
- free(name);
-- if (!(opt & OPT_ENC))
-- free(pass);
-+ free(free_me);
- }
- return EXIT_SUCCESS;
- }
+++ /dev/null
---- a/miscutils/crond.c
-+++ b/miscutils/crond.c
-@@ -861,7 +861,8 @@ int crond_main(int argc UNUSED_PARAM, ch
-
- /* "-b after -f is ignored", and so on for every pair a-b */
- opt_complementary = "f-b:b-f:S-L:L-S" IF_FEATURE_CROND_D(":d-l")
-- ":l+:d+"; /* -l and -d have numeric param */
-+ /* -l and -d have numeric param */
-+ ":l+" IF_FEATURE_CROND_D(":d+");
- opts = getopt32(argv, "l:L:fbSc:" IF_FEATURE_CROND_D("d:"),
- &G.log_level, &G.log_filename, &G.crontab_dir_name
- IF_FEATURE_CROND_D(,&G.log_level));
--- /dev/null
+--- a/loginutils/getty.c
++++ b/loginutils/getty.c
+@@ -271,7 +271,9 @@ static void termios_init(int speed)
+ #ifdef CMSPAR
+ | CMSPAR /* mark or space parity */
+ #endif
++#ifdef CBAUD
+ | CBAUD /* (output) baud rate */
++#endif
+ #ifdef CBAUDEX
+ | CBAUDEX /* (output) baud rate */
+ #endif
+++ /dev/null
---- a/networking/inetd.c
-+++ b/networking/inetd.c
-@@ -1278,6 +1278,7 @@ int inetd_main(int argc UNUSED_PARAM, ch
- sep->se_count = 0;
- rearm_alarm(); /* will revive it in RETRYTIME sec */
- restore_sigmask(&omask);
-+ maybe_close(new_udp_fd);
- maybe_close(accepted_fd);
- continue; /* -> check next fd in fd set */
- }
-@@ -1298,17 +1299,18 @@ int inetd_main(int argc UNUSED_PARAM, ch
- bb_perror_msg("vfork"+1);
- sleep(1);
- restore_sigmask(&omask);
-+ maybe_close(new_udp_fd);
- maybe_close(accepted_fd);
- continue; /* -> check next fd in fd set */
- }
- if (pid == 0)
- pid--; /* -1: "we did fork and we are child" */
- }
-- /* if pid == 0 here, we never forked */
-+ /* if pid == 0 here, we didn't fork */
-
- if (pid > 0) { /* parent */
- if (sep->se_wait) {
-- /* tcp wait: we passed listening socket to child,
-+ /* wait: we passed socket to child,
- * will wait for child to terminate */
- sep->se_wait = pid;
- remove_fd_from_set(sep->se_fd);
-@@ -1345,9 +1347,13 @@ int inetd_main(int argc UNUSED_PARAM, ch
- setsid();
- /* "nowait" udp */
- if (new_udp_fd >= 0) {
-- len_and_sockaddr *lsa = xzalloc_lsa(sep->se_family);
-+ len_and_sockaddr *lsa;
-+ int r;
-+
-+ close(new_udp_fd);
-+ lsa = xzalloc_lsa(sep->se_family);
- /* peek at the packet and remember peer addr */
-- int r = recvfrom(ctrl, NULL, 0, MSG_PEEK|MSG_DONTWAIT,
-+ r = recvfrom(ctrl, NULL, 0, MSG_PEEK|MSG_DONTWAIT,
- &lsa->u.sa, &lsa->len);
- if (r < 0)
- goto do_exit1;
--- /dev/null
+--- a/modutils/modinfo.c
++++ b/modutils/modinfo.c
+@@ -13,6 +13,7 @@
+ //config:config MODINFO
+ //config: bool "modinfo"
+ //config: default y
++//config: select PLATFORM_LINUX
+ //config: help
+ //config: Show information about a Linux Kernel module
+
+++ /dev/null
---- a/sysklogd/syslogd.c
-+++ b/sysklogd/syslogd.c
-@@ -278,7 +278,7 @@ static void parse_syslogdcfg(const char
- parser_t *parser;
-
- parser = config_open2(file ? file : "/etc/syslog.conf",
-- file ? xfopen_for_read : fopen_or_warn_stdin);
-+ file ? xfopen_for_read : fopen_for_read);
- if (!parser)
- /* didn't find default /etc/syslog.conf */
- /* proceed as if we built busybox without config support */
-@@ -678,7 +678,7 @@ static void timestamp_and_log(int pri, c
- if (LOG_PRI(pri) < G.logLevel) {
- #if ENABLE_FEATURE_IPC_SYSLOG
- if ((option_mask32 & OPT_circularlog) && G.shbuf) {
-- log_to_shmem(msg);
-+ log_to_shmem(G.printbuf);
- return;
- }
- #endif
+++ /dev/null
---- a/coreutils/tail.c
-+++ b/coreutils/tail.c
-@@ -203,7 +203,7 @@ int tail_main(int argc, char **argv)
- int fd = fds[i];
-
- if (ENABLE_FEATURE_FANCY_TAIL && fd < 0)
-- continue; /* may happen with -E */
-+ continue; /* may happen with -F */
-
- if (nfiles > header_threshhold) {
- tail_xprint_header(fmt, argv[i]);
-@@ -252,14 +252,14 @@ int tail_main(int argc, char **argv)
- * Used only by +N code ("start from Nth", 1-based): */
- seen = 1;
- newlines_seen = 0;
-- while ((nread = tail_read(fd, buf, tailbufsize-taillen)) > 0) {
-+ while ((nread = tail_read(fd, buf, tailbufsize - taillen)) > 0) {
- if (G.from_top) {
- int nwrite = nread;
- if (seen < count) {
- /* We need to skip a few more bytes/lines */
- if (COUNT_BYTES) {
- nwrite -= (count - seen);
-- seen = count;
-+ seen += nread;
- } else {
- char *s = buf;
- do {
---- a/testsuite/tail.tests
-+++ b/testsuite/tail.tests
-@@ -14,4 +14,12 @@ testing "tail: +N with N > file length"
- "0\n" \
- "" "qw"
-
-+testing "tail: -c +N with largish N" \
-+ "
-+ dd if=/dev/zero bs=16k count=1 2>/dev/null | tail -c +8200 | wc -c;
-+ dd if=/dev/zero bs=16k count=1 2>/dev/null | tail -c +8208 | wc -c;
-+ " \
-+ "8185\n8177\n" \
-+ "" ""
-+
- exit $FAILCOUNT
+++ /dev/null
---- a/networking/tftp.c
-+++ b/networking/tftp.c
-@@ -813,7 +813,8 @@ int tftpd_main(int argc UNUSED_PARAM, ch
- goto err;
- }
- mode = local_file + strlen(local_file) + 1;
-- if (mode >= block_buf + result || strcmp(mode, "octet") != 0) {
-+ /* RFC 1350 says mode string is case independent */
-+ if (mode >= block_buf + result || strcasecmp(mode, "octet") != 0) {
- goto err;
- }
- # if ENABLE_FEATURE_TFTP_BLOCKSIZE