From 37f930f3a9a0303ccd731b384e6b12fd8eb53505 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Thu, 14 Jun 2012 19:28:15 +0200 Subject: [PATCH] busybox: update upstream patches Signed-off-by: Stephan Raue --- .../busybox/patches/busybox-1.20.1-ash.patch | 12 +++ .../patches/busybox-1.20.1-ifupdown.patch | 75 +++++++++++++++++ .../busybox/patches/busybox-1.20.1-man.patch | 34 ++++++++ .../busybox/patches/busybox-1.20.1-ps.patch | 84 +++++++++++++++++++ .../busybox/patches/busybox-1.20.1-tar.patch | 11 +++ 5 files changed, 216 insertions(+) create mode 100644 packages/sysutils/busybox/patches/busybox-1.20.1-ash.patch create mode 100644 packages/sysutils/busybox/patches/busybox-1.20.1-ifupdown.patch create mode 100644 packages/sysutils/busybox/patches/busybox-1.20.1-man.patch create mode 100644 packages/sysutils/busybox/patches/busybox-1.20.1-ps.patch create mode 100644 packages/sysutils/busybox/patches/busybox-1.20.1-tar.patch diff --git a/packages/sysutils/busybox/patches/busybox-1.20.1-ash.patch b/packages/sysutils/busybox/patches/busybox-1.20.1-ash.patch new file mode 100644 index 0000000000..a012a7063a --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.20.1-ash.patch @@ -0,0 +1,12 @@ +--- busybox-1.20.1/shell/ash.c ++++ busybox-1.20.1-ash/shell/ash.c +@@ -6846,8 +6846,7 @@ evalvar(char *p, int flags, struct strli + patloc = expdest - (char *)stackblock(); + if (NULL == subevalvar(p, /* varname: */ NULL, patloc, subtype, + startloc, varflags, +-//TODO: | EXP_REDIR too? All other such places do it too +- /* quotes: */ flags & (EXP_FULL | EXP_CASE), ++ /* quotes: */ flags & (EXP_FULL | EXP_CASE | EXP_REDIR), + var_str_list) + ) { + int amount = expdest - ( diff --git a/packages/sysutils/busybox/patches/busybox-1.20.1-ifupdown.patch b/packages/sysutils/busybox/patches/busybox-1.20.1-ifupdown.patch new file mode 100644 index 0000000000..b2a945614a --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.20.1-ifupdown.patch @@ -0,0 +1,75 @@ +--- busybox-1.20.1/networking/ifupdown.c ++++ busybox-1.20.1-ifupdown/networking/ifupdown.c +@@ -140,8 +140,6 @@ static const char keywords_up_down[] ALI + "up\0" + "down\0" + "pre-up\0" +- "pre-down\0" +- "post-up\0" + "post-down\0" + ; + +@@ -895,6 +893,11 @@ static struct interfaces_file_t *read_in + if (rest_of_line[0] == '\0') + bb_error_msg_and_die("option with empty value \"%s\"", buf); + ++ if (strcmp(first_word, "post-up") == 0) ++ first_word += 5; /* "up" */ ++ else if (strcmp(first_word, "pre-down") == 0) ++ first_word += 4; /* "down" */ ++ + /* If not one of "up", "down",... words... */ + if (index_in_strings(keywords_up_down, first_word) < 0) { + int i; +@@ -963,7 +966,7 @@ static char *setlocalenv(const char *for + return result; + } + +-static void set_environ(struct interface_defn_t *iface, const char *mode) ++static void set_environ(struct interface_defn_t *iface, const char *mode, const char *opt) + { + int i; + char **pp; +@@ -976,7 +979,7 @@ static void set_environ(struct interface + } + + /* note: last element will stay NULL: */ +- G.my_environ = xzalloc(sizeof(char *) * (iface->n_options + 6)); ++ G.my_environ = xzalloc(sizeof(char *) * (iface->n_options + 7)); + pp = G.my_environ; + + for (i = 0; i < iface->n_options; i++) { +@@ -990,6 +993,7 @@ static void set_environ(struct interface + *pp++ = setlocalenv("%s=%s", "ADDRFAM", iface->address_family->name); + *pp++ = setlocalenv("%s=%s", "METHOD", iface->method->name); + *pp++ = setlocalenv("%s=%s", "MODE", mode); ++ *pp++ = setlocalenv("%s=%s", "PHASE", opt); + if (G.startup_PATH) + *pp++ = setlocalenv("%s=%s", "PATH", G.startup_PATH); + } +@@ -1044,21 +1048,21 @@ static int check(char *str) + static int iface_up(struct interface_defn_t *iface) + { + if (!iface->method->up(iface, check)) return -1; +- set_environ(iface, "start"); ++ set_environ(iface, "start", "pre-up"); + if (!execute_all(iface, "pre-up")) return 0; + if (!iface->method->up(iface, doit)) return 0; ++ set_environ(iface, "start", "post-up"); + if (!execute_all(iface, "up")) return 0; +- if (!execute_all(iface, "post-up")) return 0; + return 1; + } + + static int iface_down(struct interface_defn_t *iface) + { + if (!iface->method->down(iface,check)) return -1; +- set_environ(iface, "stop"); +- if (!execute_all(iface, "pre-down")) return 0; ++ set_environ(iface, "stop", "pre-down"); + if (!execute_all(iface, "down")) return 0; + if (!iface->method->down(iface, doit)) return 0; ++ set_environ(iface, "stop", "post-down"); + if (!execute_all(iface, "post-down")) return 0; + return 1; + } diff --git a/packages/sysutils/busybox/patches/busybox-1.20.1-man.patch b/packages/sysutils/busybox/patches/busybox-1.20.1-man.patch new file mode 100644 index 0000000000..f382e078f4 --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.20.1-man.patch @@ -0,0 +1,34 @@ +--- busybox-1.20.1/miscutils/man.c ++++ busybox-1.20.1-man/miscutils/man.c +@@ -129,27 +129,21 @@ static int show_manpage(const char *page + #endif + #if ENABLE_FEATURE_SEAMLESS_XZ + strcpy(ext, "xz"); +- if (run_pipe(pager, man_filename, man, level)) ++ if (run_pipe(pager, filename_with_zext, man, level)) + return 1; + #endif + #if ENABLE_FEATURE_SEAMLESS_BZ2 + strcpy(ext, "bz2"); +- if (run_pipe(pager, man_filename, man, level)) ++ if (run_pipe(pager, filename_with_zext, man, level)) + return 1; + #endif + #if ENABLE_FEATURE_SEAMLESS_GZ + strcpy(ext, "gz"); +- if (run_pipe(pager, man_filename, man, level)) ++ if (run_pipe(pager, filename_with_zext, man, level)) + return 1; + #endif + +-#if SEAMLESS_COMPRESSION +- ext[-1] = '\0'; +-#endif +- if (run_pipe(pager, man_filename, man, level)) +- return 1; +- +- return 0; ++ return run_pipe(pager, man_filename, man, level); + } + + int man_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; diff --git a/packages/sysutils/busybox/patches/busybox-1.20.1-ps.patch b/packages/sysutils/busybox/patches/busybox-1.20.1-ps.patch new file mode 100644 index 0000000000..c8e329ec3c --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.20.1-ps.patch @@ -0,0 +1,84 @@ +--- busybox-1.20.1/procps/ps.c ++++ busybox-1.20.1-ps/procps/ps.c +@@ -69,6 +69,31 @@ + /* Absolute maximum on output line length */ + enum { MAX_WIDTH = 2*1024 }; + ++#if ENABLE_FEATURE_PS_TIME || ENABLE_FEATURE_PS_LONG ++static long get_uptime(void) ++{ ++#ifdef __linux__ ++ struct sysinfo info; ++ if (sysinfo(&info) < 0) ++ return 0; ++ return info.uptime; ++#elif 1 ++ char buf[64]; ++ long uptime; ++ if (open_read_close("/proc/uptime", buf, sizeof(buf)) <= 0) ++ bb_perror_msg_and_die("can't read %s", "/proc/uptime"); ++ buf[sizeof(buf)-1] = '\0'; ++ sscanf(buf, "%l", &uptime); ++ return uptime; ++#else ++ struct timespec ts; ++ if (clock_gettime(CLOCK_MONOTONIC, &ts) < 0) ++ return 0; ++ return ts.tv_sec; ++#endif ++} ++#endif ++ + #if ENABLE_DESKTOP + + #include /* for times() */ +@@ -197,8 +222,6 @@ static inline unsigned get_HZ_by_waiting + + static unsigned get_kernel_HZ(void) + { +- //char buf[64]; +- struct sysinfo info; + + if (kernel_HZ) + return kernel_HZ; +@@ -208,12 +231,7 @@ static unsigned get_kernel_HZ(void) + if (kernel_HZ == (unsigned)-1) + kernel_HZ = get_HZ_by_waiting(); + +- //if (open_read_close("/proc/uptime", buf, sizeof(buf)) <= 0) +- // bb_perror_msg_and_die("can't read %s", "/proc/uptime"); +- //buf[sizeof(buf)-1] = '\0'; +- ///sscanf(buf, "%llu", &seconds_since_boot); +- sysinfo(&info); +- seconds_since_boot = info.uptime; ++ seconds_since_boot = get_uptime(); + + return kernel_HZ; + } +@@ -635,7 +653,7 @@ int ps_main(int argc UNUSED_PARAM, char + }; + #if ENABLE_FEATURE_PS_LONG + time_t now = now; +- struct sysinfo info; ++ long uptime; + #endif + int opts = 0; + /* If we support any options, parse argv */ +@@ -695,7 +713,7 @@ int ps_main(int argc UNUSED_PARAM, char + puts("S UID PID PPID VSZ RSS TTY STIME TIME CMD"); + #if ENABLE_FEATURE_PS_LONG + now = time(NULL); +- sysinfo(&info); ++ uptime = get_uptime(); + #endif + } + else { +@@ -727,7 +745,7 @@ int ps_main(int argc UNUSED_PARAM, char + char tty[2 * sizeof(int)*3 + 2]; + char *endp; + unsigned sut = (p->stime + p->utime) / 100; +- unsigned elapsed = info.uptime - (p->start_time / 100); ++ unsigned elapsed = uptime - (p->start_time / 100); + time_t start = now - elapsed; + struct tm *tm = localtime(&start); + diff --git a/packages/sysutils/busybox/patches/busybox-1.20.1-tar.patch b/packages/sysutils/busybox/patches/busybox-1.20.1-tar.patch new file mode 100644 index 0000000000..4129b6517f --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-1.20.1-tar.patch @@ -0,0 +1,11 @@ +--- busybox-1.20.1/archival/libarchive/get_header_tar.c ++++ busybox-1.20.1-tar/archival/libarchive/get_header_tar.c +@@ -84,7 +84,7 @@ static unsigned long long getOctal(char + first >>= 1; /* now 7th bit = 6th bit */ + v = first; /* sign-extend 8 bits to 64 */ + while (--len != 0) +- v = (v << 8) + (unsigned char) *str++; ++ v = (v << 8) + (uint8_t) *++str; + } + return v; + }