# HG changeset patch # User Pascal Bellard # Date 1278528953 -7200 # Node ID 1ed09465c0ae672304efd4fcecac2d40429022ec # Parent 0c0324ebd2d3577c2dfe64721ed2470b8a8f6f96 busybox: update patches diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox-pam/receipt --- a/busybox-pam/receipt Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox-pam/receipt Wed Jul 07 20:55:53 2010 +0200 @@ -28,6 +28,7 @@ tar.u stat.u ris.u +depmod.u zmodules.u EOT cp $WOK/$SOURCE/stuff/$SOURCE-$VERSION.config .config diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox-static/receipt --- a/busybox-static/receipt Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox-static/receipt Wed Jul 07 20:55:53 2010 +0200 @@ -27,6 +27,7 @@ tar.u stat.u ris.u +depmod.u zmodules.u EOT cp ../stuff/$SOURCE-$VERSION.config .config diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/receipt --- a/busybox/receipt Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/receipt Wed Jul 07 20:55:53 2010 +0200 @@ -26,6 +26,7 @@ tar.u stat.u ris.u +depmod.u zmodules.u EOT cp ../stuff/$PACKAGE-$VERSION.config .config diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.11.0-dhcpc.u --- a/busybox/stuff/busybox-1.11.0-dhcpc.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- busybox-1.11.0/networking/udhcp/dhcpc.c -+++ busybox-1.11.0/networking/udhcp/dhcpc.c -@@ -356,7 +356,11 @@ - if (packet_num == 0) - xid = random_xid(); - -- send_discover(xid, requested_ip); /* broadcast */ -+ if (send_discover(xid, requested_ip) < 0) { /* broadcast */ -+ bb_info_msg("No network, failing"); -+ retval = 1; -+ goto ret; -+ } - - timeout = discover_timeout; - packet_num++; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.11.0-tar.u --- a/busybox/stuff/busybox-1.11.0-tar.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -Accept --wildcards argument ---- busybox-1.11.0/archival/tar.c -+++ busybox-1.11.0/archival/tar.c -@@ -790,2 +790,3 @@ - # endif -+ "wildcards\0" No_argument "\xfc" - "no-same-owner\0" No_argument "\xfd" diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-basename.u --- a/busybox/stuff/busybox-1.12.0-basename.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -Basename may spuriously break build using 'set -e' ---- busybox-1.12.0/coreutils/basename.c -+++ busybox-1.12.0/coreutils/basename.c -@@ -48,5 +48,6 @@ - - /* puts(s) will do, but we can do without stdio this way: */ - s[m++] = '\n'; -- return full_write(STDOUT_FILENO, s, m) == (ssize_t)m; -+ full_write(STDOUT_FILENO, s, m); -+ return 0; - } diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-cpio-mkdir.u --- a/busybox/stuff/busybox-1.12.0-cpio-mkdir.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ ---- busybox-1.12.0/archival/libunarchive/data_extract_all.c -+++ busybox-1.12.0/archival/libunarchive/data_extract_all.c -@@ -38,7 +38,8 @@ void FAST_FUNC data_extract_all(archive_ - } - } - else if (statbuf.st_mtime <= file_header->mtime) { -- if (!(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET)) { -+ if (!(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET) && -+ (file_header->mode & S_IFMT) != S_IFDIR) { - bb_error_msg("%s not created: newer or " - "same age file exists", file_header->name); - } -@@ -77,7 +78,7 @@ void FAST_FUNC data_extract_all(archive_ - } - case S_IFDIR: - res = mkdir(file_header->name, file_header->mode); -- if ((res == -1) && (errno != EISDIR) -+ if ((res == -1) && (errno != EISDIR) && (errno != EEXIST) - && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET) - ) { - bb_perror_msg("cannot make dir %s", file_header->name); - ---- busybox-1.12.0/archival/cpio.c -+++ busybox-1.12.0/archival/cpio.c -@@ -30,6 +30,7 @@ - * It's ok to exit instead of return. */ - static int cpio_o(void) - { -+ static char trailer[] = "TRAILER!!!"; - struct name_s { - struct name_s *next; - char name[1]; -@@ -119,7 +120,7 @@ - } else { - /* If no (more) hardlinks to output, - * output "trailer" entry */ -- name = "TRAILER!!!"; -+ name = trailer; - /* st.st_size == 0 is a must, but for uniformity - * in the output, we zero out everything */ - memset(&st, 0, sizeof(st)); -@@ -167,7 +168,7 @@ - } - - if (!line) { -- if (links) -+ if (name != trailer) - goto next_link; - /* TODO: GNU cpio pads trailer to 512 bytes, do we want that? */ - return EXIT_SUCCESS; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-dhcpc.u --- a/busybox/stuff/busybox-1.12.0-dhcpc.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.11.0-dhcpc.u \ No newline at end of file diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-dpkg_deb.u --- a/busybox/stuff/busybox-1.12.0-dpkg_deb.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ ---- busybox-1.12.0/archival/dpkg_deb.c -+++ busybox-1.12.0/archival/dpkg_deb.c -@@ -41,6 +41,11 @@ - llist_add_to(&control_tar_llist, (char*)"control.tar.bz2"); - #endif - -+#if ENABLE_FEATURE_SEAMLESS_LZMA -+ llist_add_to(&(ar_archive->accept), (char*)"data.tar.lzma"); -+ llist_add_to(&control_tar_llist, (char*)"control.tar.lzma"); -+#endif -+ - opt_complementary = "c--efXx:e--cfXx:f--ceXx:X--cefx:x--cefX"; - opt = getopt32(argv, "cefXx"); - argv += optind; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-install.u --- a/busybox/stuff/busybox-1.12.0-install.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ ---- busybox-1.12.0/coreutils/install.c -+++ busybox-1.12.0/coreutils/install.c -@@ -93,9 +93,10 @@ - OPT_GROUP = 1 << 6, - OPT_MODE = 1 << 7, - OPT_OWNER = 1 << 8, -+ OPT_D = 1 << 9, - #if ENABLE_SELINUX -- OPT_SET_SECURITY_CONTEXT = 1 << 9, -- OPT_PRESERVE_SECURITY_CONTEXT = 1 << 10, -+ OPT_SET_SECURITY_CONTEXT = 1 << 10, -+ OPT_PRESERVE_SECURITY_CONTEXT = 1 << 11, - #endif - }; - -@@ -106,7 +107,7 @@ - /* -c exists for backwards compatibility, it's needed */ - /* -v is ignored ("print name of each created directory") */ - /* -b is ignored ("make a backup of each existing destination file") */ -- flags = getopt32(argv, "cvb" "dpsg:m:o:" USE_SELINUX("Z:"), -+ flags = getopt32(argv, "cvb" "dpsg:m:o:D" USE_SELINUX("Z:"), - &gid_str, &mode_str, &uid_str USE_SELINUX(, &scontext)); - argc -= optind; - argv += optind; -@@ -161,6 +162,12 @@ - } else { - if (isdir) - dest = concat_path_file(last, basename(arg)); -+ if (flags & OPT_D) { -+ char *dir = xstrdup(dest); -+ bb_make_directory(dirname(dir), 0755, FILEUTILS_RECUR); -+ if (ENABLE_FEATURE_CLEAN_UP) -+ free(dir); -+ } - if (copy_file(arg, dest, copy_flags)) { - /* copy is not made */ - ret = EXIT_FAILURE; - ---- busybox-1.12.0/include/usage.h -+++ busybox-1.12.0/include/usage.h -@@ -1869,12 +1869,13 @@ - ) - - #define install_trivial_usage \ -- "[-cgmops] [sources] dest|directory" -+ "[-cdDgmops] [sources] dest|directory" - #define install_full_usage "\n\n" \ - "Copy files and set attributes\n" \ - "\nOptions:" \ - "\n -c Copy the file, default" \ - "\n -d Create directories" \ -+ "\n -D Create target path" \ - "\n -g Set group ownership" \ - "\n -m Set permissions" \ - "\n -o Set ownership" \ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-ionice.u --- a/busybox/stuff/busybox-1.12.0-ionice.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ ---- busybox-1.12.0/include/applets.h 2008-12-16 22:32:03.000000000 +0100 -+++ busybox-1.12.0/include/applets.h 2008-12-16 22:34:06.000000000 +0100 -@@ -191,6 +191,7 @@ - USE_INSMOD(APPLET(insmod, _BB_DIR_SBIN, _BB_SUID_NEVER)) - USE_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, _BB_DIR_SBIN, _BB_SUID_NEVER, modprobe)) - USE_INSTALL(APPLET(install, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) -+USE_IONICE(APPLET(ionice, _BB_DIR_BIN, _BB_SUID_NEVER)) - #if ENABLE_FEATURE_IP_ADDRESS \ - || ENABLE_FEATURE_IP_ROUTE \ - || ENABLE_FEATURE_IP_LINK \ - - ---- busybox-1.12.0/miscutils/Config.in 2008-12-14 23:41:16.000000000 +0100 -+++ busybox-1.12.0/miscutils/Config.in 2008-12-14 23:27:56.000000000 +0100 -@@ -223,6 +223,13 @@ - "NN" (ASCII decimal number) - percentage to show on progress bar - "exit" - well you guessed it - -+config IONICE -+ bool "ionice" -+ default n -+ help -+ get/set program io scheduling class and priority -+ Requires kernel >= 2.6.13 -+ - config INOTIFYD - bool "inotifyd" - default n - ---- busybox-1.12.0/miscutils/Kbuild 2008-12-14 23:22:52.000000000 +0100 -+++ busybox-1.12.0/miscutils/Kbuild 2008-12-14 23:22:27.000000000 +0100 -@@ -16,4 +16,5 @@ - lib-$(CONFIG_EJECT) += eject.o - lib-$(CONFIG_FBSPLASH) += fbsplash.o -+lib-$(CONFIG_IONICE) += ionice.o - lib-$(CONFIG_HDPARM) += hdparm.o - lib-$(CONFIG_INOTIFYD) += inotifyd.o - ---- busybox-1.12.0/include/usage.h 2008-12-16 22:31:43.000000000 +0100 -+++ busybox-1.12.0/include/usage.h 2008-12-16 22:32:14.000000000 +0100 -@@ -1884,6 +1884,16 @@ - USE_SELINUX( \ - "\n -Z Set security context of copy" \ - ) -+ -+#define ionice_trivial_usage \ -+ "[-c 1-3] [-n 0-7] [-p PID] [COMMAND [ARG...]]" -+#define ionice_full_usage "\n\n" \ -+ "change io scheduling class and priority\n" \ -+ "\nOptions:" \ -+ "\n -c scheduling class. 1=real time 2=best-effort, 3=idle" \ -+ "\n -n Priority " \ -+ "\n -p process pid " -+ - - /* would need to make the " | " optional depending on more than one selected: */ - #define ip_trivial_usage \ - -diff --git busybox-1.12.0/miscutils/ionice.c busybox-1.12.0/miscutils/ionice.c -new file mode 100644 -index 0000000..88d771c ---- busybox-1.12.0/dev/null -+++ busybox-1.12.0/miscutils/ionice.c -@@ -0,0 +1,99 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * ionice implementation for busybox based on linux-utils-ng 2.14 -+ * -+ * Copyright (C) 2008 by -+ * -+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. -+ */ -+ -+#include -+#include -+#include "libbb.h" -+ -+static int ioprio_set(int which, int who, int ioprio) -+{ -+ return syscall(SYS_ioprio_set, which, who, ioprio); -+} -+ -+static int ioprio_get(int which, int who) -+{ -+ return syscall(SYS_ioprio_get, which, who); -+} -+ -+enum { -+ IOPRIO_WHO_PROCESS = 1, -+ IOPRIO_WHO_PGRP, -+ IOPRIO_WHO_USER -+}; -+ -+enum { -+ IOPRIO_CLASS_NONE, -+ IOPRIO_CLASS_RT, -+ IOPRIO_CLASS_BE, -+ IOPRIO_CLASS_IDLE -+}; -+ -+static const char to_prio[] = "none\0realtime\0best-effort\0idle"; -+ -+#define IOPRIO_CLASS_SHIFT 13 -+ -+int ionice_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -+int ionice_main(int argc UNUSED_PARAM, char **argv) -+{ -+ /* Defaults */ -+ int ioclass = 0; -+ int pri = 0; -+ int pid = 0; /* affect own porcess */ -+ int opt; -+ enum { -+ OPT_n = 1, -+ OPT_c = 2, -+ OPT_p = 4, -+ }; -+ -+ /* Numeric params */ -+ opt_complementary = "n+:c+:p+"; -+ /* '+': stop at first non-option */ -+ opt = getopt32(argv, "+n:c:p:", &pri, &ioclass, &pid); -+ argv += optind; -+ -+ if (opt & OPT_c) { -+ if (ioclass > 3) -+ bb_error_msg_and_die("bad class %d", ioclass); -+// Do we need this (compat?)? -+// if (ioclass == IOPRIO_CLASS_NONE) -+// ioclass = IOPRIO_CLASS_BE; -+// if (ioclass == IOPRIO_CLASS_IDLE) { -+// //if (opt & OPT_n) -+// // bb_error_msg("ignoring priority for idle class"); -+// pri = 7; -+// } -+ } -+ -+ if (!(opt & (OPT_n|OPT_c))) { -+ if (!(opt & OPT_p) && *argv) -+ pid = xatoi_u(*argv); -+ -+ pri = ioprio_get(IOPRIO_WHO_PROCESS, pid); -+ if (pri == -1) -+ bb_perror_msg_and_die("ioprio_%cet", 'g'); -+ -+ ioclass = (pri >> IOPRIO_CLASS_SHIFT) & 0x3; -+ pri &= 0xff; -+ printf((ioclass == IOPRIO_CLASS_IDLE) ? "%s\n" : "%s: prio %d\n", -+ nth_string(to_prio, ioclass), pri); -+ } else { -+//printf("pri=%d class=%d val=%x\n", -+//pri, ioclass, pri | (ioclass << IOPRIO_CLASS_SHIFT)); -+ pri |= (ioclass << IOPRIO_CLASS_SHIFT); -+ if (ioprio_set(IOPRIO_WHO_PROCESS, pid, pri) == -1) -+ bb_perror_msg_and_die("ioprio_%cet", 's'); -+ if (*argv) { -+ BB_EXECVP(*argv, argv); -+ bb_simple_perror_msg_and_die(*argv); -+ } -+ } -+ -+ return EXIT_SUCCESS; -+} diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-iptunnel.u --- a/busybox/stuff/busybox-1.12.0-iptunnel.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ ---- busybox-1.12.0/networking/libiproute/iptunnel.c -+++ busybox-1.12.0/networking/libiproute/iptunnel.c -@@ -21,7 +21,47 @@ - #ifndef __constant_htons - #define __constant_htons htons - #endif --#include -+// FYI: #define SIOCDEVPRIVATE 0x89F0 -+ -+/* From linux/if_tunnel.h. #including it proved troublesome -+ * (redefiniton errors due to name collisions in linux/ and net[inet]/) */ -+#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0) -+#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1) -+#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2) -+#define SIOCCHGTUNNEL (SIOCDEVPRIVATE + 3) -+//#define SIOCGETPRL (SIOCDEVPRIVATE + 4) -+//#define SIOCADDPRL (SIOCDEVPRIVATE + 5) -+//#define SIOCDELPRL (SIOCDEVPRIVATE + 6) -+//#define SIOCCHGPRL (SIOCDEVPRIVATE + 7) -+#define GRE_CSUM __constant_htons(0x8000) -+//#define GRE_ROUTING __constant_htons(0x4000) -+#define GRE_KEY __constant_htons(0x2000) -+#define GRE_SEQ __constant_htons(0x1000) -+//#define GRE_STRICT __constant_htons(0x0800) -+//#define GRE_REC __constant_htons(0x0700) -+//#define GRE_FLAGS __constant_htons(0x00F8) -+//#define GRE_VERSION __constant_htons(0x0007) -+struct ip_tunnel_parm { -+ char name[IFNAMSIZ]; -+ int link; -+ uint16_t i_flags; -+ uint16_t o_flags; -+ uint32_t i_key; -+ uint32_t o_key; -+ struct iphdr iph; -+}; -+/* SIT-mode i_flags */ -+//#define SIT_ISATAP 0x0001 -+//struct ip_tunnel_prl { -+// uint32_t addr; -+// uint16_t flags; -+// uint16_t __reserved; -+// uint32_t datalen; -+// uint32_t __reserved2; -+// /* data follows */ -+//}; -+///* PRL flags */ -+//#define PRL_DEFAULT 0x0001 - - #include "ip_common.h" /* #include "libbb.h" is inside */ - #include "rt_names.h" diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-mkswap.u --- a/busybox/stuff/busybox-1.12.0-mkswap.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -Without label, Gparted call mkswap -L '' ---- busybox-1.12.0/util-linux/mkswap.c -+++ busybox-1.12.0/util-linux/mkswap.c -@@ -92,14 +92,14 @@ - { - int fd, pagesize; - off_t len; -+ char *label = NULL; - -- // No options supported. -- -- if (argc != 2) bb_show_usage(); -+ getopt32(argv, "L:", &label); -+ argv += optind; - - // Figure out how big the device is and announce our intentions. - -- fd = xopen(argv[1], O_RDWR); -+ fd = xopen(argv[0], O_RDWR); - /* fdlength was reported to be unreliable - use seek */ - len = xlseek(fd, 0, SEEK_END); - #if ENABLE_SELINUX -@@ -119,6 +119,12 @@ - - xlseek(fd, 1024, SEEK_SET); - xwrite(fd, hdr, NWORDS * 4); -+ if (label) { -+ if (strlen(label) > 15) -+ label[15] = 0; -+ xlseek(fd, 1024 + 28, SEEK_SET); -+ xwrite(fd, label, strlen(label)); -+ } - xlseek(fd, pagesize - 10, SEEK_SET); - xwrite(fd, SWAPSPACE2, 10); - fsync(fd); diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-modinfo.u --- a/busybox/stuff/busybox-1.12.0-modinfo.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ ---- busybox-1.12.0/include/applets.h -+++ busybox-1.12.0/include/applets.h -@@ -251,6 +251,7 @@ USE_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix - USE_MKNOD(APPLET(mknod, _BB_DIR_BIN, _BB_SUID_NEVER)) - USE_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_NEVER)) - USE_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_NEVER)) -+USE_MODINFO(APPLET(modinfo, _BB_DIR_SBIN, _BB_SUID_NEVER)) - USE_MODPROBE(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_NEVER)) - USE_MODPROBE_SMALL(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_NEVER)) - USE_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_NEVER)) - ---- busybox-1.12.0/include/usage.h -+++ busybox-1.12.0/include/usage.h -@@ -2629,6 +2629,20 @@ - " which are the default for alias 'tulip2' overridden by the options 'irq=2 io=0x210'\n\n" \ - " from the command line\n" - -+#define modinfo_trivial_usage \ -+ "[-adlp0] [-F keyword] MODULE" -+#define modinfo_full_usage "\n\n" \ -+ "Options:" \ -+ "\n -a Shortcut for '-F author'" \ -+ "\n -d Shortcut for '-F description'" \ -+ "\n -l Shortcut for '-F license'" \ -+ "\n -p Shortcut for '-F parm'" \ -+ "\n -F keyword Keyword to look for" \ -+ "\n -0 Use \\0 string separator. Not \\n" \ -+ -+#define modinfo_example_usage \ -+ "$ modinfo -F vermagic loop\n" -+ - #define more_trivial_usage \ - "[FILE...]" - #define more_full_usage "\n\n" \ - ---- busybox-1.12.0/modutils/Config.in -+++ busybox-1.12.0/modutils/Config.in -@@ -213,6 +213,12 @@ config FEATURE_MODPROBE_BLACKLIST - hardware autodetection scripts to load modules like evdev, frame - buffer drivers etc. - -+config MODINFO -+ bool "modinfo" -+ default n -+ help -+ Show information about a Linux Kernel module -+ - comment "Options common to multiple modutils" - depends on INSMOD || RMMOD || MODPROBE || LSMOD || DEPMOD - - ---- busybox-1.12.0/modutils/Kbuild -+++ busybox-1.12.0/modutils/Kbuild -@@ -11,3 +11,4 @@ lib-$(CONFIG_LSMOD) += lsmod - lib-$(CONFIG_MODPROBE) += modprobe.o - lib-$(CONFIG_MODPROBE_SMALL) += modprobe-small.o - lib-$(CONFIG_RMMOD) += rmmod.o -+lib-$(CONFIG_MODINFO) += modinfo.o - ---- busybox-1.12.0/modutils/modinfo.c -+++ busybox-1.12.0/modutils/modinfo.c -@@ -0,0 +1,104 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * modinfo - retrieve module info -+ * Copyright (c) 2008 Pascal Bellard -+ * -+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. -+ */ -+ -+#undef _GNU_SOURCE -+#define _GNU_SOURCE -+#include -+#include -+ -+#define ALL_TAGS 0x3F -+ -+enum { -+ ARG_F = (1<<6), /* field name */ -+ ARG_0 = (1<<7) /* \0 as separator */ -+}; -+ -+struct modinfo_env { -+ char **argv; -+ const char **literals; -+ char *field; -+ int tags; -+}; -+ -+static int display(char *data, const char *pattern, int flag) -+{ -+ if (flag) { -+ int n = printf("%s:",pattern); -+ while (n++ < 16) bb_putchar(' '); -+ } -+ return printf("%s%c",data, (option_mask32 & ARG_0) ? '\0' : '\n'); -+} -+ -+static void modinfo(char *name, char *path, void *env) -+{ -+ size_t len; -+ int i, j, length; -+ char *ptr, *the_module; -+ char **argv = ((struct modinfo_env *) env)->argv; -+ const char **literals = ((struct modinfo_env *) env)->literals; -+ const char *field = ((struct modinfo_env *) env)->field; -+ int tags = ((struct modinfo_env *) env)->tags; -+ extern void *xalloc_load_module(const char filename[], size_t *len); -+ -+ for (i = 0; argv[i]; i++) { -+ if (fnmatch(argv[i],name,0) == 0) { -+ if (tags & 1) { /* filename */ -+ display(path,literals[0],1 != tags); -+ } -+ len = MAXINT(ssize_t); -+ the_module = xalloc_load_module(path, &len); -+ if (field) tags |= ALL_TAGS+1; -+ for (j = 1; (1< 0) { -+#if ENABLE_REPLAY -+ if (opt & OPT_t) { -+ newtime = tv.tv_sec + (double) tv.tv_usec / 1000000; -+ fprintf(stderr, "%f %i\n", newtime - oldtime, count); -+ oldtime = newtime; -+ } -+#endif - full_write(STDOUT_FILENO, buf, count); - full_write(outfd, buf, count); -- if (opt & 4) { /* -f */ -+ if (opt & OPT_f) { - fsync(outfd); - } - } -@@ -158,7 +186,7 @@ - restore: - if (attr_ok == 0) - tcsetattr(0, TCSAFLUSH, &tt); -- if (!(opt & 8)) /* not -q */ -+ if (!(opt & OPT_q)) - printf("Script done, file is %s\n", fname); - return EXIT_SUCCESS; - } - ---- busybox-1.12.0/util-linux/Config.in -+++ busybox-1.12.0/util-linux/Config.in -@@ -719,6 +719,13 @@ - help - This allows you to parse /proc/profile for basic profiling. - -+config REPLAY -+ bool "replay" -+ default n -+ help -+ This program replays a typescript, using timing information -+ given by script -t. -+ - config RTCWAKE - bool "rtcwake" - default n - ---- busybox-1.12.0/util-linux/Kbuild -+++ busybox-1.12.0/util-linux/Kbuild -@@ -28,6 +28,7 @@ - lib-$(CONFIG_RDATE) += rdate.o - lib-$(CONFIG_RDEV) += rdev.o - lib-$(CONFIG_READPROFILE) += readprofile.o -+lib-$(CONFIG_REPLAY) += replay.o - lib-$(CONFIG_RTCWAKE) += rtcwake.o - lib-$(CONFIG_SCRIPT) += script.o - lib-$(CONFIG_SETARCH) += setarch.o - ---- busybox-1.12.0/include/applets.h -+++ busybox-1.12.0/include/applets.h -@@ -294,6 +294,7 @@ - USE_REALPATH(APPLET(realpath, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_HALT(APPLET_ODDNAME(reboot, halt, _BB_DIR_SBIN, _BB_SUID_NEVER, reboot)) - USE_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) -+USE_REPLAY(APPLET(replay, _BB_DIR_BIN, _BB_SUID_NEVER)) - USE_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_RESIZE(APPLET(resize, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, _BB_DIR_SBIN, _BB_SUID_NEVER, restorecon)) - ---- busybox-1.12.0/include/usage.h -+++ busybox-1.12.0/include/usage.h -@@ -3244,6 +3244,11 @@ - "\n -g Process group id(s)" \ - "\n -u Process user name(s) and/or id(s)" \ - -+#define replay_trivial_usage \ -+ "timingfile [typescript [divisor]]" -+#define replay_full_usage "\n\n" \ -+ "Play back typescripts, using timing information" -+ - #define reset_trivial_usage \ - "" - #define reset_full_usage "\n\n" \ -@@ -3426,13 +3431,20 @@ - - #define script_trivial_usage \ - "[-afq] [-c COMMAND] [OUTFILE]" --#define script_full_usage "\n\n" \ -+#define script_full_usage_base "\n\n" \ - "Options:" \ - "\n -a Append output" \ - "\n -c Run COMMAND, not shell" \ - "\n -f Flush output after each write" \ - "\n -q Quiet" \ - -+#ifdef USE_REPLAY -+#define script_full_usage script_full_usage_base \ -+ "\n -t Send timing to stderr" -+#else -+#define script_full_usage script_full_usage_base -+#endif -+ - #define sed_trivial_usage \ - "[-efinr] pattern [files...]" - #define sed_full_usage "\n\n" \ - ---- busybox-1.12.0/util-linux/replay.c -+++ busybox-1.12.0/util-linux/replay.c -@@ -0,0 +1,41 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * replay - play back typescripts, using timing information -+ * -+ * pascal.bellard@ads-lu.com -+ * -+ * Licensed under GPLv2 or later, see file License in this tarball for details. -+ * -+ */ -+ -+#include "libbb.h" -+ -+int replay_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -+int replay_main(int argc, char **argv) -+{ -+ const char *script = "typescript"; -+ double delay, factor = 1000000.0; -+ int fd; -+ long count; -+ FILE *tfp; -+ -+ switch (argc) { -+ case 4: factor /= atof(argv[3]); -+ case 3: script = argv[2]; -+ case 2: break; -+ default: -+ bb_show_usage(); -+ } -+ -+ tfp = xfopen_for_read(argv[1]); -+ fd = open(script, O_RDONLY); -+ while (fscanf(tfp, "%lf %ld\n", &delay, &count) == 2) { -+ usleep(delay * factor); -+ bb_copyfd_exact_size(fd, STDOUT_FILENO, count); -+ } -+#if ENABLE_FEATURE_CLEAN_UP -+ close(fd); -+ fclose(tfp); -+#endif -+ return EXIT_SUCCESS; -+} diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-ris.u --- a/busybox/stuff/busybox-1.12.0-ris.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ ---- busybox-1.12.0/networking/tftp.c -+++ busybox-1.12.0/networking/tftp.c -@@ -552,6 +552,63 @@ - #undef tsize - } - -+#if ENABLE_FEATURE_TFTPD_RIS -+#include -+ -+int lookup_entry(const char *comp, char *dest); -+void lookup_file(char *filename); -+ -+int lookup_entry(const char *comp, char *dest) -+{ -+ DIR *dirp; -+ struct dirent *dptr; -+ if (!dest) return 0; -+ dirp = opendir(dest[0] ? dest : "."); -+ while ((dptr = readdir(dirp))) { -+ if (!strcasecmp(dptr->d_name, comp)) { -+ if (dest[0]) strcat(dest, "/"); -+ strcat(dest, dptr->d_name); -+ closedir(dirp); -+ return 1; -+ } -+ } -+ closedir(dirp); -+ return 0; -+} -+ -+void lookup_file(char *filename) -+{ -+ int found = 0; -+ int len = 0; -+ char dest[1024]; -+ char comp[1024]; -+ char *check = filename; -+ char *seek = NULL; -+ -+ dest[0] = 0; -+ check++; -+ while (*check) { -+ seek = strchr(check, '\\'); -+ if (!seek) { -+ if ((*check) && (lookup_entry(check, dest))) -+ found = 1; -+ break; -+ } -+ len = seek - check; -+ memcpy(comp, check, len); -+ comp[len]=0; -+ if (!lookup_entry(comp, dest)) -+ break; -+ check += len + 1; -+ } -+ -+ if (found) { -+ filename[0] = 0; -+ strcat(filename, dest); -+ } -+} -+#endif -+ - #if ENABLE_TFTP - - int tftp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -@@ -680,6 +737,11 @@ - goto err; - } - local_file = block_buf + 2; -+#if ENABLE_FEATURE_TFTPD_RIS -+ if (local_file[0] == '\\') { -+ lookup_file(local_file); -+ } -+#endif - if (local_file[0] == '.' || strstr(local_file, "/.")) { - error_msg = "dot in file name"; - goto err; - ---- busybox-1.12.0/networking/Config.in -+++ busybox-1.12.0/networking/Config.in -@@ -794,6 +794,15 @@ - In other words: it should be run from inetd in nowait mode, - or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR" - -+config FEATURE_TFTPD_RIS -+ bool "Enable \"RIS\" support" -+ default y -+ depends on TFTPD -+ help -+ Add support for the Remote Installation Service. This allows -+ a client to get files starting with \ without respecting case. -+ Each \ will be replaced by a /. -+ - config FEATURE_TFTP_GET - bool "Enable \"get\" command" - default y diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-rpm2cpio.u --- a/busybox/stuff/busybox-1.12.0-rpm2cpio.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -Add bz2 support ---- busybox-1.12.0/archival/rpm2cpio.c -+++ busybox-1.12.0/archival/rpm2cpio.c -@@ -55,6 +55,7 @@ - struct rpm_lead lead; - int rpm_fd; - unsigned char magic[2]; -+ USE_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd); - - if (argc == 1) { - rpm_fd = STDIN_FILENO; -@@ -75,11 +76,19 @@ - skip_header(rpm_fd); - - xread(rpm_fd, &magic, 2); -+ unpack = unpack_gz_stream; - if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) { -- bb_error_msg_and_die("invalid gzip magic"); -+ if (!ENABLE_FEATURE_SEAMLESS_BZ2 -+ || magic[0] != 'B' || magic[1] != 'Z' -+ ) { -+ bb_error_msg_and_die("invalid gzip" -+ USE_FEATURE_SEAMLESS_BZ2("/bzip2") -+ " magic"); -+ } -+ unpack = unpack_bz2_stream; - } - -- if (unpack_gz_stream(rpm_fd, STDOUT_FILENO) < 0) { -+ if (unpack(rpm_fd, STDOUT_FILENO) < 0) { - bb_error_msg("error inflating"); - } - diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-stat.u --- a/busybox/stuff/busybox-1.12.0-stat.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -Add stat -m ---- busybox-1.12.0/coreutils/stat.c -+++ busybox-1.12.0/coreutils/stat.c -@@ -14,12 +14,14 @@ - */ - - #include "libbb.h" -+#include - - /* vars to control behavior */ - #define OPT_FILESYS (1 << 0) - #define OPT_TERSE (1 << 1) - #define OPT_DEREFERENCE (1 << 2) --#define OPT_SELINUX (1 << 3) -+#define OPT_MAP (1 << 3) -+#define OPT_SELINUX (1 << 4) - - #if ENABLE_FEATURE_STAT_FORMAT - typedef bool (*statfunc_ptr)(const char *, const char *); -@@ -345,6 +347,26 @@ static void print_it(const char *masterf - - /* Stat the file system and print what we find. */ - #if !ENABLE_FEATURE_STAT_FORMAT -+#define do_mapfile(filename, format) do_mapfile(filename) -+#endif -+static bool do_mapfile(const char *filename, const char *format) -+{ -+ int i = 0; -+ int fd = xopen(filename, O_RDONLY); -+ -+#if ENABLE_FEATURE_STAT_FORMAT -+ (void) format; -+#endif -+ while (1) { -+ int blk = i++; -+ if (ioctl(fd,FIBMAP,&blk) < 0 || blk == 0) break; -+ printf("%u\n",blk); -+ } -+ return 1; -+} -+ -+/* Stat the file system and print what we find. */ -+#if !ENABLE_FEATURE_STAT_FORMAT - #define do_statfs(filename, format) do_statfs(filename) - #endif - static bool do_statfs(const char *filename, const char *format) -@@ -632,13 +654,15 @@ int stat_main(int argc, char **argv) - int ok = 1; - statfunc_ptr statfunc = do_stat; - -- getopt32(argv, "ftL" -+ getopt32(argv, "ftLm" - USE_SELINUX("Z") - USE_FEATURE_STAT_FORMAT("c:", &format) - ); - - if (option_mask32 & OPT_FILESYS) /* -f */ - statfunc = do_statfs; -+ if (option_mask32 & OPT_MAP) /* -m */ -+ statfunc = do_mapfile; - if (argc == optind) /* files */ - bb_show_usage(); - - ---- busybox-1.12.0/include/usage.h -+++ busybox-1.12.0/include/usage.h -@@ -3746,6 +3746,7 @@ - ) \ - "\n -f Display filesystem status" \ - "\n -L Dereference links" \ -+ "\n -m Display block list" \ - "\n -t Display info in terse form" \ - USE_SELINUX( \ - "\n -Z Print security context" \ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-syslogd.u --- a/busybox/stuff/busybox-1.12.0-syslogd.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- busybox-1.12.0/sysklogd/syslogd.c -+++ busybox-1.12.0/sysklogd/syslogd.c -@@ -44,7 +44,7 @@ - #undef SYSLOGD_MARK - - enum { -- MAX_READ = 256, -+ MAX_READ = 1024, - DNS_WAIT_SEC = 2 * 60, - }; - diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-tar.u --- a/busybox/stuff/busybox-1.12.0-tar.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.11.0-tar.u \ No newline at end of file diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-unlzma.u --- a/busybox/stuff/busybox-1.12.0-unlzma.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,302 +0,0 @@ ---- busybox-1.12.0/archival/libunarchive/decompress_unlzma.c -+++ busybox-1.12.0/archival/libunarchive/decompress_unlzma.c -@@ -14,8 +14,10 @@ - - #if ENABLE_FEATURE_LZMA_FAST - # define speed_inline ALWAYS_INLINE -+# define size_inline - #else - # define speed_inline -+# define size_inline ALWAYS_INLINE - #endif - - -@@ -44,8 +46,8 @@ - #define RC_MODEL_TOTAL_BITS 11 - - --/* Called twice: once at startup and once in rc_normalize() */ --static void rc_read(rc_t *rc) -+/* Called twice: once at startup (LZMA_FAST only) and once in rc_normalize() */ -+static size_inline void rc_read(rc_t *rc) - { - int buffer_size = safe_read(rc->fd, RC_BUFFER, RC_BUFFER_SIZE); - if (buffer_size <= 0) -@@ -54,8 +56,17 @@ - rc->buffer_end = RC_BUFFER + buffer_size; - } - -+/* Called twice, but one callsite is in speed_inline'd rc_is_bit_1() */ -+static void rc_do_normalize(rc_t *rc) -+{ -+ if (rc->ptr >= rc->buffer_end) -+ rc_read(rc); -+ rc->range <<= 8; -+ rc->code = (rc->code << 8) | *rc->ptr++; -+} -+ - /* Called once */ --static rc_t* rc_init(int fd) /*, int buffer_size) */ -+static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */ - { - int i; - rc_t *rc; -@@ -63,17 +74,18 @@ - rc = xmalloc(sizeof(*rc) + RC_BUFFER_SIZE); - - rc->fd = fd; -- /* rc->buffer_size = buffer_size; */ -- rc->buffer_end = RC_BUFFER + RC_BUFFER_SIZE; - rc->ptr = rc->buffer_end; - -- rc->code = 0; -- rc->range = 0xFFFFFFFF; - for (i = 0; i < 5; i++) { -+#if ENABLE_FEATURE_LZMA_FAST - if (rc->ptr >= rc->buffer_end) - rc_read(rc); - rc->code = (rc->code << 8) | *rc->ptr++; -+#else -+ rc_do_normalize(rc); -+#endif - } -+ rc->range = 0xFFFFFFFF; - return rc; - } - -@@ -83,14 +95,6 @@ - free(rc); - } - --/* Called twice, but one callsite is in speed_inline'd rc_is_bit_0_helper() */ --static void rc_do_normalize(rc_t *rc) --{ -- if (rc->ptr >= rc->buffer_end) -- rc_read(rc); -- rc->range <<= 8; -- rc->code = (rc->code << 8) | *rc->ptr++; --} - static ALWAYS_INLINE void rc_normalize(rc_t *rc) - { - if (rc->range < (1 << RC_TOP_BITS)) { -@@ -98,49 +102,30 @@ - } - } - --/* rc_is_bit_0 is called 9 times */ --/* Why rc_is_bit_0_helper exists? -- * Because we want to always expose (rc->code < rc->bound) to optimizer. -- * Thus rc_is_bit_0 is always inlined, and rc_is_bit_0_helper is inlined -- * only if we compile for speed. -- */ --static speed_inline uint32_t rc_is_bit_0_helper(rc_t *rc, uint16_t *p) -+/* rc_is_bit_1 is called 9 times */ -+static speed_inline int rc_is_bit_1(rc_t *rc, uint16_t *p) - { - rc_normalize(rc); - rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS); -- return rc->bound; -+ if (rc->code < rc->bound) { -+ rc->range = rc->bound; -+ *p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS; -+ return 0; -+ } -+ else { -+ rc->range -= rc->bound; -+ rc->code -= rc->bound; -+ *p -= *p >> RC_MOVE_BITS; -+ return 1; -+ } - } --static ALWAYS_INLINE int rc_is_bit_0(rc_t *rc, uint16_t *p) --{ -- uint32_t t = rc_is_bit_0_helper(rc, p); -- return rc->code < t; --} - --/* Called ~10 times, but very small, thus inlined */ --static speed_inline void rc_update_bit_0(rc_t *rc, uint16_t *p) --{ -- rc->range = rc->bound; -- *p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS; --} --static speed_inline void rc_update_bit_1(rc_t *rc, uint16_t *p) --{ -- rc->range -= rc->bound; -- rc->code -= rc->bound; -- *p -= *p >> RC_MOVE_BITS; --} -- - /* Called 4 times in unlzma loop */ --static int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol) -+static speed_inline int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol) - { -- if (rc_is_bit_0(rc, p)) { -- rc_update_bit_0(rc, p); -- *symbol *= 2; -- return 0; -- } else { -- rc_update_bit_1(rc, p); -- *symbol = *symbol * 2 + 1; -- return 1; -- } -+ int ret = rc_is_bit_1(rc, p); -+ *symbol = *symbol * 2 + ret; -+ return ret; - } - - /* Called once */ -@@ -266,13 +251,13 @@ - header.dst_size = SWAP_LE64(header.dst_size); - - if (header.dict_size == 0) -- header.dict_size = 1; -+ header.dict_size++; - - buffer = xmalloc(MIN(header.dst_size, header.dict_size)); - - num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)); - p = xmalloc(num_probs * sizeof(*p)); -- num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp)); -+ num_probs += LZMA_LITERAL - LZMA_BASE_SIZE; - for (i = 0; i < num_probs; i++) - p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1; - -@@ -282,9 +267,8 @@ - int pos_state = (buffer_pos + global_pos) & pos_state_mask; - - prob = p + LZMA_IS_MATCH + (state << LZMA_NUM_POS_BITS_MAX) + pos_state; -- if (rc_is_bit_0(rc, prob)) { -+ if (!rc_is_bit_1(rc, prob)) { - mi = 1; -- rc_update_bit_0(rc, prob); - prob = (p + LZMA_LITERAL - + (LZMA_LIT_SIZE * ((((buffer_pos + global_pos) & literal_pos_mask) << lc) - + (previous_byte >> (8 - lc)) -@@ -340,26 +324,21 @@ - int offset; - uint16_t *prob_len; - -- rc_update_bit_1(rc, prob); - prob = p + LZMA_IS_REP + state; -- if (rc_is_bit_0(rc, prob)) { -- rc_update_bit_0(rc, prob); -+ if (!rc_is_bit_1(rc, prob)) { - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - state = state < LZMA_NUM_LIT_STATES ? 0 : 3; - prob = p + LZMA_LEN_CODER; - } else { -- rc_update_bit_1(rc, prob); -- prob = p + LZMA_IS_REP_G0 + state; -- if (rc_is_bit_0(rc, prob)) { -- rc_update_bit_0(rc, prob); -+ prob += LZMA_IS_REP_G0 - LZMA_IS_REP; -+ if (!rc_is_bit_1(rc, prob)) { - prob = (p + LZMA_IS_REP_0_LONG - + (state << LZMA_NUM_POS_BITS_MAX) - + pos_state - ); -- if (rc_is_bit_0(rc, prob)) { -- rc_update_bit_0(rc, prob); -+ if (!rc_is_bit_1(rc, prob)) { - - state = state < LZMA_NUM_LIT_STATES ? 9 : 11; - #if ENABLE_FEATURE_LZMA_FAST -@@ -372,25 +351,16 @@ - len = 1; - goto string; - #endif -- } else { -- rc_update_bit_1(rc, prob); - } - } else { - uint32_t distance; - -- rc_update_bit_1(rc, prob); -- prob = p + LZMA_IS_REP_G1 + state; -- if (rc_is_bit_0(rc, prob)) { -- rc_update_bit_0(rc, prob); -- distance = rep1; -- } else { -- rc_update_bit_1(rc, prob); -- prob = p + LZMA_IS_REP_G2 + state; -- if (rc_is_bit_0(rc, prob)) { -- rc_update_bit_0(rc, prob); -- distance = rep2; -- } else { -- rc_update_bit_1(rc, prob); -+ prob += LZMA_IS_REP_G1 - LZMA_IS_REP_G0; -+ distance = rep1; -+ if (rc_is_bit_1(rc, prob)) { -+ prob += LZMA_IS_REP_G2 - LZMA_IS_REP_G1; -+ distance = rep2; -+ if (rc_is_bit_1(rc, prob)) { - distance = rep3; - rep3 = rep2; - } -@@ -404,24 +374,20 @@ - } - - prob_len = prob + LZMA_LEN_CHOICE; -- if (rc_is_bit_0(rc, prob_len)) { -- rc_update_bit_0(rc, prob_len); -- prob_len = (prob + LZMA_LEN_LOW -- + (pos_state << LZMA_LEN_NUM_LOW_BITS)); -+ if (!rc_is_bit_1(rc, prob_len)) { -+ prob_len += LZMA_LEN_LOW - LZMA_LEN_CHOICE -+ + (pos_state << LZMA_LEN_NUM_LOW_BITS); - offset = 0; - num_bits = LZMA_LEN_NUM_LOW_BITS; - } else { -- rc_update_bit_1(rc, prob_len); -- prob_len = prob + LZMA_LEN_CHOICE_2; -- if (rc_is_bit_0(rc, prob_len)) { -- rc_update_bit_0(rc, prob_len); -- prob_len = (prob + LZMA_LEN_MID -- + (pos_state << LZMA_LEN_NUM_MID_BITS)); -+ prob_len += LZMA_LEN_CHOICE_2 - LZMA_LEN_CHOICE; -+ if (!rc_is_bit_1(rc, prob_len)) { -+ prob_len += LZMA_LEN_MID - LZMA_LEN_CHOICE_2 -+ + (pos_state << LZMA_LEN_NUM_MID_BITS); - offset = 1 << LZMA_LEN_NUM_LOW_BITS; - num_bits = LZMA_LEN_NUM_MID_BITS; - } else { -- rc_update_bit_1(rc, prob_len); -- prob_len = prob + LZMA_LEN_HIGH; -+ prob_len += LZMA_LEN_HIGH - LZMA_LEN_CHOICE_2; - offset = ((1 << LZMA_LEN_NUM_LOW_BITS) - + (1 << LZMA_LEN_NUM_MID_BITS)); - num_bits = LZMA_LEN_NUM_HIGH_BITS; -@@ -440,17 +406,18 @@ - << LZMA_NUM_POS_SLOT_BITS); - rc_bit_tree_decode(rc, prob, LZMA_NUM_POS_SLOT_BITS, - &pos_slot); -+ rep0 = pos_slot; - if (pos_slot >= LZMA_START_POS_MODEL_INDEX) { - num_bits = (pos_slot >> 1) - 1; - rep0 = 2 | (pos_slot & 1); -+ prob = p + LZMA_ALIGN; - if (pos_slot < LZMA_END_POS_MODEL_INDEX) { - rep0 <<= num_bits; -- prob = p + LZMA_SPEC_POS + rep0 - pos_slot - 1; -+ prob += LZMA_SPEC_POS - LZMA_ALIGN - 1 + rep0 - pos_slot ; - } else { - num_bits -= LZMA_NUM_ALIGN_BITS; - while (num_bits--) - rep0 = (rep0 << 1) | rc_direct_bit(rc); -- prob = p + LZMA_ALIGN; - rep0 <<= LZMA_NUM_ALIGN_BITS; - num_bits = LZMA_NUM_ALIGN_BITS; - } -@@ -461,8 +428,7 @@ - rep0 |= i; - i <<= 1; - } -- } else -- rep0 = pos_slot; -+ } - if (++rep0 == 0) - break; - } diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-vcsa2txt.u --- a/busybox/stuff/busybox-1.12.0-vcsa2txt.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ ---- busybox-1.12.0/include/applets.h -+++ busybox-1.12.0/include/applets.h -@@ -389,6 +389,7 @@ USE_USLEEP(APPLET_NOFORK(usleep, usleep, - USE_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_NEVER)) -+USE_VCSA2TXT(APPLET(vcsa2txt, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_NEVER)) - USE_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS)) - USE_WATCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_NEVER)) - ---- busybox-1.12.0/include/usage.h -+++ busybox-1.12.0/include/usage.h -@@ -4491,6 +4491,13 @@ - "\n set_ingress_map [vlan-name] [skb_priority] [vlan_qos]" \ - "\n set_name_type [name-type]" \ - -+#define vcsa2txt_trivial_usage \ -+ "stdin" -+#define vcsa2txt_full_usage \ -+ "Filter /dev/vcsa* to ansi escape sequences" -+#define vcsa2txt_example_usage \ -+ "# vcsa2txt < /dev/vcsa1\n" -+ - #define vi_trivial_usage \ - "[OPTION] [FILE]..." - #define vi_full_usage "\n\n" \ - ---- busybox-1.12.0/miscutils/Config.in -+++ busybox-1.12.0/miscutils/Config.in -@@ -509,6 +509,12 @@ config TTYSIZE - error, but returns default 80x24. - Usage in shell scripts: width=`ttysize w`. - -+config VCSA2TXT -+ bool "vcsa2txt" -+ default n -+ help -+ Filter /dev/vcsa* output to ansi escape sequences. -+ - config WATCHDOG - bool "watchdog" - default n - ---- busybox-1.12.0/util-linux/Kbuild -+++ busybox-1.12.0/util-linux/Kbuild -@@ -34,3 +34,4 @@ lib-$(CONFIG_SETARCH) += setar - lib-$(CONFIG_SWAPONOFF) += swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) += switch_root.o - lib-$(CONFIG_UMOUNT) += umount.o -+lib-$(CONFIG_VCSA2TXT) += vcsa2txt.o - ---- busybox-1.12.0/util-linux/vcsa2txt.c -+++ busybox-1.12.0/util-linux/vcsa2txt.c -@@ -0,0 +1,79 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * /dev/vcsa* filter for busybox -+ * -+ * pascal.bellard@ads-lu.com -+ * -+ * Licensed under GPLv2 or later, see file License in this tarball for details. -+ */ -+ -+#include "libbb.h" -+ -+int vcsa2txt_main(int argc) MAIN_EXTERNALLY_VISIBLE; -+int vcsa2txt_main(int argc) -+{ -+ struct { -+ unsigned char l, c, x, y; // man 4 console_codes -+ } scrn; -+ unsigned char last = 0, ch[2]; // BLGCRMOW -+ static unsigned char end[5] = "\e[0m\n", color[8] = "04261537"; -+ int sp, lf, x; -+ -+ if (safe_read(0, &scrn, 4) < 0) return 1; -+ for (lf = 0; scrn.l; lf++, scrn.l--) { -+ for (sp = x = 0; ++x <= scrn.c;) { -+ if (safe_read(0, &ch[0], 2) < 0) return 1; -+ if (argc > 1) ch[1] = 0; -+ sp++; -+ if (last == ch[1] && ch[0] == ' ') continue; -+ for (lf++; --lf;) bb_putchar('\n'); -+ while (--sp) bb_putchar(' '); -+#define ENABLE_VCSA_PACKED 1 -+#if ENABLE_VCSA_PACKED -+ if (last ^= ch[1]) { -+ char esc[16],*s; -+ struct offsets { -+ char mask, type, shr; -+ } *p; -+ static struct offsets offset[3] = { -+ {8,0,1}, {0x70,'4',4}, {7,'3',0} -+ }; -+ static char init = 0x7F; -+ -+ s = esc+2; -+ *(short *)esc = ntohs(256*'\e'+'['); -+ p = offset; -+ do { -+ if ((init|last) & p->mask) { -+ int c = (ch[1] & p->mask) >> p->shr; -+ -+ if ((*s = p->type) != 0) s++; -+ else if (c == 0) { -+ c = 2; -+ *s++ = '2'; /* normal */ -+ } -+ *s++ = color[c]; -+ *s++ = ';'; -+ } -+ } while (p++->shr); -+ s[-1] = 'm'; -+ init = 0; -+ fwrite(esc,s-esc,1,stdout); -+ } -+ last = ch[1]; -+#else -+ if (last != ch[1]) { -+ static char esc[10] = "\e[0;47;37m"; -+ -+ esc[2] = ((last = ch[1]) & 8) ? '1' /* bold */ : '0' /* defaults */; -+ esc[sizeof(esc)-5] = color[(ch[1] >> 4) & 7]; -+ esc[sizeof(esc)-2] = color[ch[1] & 7]; -+ fwrite(esc,sizeof(esc),1,stdout); -+ } -+#endif -+ bb_putchar(ch[0]); -+ } -+ } -+ fwrite(end,sizeof(end),1,stdout); -+ return 0; -+} diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0-zmodules.u --- a/busybox/stuff/busybox-1.12.0-zmodules.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ ---- busybox-1.12.0/modutils/depmod.c -+++ busybox-1.12.0/modutils/depmod.c -@@ -53,27 +53,14 @@ static int FAST_FUNC fileAction(const ch - size_t len = sb->st_size; - void *the_module; - char *ptr; -- int fd; - char *depends, *deps; - dep_lst_t *this; -+ extern void *xalloc_load_module(const char filename[], size_t *len); - - if (strrstr(fname, ".ko") == NULL) /* not a module */ - goto skip; - --/*XXX: FIXME: does not handle compressed modules! -- * There should be a function that looks at the extension and sets up -- * open_transformer for us. -- */ -- fd = xopen(fname, O_RDONLY); -- the_module = mmap(NULL, len, PROT_READ, MAP_SHARED --#if defined MAP_POPULATE -- |MAP_POPULATE --#endif -- , fd, 0); -- close(fd); -- if (the_module == MAP_FAILED) -- bb_perror_msg_and_die("mmap"); -- -+ the_module = xalloc_load_module(fname, &len); - this = xzalloc(sizeof(dep_lst_t)); - this->name = xstrdup(fname); - this->next = G.lst; -@@ -104,7 +91,7 @@ static int FAST_FUNC fileAction(const ch - pos = (ptr - (char*)the_module); - } while (1); - } -- munmap(the_module, sb->st_size); -+ free(the_module); - skip: - return TRUE; - } - ---- busybox-1.12.0/modutils/insmod.c -+++ busybox-1.12.0/modutils/insmod.c -@@ -59,6 +59,7 @@ - */ - - #include "libbb.h" -+#include "unarchive.h" - #include - #include - -@@ -4212,6 +4213,60 @@ static const char *moderror(int err) - } - } - -+void *xalloc_load_module(const char filename[], size_t *len); -+void *xalloc_load_module(const char filename[], size_t *len) -+{ -+ int fd, max; -+ unsigned char head[16]; -+ void *map; -+ size_t l; -+ -+ max = 8 * 1024; -+ fd = open(filename, O_RDONLY); -+ if (fd < 0) return NULL; -+ xread(fd,head,sizeof(head)); -+ lseek(fd,0L,SEEK_SET); -+#if ENABLE_FEATURE_SEAMLESS_GZ -+ if (head[0] == 0x1f && head[1] == 0x8b) { /* gzip */ -+#if BB_MMU -+ xread(fd,head,2); // bb wierdness... -+#endif -+ open_transformer(fd, unpack_gz_stream, "gunzip"); -+ } -+#endif -+#if ENABLE_FEATURE_SEAMLESS_BZ2 -+#if ENABLE_FEATURE_SEAMLESS_GZ -+ else -+#endif -+ if (head[0] == 'B' && head[1] == 'Z' && -+ head[2] == 'h' && isdigit(head[3])) { /* bzip2 */ -+ open_transformer(fd, unpack_bz2_stream, "bunzip2"); -+ } -+#endif -+#if ENABLE_FEATURE_SEAMLESS_LZMA -+#if ENABLE_FEATURE_SEAMLESS_GZ || ENABLE_FEATURE_SEAMLESS_BZ2 -+ else -+#endif -+ if (head[1] != 'E' || head[2] != 'L' || head[3] != 'F') { -+ open_transformer(fd, unpack_lzma_stream, "unlzma"); -+ if (* (unsigned *) (head + 9) == 0) -+ max = 1 + head[5] + (head[6]<<8) -+ + (head[7]<<16) + (head[8]<<24); -+ } -+#endif -+ l = 0; -+ map = xmalloc(max); -+ while (1) { -+ l += full_read(fd, l + (char *) map, max - l); -+ if (l != max) break; -+ max <<= 1; -+ map = xrealloc(map, max); -+ } -+ if (len) -+ *len = l; -+ return xrealloc(map, l); -+} -+ - #if !ENABLE_FEATURE_2_4_MODULES - int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int insmod_main(int argc UNUSED_PARAM, char **argv) -@@ -4264,8 +4319,7 @@ static int insmod_ng_main(int argc UNUSE - xread(fd, map, len); - } - #else -- len = MAXINT(ssize_t); -- map = xmalloc_open_read_close(filename, &len); -+ map = xalloc_load_module(filename, &len); - #endif - - if (init_module(map, len, options) != 0) - ---- busybox-1.12.0/modutils/modprobe.c -+++ busybox-1.12.0/modutils/modprobe.c -@@ -396,6 +396,29 @@ static int include_conf_file2(struct inc - return include_conf_file(conf, oldname); - } - -+static int ext_size(char *end USE_FEATURE_2_6_MODULES(, int k_version)) -+{ -+ int ext; -+ char *next; -+ -+ ext = 0; -+ if (end[-2] == '.' && end[-1] == 'g' && end[0] == 'z') -+ ext = 3; -+ if (end[-3] == '.' && end[-2] == 'b' && end[-1] == 'z' && end[0] == '2') -+ ext = 4; -+ next = end - ext; -+#if ENABLE_FEATURE_2_6_MODULES -+ if (ENABLE_FEATURE_2_6_MODULES -+ && (k_version > 4) && (next[-2] == '.') -+ && (next[-1] == 'k') && (next[0] == 'o')) -+ ext += 3; -+ else -+#endif -+ if ((next[-1] == '.') && (next[0] == 'o')) -+ ext += 2; -+ return ext; -+} -+ - /* - * This function builds a list of dependency rules from /lib/modules/`uname -r`/modules.dep. - * It then fills every modules and aliases with their default options, found by parsing -@@ -464,12 +487,7 @@ static struct dep_t *build_dep(void) - if (!modpath) - modpath = line_buffer; /* module with no path */ - /* find the end of the module name in the file name */ -- if (ENABLE_FEATURE_2_6_MODULES && -- (k_version > 4) && (col[-3] == '.') && -- (col[-2] == 'k') && (col[-1] == 'o')) -- dot = col - 3; -- else if ((col[-2] == '.') && (col[-1] == 'o')) -- dot = col - 2; -+ dot = col - ext_size(col - 1 USE_FEATURE_2_6_MODULES(, k_version)); - - mod = xstrndup(mods, dot - mods); - -@@ -522,12 +540,7 @@ static struct dep_t *build_dep(void) - deps = skip_whitespace(deps); - - /* find the end of the module name in the file name */ -- if (ENABLE_FEATURE_2_6_MODULES -- && (k_version > 4) && (next[-2] == '.') -- && (next[-1] == 'k') && (next[0] == 'o')) -- ext = 3; -- else if ((next[-1] == '.') && (next[0] == 'o')) -- ext = 2; -+ ext = ext_size(next USE_FEATURE_2_6_MODULES(, k_version)); - - /* Cope with blank lines */ - if ((next - deps - ext + 1) <= 0) - ---- busybox-1.12.0/modutils/depmod.c -+++ busybox-1.12.0/modutils/depmod.c -@@ -109,11 +109,15 @@ - ARG_b = (1<<2), /* not /lib/modules/$(uname -r)/ but this base-dir */ - ARG_e = (1<<3), /* with -F, print unresolved symbols */ - ARG_F = (1<<4), /* System.map that contains the symbols */ -- ARG_n = (1<<5) /* dry-run, print to stdout only */ -+ ARG_n = (1<<5), /* dry-run, print to stdout only */ -+ ARG_u = (1<<6), /* unresolved-error: ignored */ -+ ARG_q = (1<<7), /* quiet: ignored */ -+ ARG_r = (1<<8), /* root: ignored */ -+ ARG_C = (1<<9) /* config: ignored */ - }; - INIT_G(); - -- getopt32(argv, "aAb:eF:n", &moddir_base, &system_map); -+ getopt32(argv, "aAb:eF:nuqrC", &moddir_base, &system_map); - argv += optind; - - /* If a version is provided, then that kernel version’s module directory - ---- busybox-1.12.0/modutils/depmod.c -+++ busybox-1.12.0/modutils/depmod.c -@@ -141,6 +141,11 @@ - - if (!(option_mask32 & ARG_n)) { /* --dry-run */ - chp = concat_path_file(moddir, CONFIG_DEFAULT_DEPMOD_FILE); -+ if (option_mask32 & ARG_b) { -+ char *s = concat_path_file(moddir_base, chp); -+ free(chp); -+ chp = s; -+ } - filedes = xfopen_for_write(chp); - if (ENABLE_FEATURE_CLEAN_UP) - free(chp); diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.12.0.config --- a/busybox/stuff/busybox-1.12.0.config Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,858 +0,0 @@ -# -# Automatically generated make config: don't edit -# Busybox version: 1.12.0 -# Mon Jun 29 15:06:02 2009 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -CONFIG_DESKTOP=y -# CONFIG_EXTRA_COMPAT is not set -# CONFIG_FEATURE_ASSUME_UNICODE is not set -CONFIG_FEATURE_BUFFERS_USE_MALLOC=y -# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set -# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set -CONFIG_SHOW_USAGE=y -CONFIG_FEATURE_VERBOSE_USAGE=y -CONFIG_FEATURE_COMPRESS_USAGE=y -CONFIG_FEATURE_INSTALLER=y -CONFIG_LOCALE_SUPPORT=y -CONFIG_GETOPT_LONG=y -CONFIG_FEATURE_DEVPTS=y -# CONFIG_FEATURE_CLEAN_UP is not set -CONFIG_FEATURE_PIDFILE=y -CONFIG_FEATURE_SUID=y -CONFIG_FEATURE_SUID_CONFIG=y -# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set -# CONFIG_FEATURE_PREFER_APPLETS is not set -CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" -CONFIG_FEATURE_SYSLOG=y -CONFIG_FEATURE_HAVE_RPC=y - -# -# Build Options -# -# CONFIG_STATIC is not set -# CONFIG_PIE is not set -# CONFIG_NOMMU is not set -# CONFIG_BUILD_LIBBUSYBOX is not set -# CONFIG_FEATURE_INDIVIDUAL is not set -# CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y -CONFIG_CROSS_COMPILER_PREFIX="" - -# -# Debugging Options -# -# CONFIG_DEBUG is not set -# CONFIG_DEBUG_PESSIMIZE is not set -# CONFIG_WERROR is not set -CONFIG_NO_DEBUG_LIB=y -# CONFIG_DMALLOC is not set -# CONFIG_EFENCE is not set -CONFIG_INCLUDE_SUSv2=y -# CONFIG_PARSE is not set - -# -# Installation Options -# -# CONFIG_INSTALL_NO_USR is not set -CONFIG_INSTALL_APPLET_SYMLINKS=y -# CONFIG_INSTALL_APPLET_HARDLINKS is not set -# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set -# CONFIG_INSTALL_APPLET_DONT is not set -# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set -# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set -# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set -CONFIG_PREFIX="./_install" - -# -# Busybox Library Tuning -# -CONFIG_PASSWORD_MINLEN=6 -CONFIG_MD5_SIZE_VS_SPEED=0 -# CONFIG_FEATURE_FAST_TOP is not set -# CONFIG_FEATURE_ETC_NETWORKS is not set -CONFIG_FEATURE_EDITING=y -CONFIG_FEATURE_EDITING_MAX_LEN=1024 -# CONFIG_FEATURE_EDITING_VI is not set -CONFIG_FEATURE_EDITING_HISTORY=127 -CONFIG_FEATURE_EDITING_SAVEHISTORY=y -CONFIG_FEATURE_TAB_COMPLETION=y -# CONFIG_FEATURE_USERNAME_COMPLETION is not set -CONFIG_FEATURE_EDITING_FANCY_PROMPT=y -# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set -CONFIG_FEATURE_COPYBUF_KB=4 -CONFIG_MONOTONIC_SYSCALL=y -CONFIG_IOCTL_HEX2STR_ERROR=y -CONFIG_FEATURE_HWIB=y - -# -# Applets -# - -# -# Archival Utilities -# -CONFIG_FEATURE_SEAMLESS_LZMA=y -CONFIG_FEATURE_SEAMLESS_BZ2=y -CONFIG_FEATURE_SEAMLESS_GZ=y -CONFIG_FEATURE_SEAMLESS_Z=y -CONFIG_AR=y -# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -CONFIG_BUNZIP2=y -# CONFIG_BZIP2 is not set -CONFIG_CPIO=y -CONFIG_FEATURE_CPIO_O=y -CONFIG_DPKG=y -CONFIG_DPKG_DEB=y -CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y -CONFIG_GUNZIP=y -CONFIG_GZIP=y -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -# CONFIG_FEATURE_TAR_AUTODETECT is not set -CONFIG_FEATURE_TAR_FROM=y -CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y -# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set -CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y -CONFIG_FEATURE_TAR_LONG_OPTIONS=y -# CONFIG_FEATURE_TAR_UNAME_GNAME is not set -CONFIG_UNCOMPRESS=y -CONFIG_UNLZMA=y -# CONFIG_FEATURE_LZMA_FAST is not set -CONFIG_UNZIP=y - -# -# Coreutils -# -CONFIG_BASENAME=y -CONFIG_CAL=y -CONFIG_CAT=y -# CONFIG_CATV is not set -CONFIG_CHGRP=y -CONFIG_CHMOD=y -CONFIG_CHOWN=y -CONFIG_CHROOT=y -CONFIG_CKSUM=y -CONFIG_COMM=y -CONFIG_CP=y -CONFIG_CUT=y -CONFIG_DATE=y -CONFIG_FEATURE_DATE_ISOFMT=y -CONFIG_DD=y -CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -CONFIG_FEATURE_DD_IBS_OBS=y -CONFIG_DF=y -CONFIG_FEATURE_DF_INODE=y -CONFIG_DIRNAME=y -CONFIG_DOS2UNIX=y -CONFIG_UNIX2DOS=y -CONFIG_DU=y -CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y -CONFIG_ECHO=y -CONFIG_FEATURE_FANCY_ECHO=y -CONFIG_ENV=y -CONFIG_FEATURE_ENV_LONG_OPTIONS=y -CONFIG_EXPAND=y -CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y -CONFIG_EXPR=y -# CONFIG_EXPR_MATH_SUPPORT_64 is not set -CONFIG_FALSE=y -CONFIG_FOLD=y -CONFIG_HEAD=y -CONFIG_FEATURE_FANCY_HEAD=y -CONFIG_HOSTID=y -CONFIG_ID=y -CONFIG_INSTALL=y -CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y -CONFIG_LENGTH=y -CONFIG_LN=y -CONFIG_LOGNAME=y -CONFIG_LS=y -CONFIG_FEATURE_LS_FILETYPES=y -CONFIG_FEATURE_LS_FOLLOWLINKS=y -CONFIG_FEATURE_LS_RECURSIVE=y -CONFIG_FEATURE_LS_SORTFILES=y -CONFIG_FEATURE_LS_TIMESTAMPS=y -CONFIG_FEATURE_LS_USERNAME=y -CONFIG_FEATURE_LS_COLOR=y -CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y -CONFIG_MD5SUM=y -CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y -CONFIG_MKFIFO=y -CONFIG_MKNOD=y -CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y -CONFIG_NICE=y -CONFIG_NOHUP=y -CONFIG_OD=y -CONFIG_PRINTENV=y -CONFIG_PRINTF=y -CONFIG_PWD=y -CONFIG_READLINK=y -CONFIG_FEATURE_READLINK_FOLLOW=y -CONFIG_REALPATH=y -CONFIG_RM=y -CONFIG_RMDIR=y -# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set -CONFIG_SEQ=y -CONFIG_SHA1SUM=y -CONFIG_SLEEP=y -CONFIG_FEATURE_FANCY_SLEEP=y -# CONFIG_FEATURE_FLOAT_SLEEP is not set -CONFIG_SORT=y -CONFIG_FEATURE_SORT_BIG=y -CONFIG_SPLIT=y -CONFIG_FEATURE_SPLIT_FANCY=y -CONFIG_STAT=y -CONFIG_FEATURE_STAT_FORMAT=y -CONFIG_STTY=y -CONFIG_SUM=y -CONFIG_SYNC=y -CONFIG_TAC=y -CONFIG_TAIL=y -CONFIG_FEATURE_FANCY_TAIL=y -CONFIG_TEE=y -CONFIG_FEATURE_TEE_USE_BLOCK_IO=y -CONFIG_TEST=y -CONFIG_FEATURE_TEST_64=y -CONFIG_TOUCH=y -CONFIG_TR=y -CONFIG_FEATURE_TR_CLASSES=y -CONFIG_FEATURE_TR_EQUIV=y -CONFIG_TRUE=y -CONFIG_TTY=y -CONFIG_UNAME=y -CONFIG_UNEXPAND=y -CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y -CONFIG_UNIQ=y -CONFIG_USLEEP=y -CONFIG_UUDECODE=y -CONFIG_UUENCODE=y -CONFIG_WC=y -CONFIG_FEATURE_WC_LARGE=y -CONFIG_WHO=y -CONFIG_WHOAMI=y -CONFIG_YES=y - -# -# Common options for cp and mv -# -CONFIG_FEATURE_PRESERVE_HARDLINKS=y - -# -# Common options for ls, more and telnet -# -CONFIG_FEATURE_AUTOWIDTH=y - -# -# Common options for df, du, ls -# -CONFIG_FEATURE_HUMAN_READABLE=y - -# -# Common options for md5sum, sha1sum -# -CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y - -# -# Console Utilities -# -CONFIG_CHVT=y -# CONFIG_CLEAR is not set -CONFIG_DEALLOCVT=y -CONFIG_DUMPKMAP=y -CONFIG_KBD_MODE=y -CONFIG_LOADFONT=y -CONFIG_LOADKMAP=y -CONFIG_OPENVT=y -# CONFIG_RESET is not set -# CONFIG_RESIZE is not set -# CONFIG_FEATURE_RESIZE_PRINT is not set -CONFIG_SETCONSOLE=y -# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set -# CONFIG_SETFONT is not set -CONFIG_SETKEYCODES=y -CONFIG_SETLOGCONS=y -# CONFIG_SHOWKEY is not set - -# -# Debian Utilities -# -CONFIG_MKTEMP=y -CONFIG_PIPE_PROGRESS=y -# CONFIG_RUN_PARTS is not set -# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set -# CONFIG_FEATURE_RUN_PARTS_FANCY is not set -# CONFIG_START_STOP_DAEMON is not set -# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set -# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set -CONFIG_WHICH=y - -# -# Editors -# -CONFIG_AWK=y -CONFIG_FEATURE_AWK_MATH=y -CONFIG_CMP=y -CONFIG_DIFF=y -CONFIG_FEATURE_DIFF_BINARY=y -CONFIG_FEATURE_DIFF_DIR=y -CONFIG_FEATURE_DIFF_MINIMAL=y -# CONFIG_ED is not set -CONFIG_PATCH=y -CONFIG_SED=y -CONFIG_VI=y -CONFIG_FEATURE_VI_MAX_LEN=1024 -CONFIG_FEATURE_VI_8BIT=y -CONFIG_FEATURE_VI_COLON=y -CONFIG_FEATURE_VI_YANKMARK=y -CONFIG_FEATURE_VI_SEARCH=y -CONFIG_FEATURE_VI_USE_SIGNALS=y -CONFIG_FEATURE_VI_DOT_CMD=y -CONFIG_FEATURE_VI_READONLY=y -CONFIG_FEATURE_VI_SETOPTS=y -CONFIG_FEATURE_VI_SET=y -CONFIG_FEATURE_VI_WIN_RESIZE=y -CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y -CONFIG_FEATURE_ALLOW_EXEC=y - -# -# Finding Utilities -# -CONFIG_FIND=y -CONFIG_FEATURE_FIND_PRINT0=y -CONFIG_FEATURE_FIND_MTIME=y -CONFIG_FEATURE_FIND_MMIN=y -CONFIG_FEATURE_FIND_PERM=y -CONFIG_FEATURE_FIND_TYPE=y -CONFIG_FEATURE_FIND_XDEV=y -CONFIG_FEATURE_FIND_MAXDEPTH=y -CONFIG_FEATURE_FIND_NEWER=y -CONFIG_FEATURE_FIND_INUM=y -CONFIG_FEATURE_FIND_EXEC=y -CONFIG_FEATURE_FIND_USER=y -CONFIG_FEATURE_FIND_GROUP=y -CONFIG_FEATURE_FIND_NOT=y -CONFIG_FEATURE_FIND_DEPTH=y -CONFIG_FEATURE_FIND_PAREN=y -CONFIG_FEATURE_FIND_SIZE=y -CONFIG_FEATURE_FIND_PRUNE=y -CONFIG_FEATURE_FIND_DELETE=y -CONFIG_FEATURE_FIND_PATH=y -CONFIG_FEATURE_FIND_REGEX=y -# CONFIG_FEATURE_FIND_CONTEXT is not set -CONFIG_GREP=y -CONFIG_FEATURE_GREP_EGREP_ALIAS=y -CONFIG_FEATURE_GREP_FGREP_ALIAS=y -CONFIG_FEATURE_GREP_CONTEXT=y -CONFIG_XARGS=y -CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y -CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y -CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y -CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y - -# -# Init Utilities -# -CONFIG_INIT=y -# CONFIG_DEBUG_INIT is not set -CONFIG_FEATURE_USE_INITTAB=y -CONFIG_FEATURE_KILL_REMOVED=y -CONFIG_FEATURE_KILL_DELAY=0 -CONFIG_FEATURE_INIT_SCTTY=y -# CONFIG_FEATURE_INIT_SYSLOG is not set -CONFIG_FEATURE_EXTRA_QUIET=y -# CONFIG_FEATURE_INIT_COREDUMPS is not set -CONFIG_FEATURE_INITRD=y -CONFIG_HALT=y -CONFIG_MESG=y - -# -# Login/Password Management Utilities -# -CONFIG_FEATURE_SHADOWPASSWDS=y -# CONFIG_USE_BB_PWD_GRP is not set -# CONFIG_USE_BB_SHADOW is not set -CONFIG_USE_BB_CRYPT=y -CONFIG_ADDGROUP=y -CONFIG_FEATURE_ADDUSER_TO_GROUP=y -CONFIG_DELGROUP=y -CONFIG_FEATURE_DEL_USER_FROM_GROUP=y -# CONFIG_FEATURE_CHECK_NAMES is not set -CONFIG_ADDUSER=y -# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set -CONFIG_DELUSER=y -CONFIG_GETTY=y -CONFIG_FEATURE_UTMP=y -CONFIG_FEATURE_WTMP=y -CONFIG_LOGIN=y -# CONFIG_PAM is not set -# CONFIG_LOGIN_SCRIPTS is not set -CONFIG_FEATURE_NOLOGIN=y -CONFIG_FEATURE_SECURETTY=y -CONFIG_PASSWD=y -CONFIG_FEATURE_PASSWD_WEAK_CHECK=y -CONFIG_CRYPTPW=y -CONFIG_CHPASSWD=y -CONFIG_SU=y -CONFIG_FEATURE_SU_SYSLOG=y -CONFIG_FEATURE_SU_CHECKS_SHELLS=y -CONFIG_SULOGIN=y -CONFIG_VLOCK=y - -# -# Linux Ext2 FS Progs -# -# CONFIG_CHATTR is not set -# CONFIG_FSCK is not set -# CONFIG_LSATTR is not set - -# -# Linux Module Utilities -# -# CONFIG_MODPROBE_SMALL is not set -# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set -# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set -CONFIG_DEPMOD=y -# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set -# CONFIG_FEATURE_DEPMOD_ALIAS is not set -CONFIG_INSMOD=y -# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set -# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set -# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -CONFIG_RMMOD=y -CONFIG_LSMOD=y -CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y -CONFIG_MODPROBE=y -CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y -CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y -# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set -CONFIG_MODINFO=y - -# -# Options common to multiple modutils -# -CONFIG_FEATURE_CHECK_TAINTED_MODULE=y -# CONFIG_FEATURE_2_4_MODULES is not set -CONFIG_FEATURE_2_6_MODULES=y -CONFIG_DEFAULT_MODULES_DIR="/lib/modules" -CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" -# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set - -# -# Linux System Utilities -# -CONFIG_DMESG=y -CONFIG_FEATURE_DMESG_PRETTY=y -CONFIG_FBSET=y -CONFIG_FEATURE_FBSET_FANCY=y -# CONFIG_FEATURE_FBSET_READMODE is not set -CONFIG_FDFLUSH=y -CONFIG_FDFORMAT=y -CONFIG_FDISK=y -CONFIG_FDISK_SUPPORT_LARGE_DISKS=y -CONFIG_FEATURE_FDISK_WRITABLE=y -# CONFIG_FEATURE_AIX_LABEL is not set -# CONFIG_FEATURE_SGI_LABEL is not set -# CONFIG_FEATURE_SUN_LABEL is not set -# CONFIG_FEATURE_OSF_LABEL is not set -# CONFIG_FEATURE_FDISK_ADVANCED is not set -# CONFIG_FINDFS is not set -CONFIG_FREERAMDISK=y -# CONFIG_FSCK_MINIX is not set -# CONFIG_MKFS_MINIX is not set -# CONFIG_FEATURE_MINIX2 is not set -# CONFIG_GETOPT is not set -CONFIG_HEXDUMP=y -CONFIG_FEATURE_HEXDUMP_REVERSE=y -# CONFIG_HD is not set -CONFIG_HWCLOCK=y -CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y -CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y -CONFIG_IPCRM=y -CONFIG_IPCS=y -CONFIG_LOSETUP=y -CONFIG_MDEV=y -CONFIG_FEATURE_MDEV_CONF=y -# CONFIG_FEATURE_MDEV_RENAME is not set -# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set -CONFIG_FEATURE_MDEV_EXEC=y -CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y -CONFIG_MKSWAP=y -# CONFIG_FEATURE_MKSWAP_V0 is not set -CONFIG_MORE=y -CONFIG_FEATURE_USE_TERMIOS=y -CONFIG_VOLUMEID=y -CONFIG_FEATURE_VOLUMEID_EXT=y -CONFIG_FEATURE_VOLUMEID_REISERFS=y -CONFIG_FEATURE_VOLUMEID_FAT=y -CONFIG_FEATURE_VOLUMEID_HFS=y -# CONFIG_FEATURE_VOLUMEID_JFS is not set -CONFIG_FEATURE_VOLUMEID_XFS=y -CONFIG_FEATURE_VOLUMEID_NTFS=y -CONFIG_FEATURE_VOLUMEID_ISO9660=y -# CONFIG_FEATURE_VOLUMEID_UDF is not set -# CONFIG_FEATURE_VOLUMEID_LUKS is not set -CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y -# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set -# CONFIG_FEATURE_VOLUMEID_ROMFS is not set -# CONFIG_FEATURE_VOLUMEID_SYSV is not set -# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set -CONFIG_FEATURE_VOLUMEID_LINUXRAID=y -CONFIG_MOUNT=y -# CONFIG_FEATURE_MOUNT_FAKE is not set -# CONFIG_FEATURE_MOUNT_VERBOSE is not set -CONFIG_FEATURE_MOUNT_HELPERS=y -CONFIG_FEATURE_MOUNT_LABEL=y -CONFIG_FEATURE_MOUNT_NFS=y -CONFIG_FEATURE_MOUNT_CIFS=y -CONFIG_FEATURE_MOUNT_FLAGS=y -CONFIG_FEATURE_MOUNT_FSTAB=y -CONFIG_PIVOT_ROOT=y -CONFIG_RDATE=y -# CONFIG_RDEV is not set -CONFIG_READPROFILE=y -CONFIG_REPLAY=y -# CONFIG_RTCWAKE is not set -CONFIG_SCRIPT=y -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=y -CONFIG_FEATURE_SWAPON_PRI=y -CONFIG_SWITCH_ROOT=y -CONFIG_UMOUNT=y -CONFIG_FEATURE_UMOUNT_ALL=y - -# -# Common options for mount/umount -# -CONFIG_FEATURE_MOUNT_LOOP=y -# CONFIG_FEATURE_MTAB_SUPPORT is not set - -# -# Miscellaneous Utilities -# -CONFIG_ADJTIMEX=y -# CONFIG_BBCONFIG is not set -CONFIG_CHAT=y -CONFIG_FEATURE_CHAT_NOFAIL=y -# CONFIG_FEATURE_CHAT_TTY_HIFI is not set -CONFIG_FEATURE_CHAT_IMPLICIT_CR=y -# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set -# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set -# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set -# CONFIG_FEATURE_CHAT_CLR_ABORT is not set -CONFIG_CHRT=y -CONFIG_CROND=y -# CONFIG_DEBUG_CROND_OPTION is not set -# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set -CONFIG_CRONTAB=y -# CONFIG_DC is not set -# CONFIG_DEVFSD is not set -# CONFIG_DEVFSD_MODLOAD is not set -# CONFIG_DEVFSD_FG_NP is not set -# CONFIG_DEVFSD_VERBOSE is not set -# CONFIG_FEATURE_DEVFS is not set -CONFIG_EJECT=y -CONFIG_FEATURE_EJECT_SCSI=y -# CONFIG_FBSPLASH is not set -CONFIG_IONICE=y -# CONFIG_INOTIFYD is not set -CONFIG_LAST=y -CONFIG_FEATURE_LAST_SMALL=y -# CONFIG_FEATURE_LAST_FANCY is not set -CONFIG_LESS=y -CONFIG_FEATURE_LESS_MAXLINES=9999999 -CONFIG_FEATURE_LESS_BRACKETS=y -CONFIG_FEATURE_LESS_FLAGS=y -CONFIG_FEATURE_LESS_FLAGCS=y -CONFIG_FEATURE_LESS_MARKS=y -CONFIG_FEATURE_LESS_REGEXP=y -CONFIG_HDPARM=y -CONFIG_FEATURE_HDPARM_GET_IDENTITY=y -# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set -# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set -CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y -# CONFIG_MAKEDEVS is not set -# CONFIG_FEATURE_MAKEDEVS_LEAF is not set -# CONFIG_FEATURE_MAKEDEVS_TABLE is not set -# CONFIG_MAN is not set -CONFIG_MICROCOM=y -CONFIG_MOUNTPOINT=y -# CONFIG_MT is not set -CONFIG_RAIDAUTORUN=y -# CONFIG_READAHEAD is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -CONFIG_SETSID=y -CONFIG_STRINGS=y -CONFIG_TASKSET=y -CONFIG_FEATURE_TASKSET_FANCY=y -CONFIG_TIME=y -# CONFIG_TTYSIZE is not set -CONFIG_VCSA2TXT=y -CONFIG_WATCHDOG=y - -# -# Networking Utilities -# -CONFIG_FEATURE_IPV6=y -CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y -# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set -CONFIG_ARP=y -CONFIG_ARPING=y -CONFIG_BRCTL=y -CONFIG_FEATURE_BRCTL_FANCY=y -# CONFIG_FEATURE_BRCTL_SHOW is not set -CONFIG_DNSD=y -CONFIG_ETHER_WAKE=y -CONFIG_FAKEIDENTD=y -CONFIG_FTPGET=y -CONFIG_FTPPUT=y -CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y -CONFIG_HOSTNAME=y -# CONFIG_HTTPD is not set -# CONFIG_FEATURE_HTTPD_RANGES is not set -# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set -# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set -# CONFIG_FEATURE_HTTPD_SETUID is not set -# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set -# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set -# CONFIG_FEATURE_HTTPD_CGI is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set -# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set -# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set -# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set -# CONFIG_FEATURE_HTTPD_PROXY is not set -CONFIG_IFCONFIG=y -CONFIG_FEATURE_IFCONFIG_STATUS=y -# CONFIG_FEATURE_IFCONFIG_SLIP is not set -CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y -CONFIG_FEATURE_IFCONFIG_HW=y -CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y -# CONFIG_IFENSLAVE is not set -# CONFIG_IFUPDOWN is not set -CONFIG_IFUPDOWN_IFSTATE_PATH="" -# CONFIG_FEATURE_IFUPDOWN_IP is not set -# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set -# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set -# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set -# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set -CONFIG_INETD=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y -CONFIG_FEATURE_INETD_RPC=y -CONFIG_IP=y -CONFIG_FEATURE_IP_ADDRESS=y -CONFIG_FEATURE_IP_LINK=y -CONFIG_FEATURE_IP_ROUTE=y -CONFIG_FEATURE_IP_TUNNEL=y -CONFIG_FEATURE_IP_RULE=y -CONFIG_FEATURE_IP_SHORT_FORMS=y -# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -CONFIG_IPADDR=y -CONFIG_IPLINK=y -CONFIG_IPROUTE=y -CONFIG_IPTUNNEL=y -CONFIG_IPRULE=y -CONFIG_IPCALC=y -CONFIG_FEATURE_IPCALC_FANCY=y -CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y -CONFIG_NAMEIF=y -# CONFIG_FEATURE_NAMEIF_EXTENDED is not set -CONFIG_NC=y -CONFIG_NC_SERVER=y -# CONFIG_NC_EXTRA is not set -CONFIG_NETSTAT=y -CONFIG_FEATURE_NETSTAT_WIDE=y -CONFIG_FEATURE_NETSTAT_PRG=y -CONFIG_NSLOOKUP=y -CONFIG_PING=y -CONFIG_PING6=y -CONFIG_FEATURE_FANCY_PING=y -CONFIG_PSCAN=y -CONFIG_ROUTE=y -# CONFIG_SENDMAIL is not set -# CONFIG_FETCHMAIL is not set -# CONFIG_SLATTACH is not set -CONFIG_TELNET=y -CONFIG_FEATURE_TELNET_TTYPE=y -CONFIG_FEATURE_TELNET_AUTOLOGIN=y -# CONFIG_TELNETD is not set -# CONFIG_FEATURE_TELNETD_STANDALONE is not set -CONFIG_TFTP=y -CONFIG_TFTPD=y -CONFIG_FEATURE_TFTPD_RIS=y -CONFIG_FEATURE_TFTP_GET=y -CONFIG_FEATURE_TFTP_PUT=y -CONFIG_FEATURE_TFTP_BLOCKSIZE=y -# CONFIG_DEBUG_TFTP is not set -CONFIG_TRACEROUTE=y -CONFIG_FEATURE_TRACEROUTE_VERBOSE=y -CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y -# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set -CONFIG_APP_UDHCPD=y -CONFIG_APP_DHCPRELAY=y -CONFIG_APP_DUMPLEASES=y -# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set -CONFIG_DHCPD_LEASES_FILE="/var/lib/udhcpd.leases" -CONFIG_APP_UDHCPC=y -CONFIG_FEATURE_UDHCPC_ARPING=y -# CONFIG_FEATURE_UDHCP_PORT is not set -# CONFIG_FEATURE_UDHCP_DEBUG is not set -# CONFIG_FEATURE_RFC3397 is not set -CONFIG_DHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 -CONFIG_VCONFIG=y -CONFIG_WGET=y -CONFIG_FEATURE_WGET_STATUSBAR=y -CONFIG_FEATURE_WGET_AUTHENTICATION=y -CONFIG_FEATURE_WGET_LONG_OPTIONS=y -CONFIG_ZCIP=y -# CONFIG_TCPSVD is not set -# CONFIG_UDPSVD is not set - -# -# Process Utilities -# -CONFIG_FREE=y -CONFIG_FUSER=y -CONFIG_KILL=y -CONFIG_KILLALL=y -CONFIG_KILLALL5=y -CONFIG_NMETER=y -# CONFIG_PGREP is not set -CONFIG_PIDOF=y -CONFIG_FEATURE_PIDOF_SINGLE=y -CONFIG_FEATURE_PIDOF_OMIT=y -# CONFIG_PKILL is not set -CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y -# CONFIG_FEATURE_PS_TIME is not set -# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set -CONFIG_RENICE=y -CONFIG_BB_SYSCTL=y -CONFIG_TOP=y -CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y -CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y -# CONFIG_FEATURE_TOP_DECIMALS is not set -CONFIG_FEATURE_TOPMEM=y -CONFIG_UPTIME=y -CONFIG_WATCH=y - -# -# Shells -# -CONFIG_FEATURE_SH_IS_ASH=y -# CONFIG_FEATURE_SH_IS_HUSH is not set -# CONFIG_FEATURE_SH_IS_MSH is not set -# CONFIG_FEATURE_SH_IS_NONE is not set -CONFIG_ASH=y - -# -# Ash Shell Options -# -CONFIG_ASH_BASH_COMPAT=y -CONFIG_ASH_JOB_CONTROL=y -CONFIG_ASH_READ_NCHARS=y -CONFIG_ASH_READ_TIMEOUT=y -CONFIG_ASH_ALIAS=y -CONFIG_ASH_MATH_SUPPORT=y -CONFIG_ASH_MATH_SUPPORT_64=y -CONFIG_ASH_GETOPTS=y -CONFIG_ASH_BUILTIN_ECHO=y -CONFIG_ASH_BUILTIN_PRINTF=y -CONFIG_ASH_BUILTIN_TEST=y -CONFIG_ASH_CMDCMD=y -# CONFIG_ASH_MAIL is not set -CONFIG_ASH_OPTIMIZE_FOR_SIZE=y -CONFIG_ASH_RANDOM_SUPPORT=y -# CONFIG_ASH_EXPAND_PRMT is not set -# CONFIG_HUSH is not set -# CONFIG_HUSH_HELP is not set -# CONFIG_HUSH_INTERACTIVE is not set -# CONFIG_HUSH_JOB is not set -# CONFIG_HUSH_TICK is not set -# CONFIG_HUSH_IF is not set -# CONFIG_HUSH_LOOPS is not set -# CONFIG_HUSH_CASE is not set -# CONFIG_LASH is not set -# CONFIG_MSH is not set - -# -# Bourne Shell Options -# -CONFIG_FEATURE_SH_EXTRA_QUIET=y -# CONFIG_FEATURE_SH_STANDALONE is not set -# CONFIG_FEATURE_SH_NOFORK is not set -# CONFIG_CTTYHACK is not set - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -CONFIG_FEATURE_ROTATE_LOGFILE=y -CONFIG_FEATURE_REMOTE_LOG=y -CONFIG_FEATURE_SYSLOGD_DUP=y -# CONFIG_FEATURE_IPC_SYSLOG is not set -CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE= -# CONFIG_LOGREAD is not set -# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -CONFIG_KLOGD=y -CONFIG_LOGGER=y - -# -# Runit Utilities -# -# CONFIG_RUNSV is not set -# CONFIG_RUNSVDIR is not set -# CONFIG_SV is not set -# CONFIG_SVLOGD is not set -# CONFIG_CHPST is not set -# CONFIG_SETUIDGID is not set -# CONFIG_ENVUIDGID is not set -# CONFIG_ENVDIR is not set -# CONFIG_SOFTLIMIT is not set -# CONFIG_CHCON is not set -# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set -# CONFIG_GETENFORCE is not set -# CONFIG_GETSEBOOL is not set -# CONFIG_LOAD_POLICY is not set -# CONFIG_MATCHPATHCON is not set -# CONFIG_RESTORECON is not set -# CONFIG_RUNCON is not set -# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set -# CONFIG_SELINUXENABLED is not set -# CONFIG_SETENFORCE is not set -# CONFIG_SETFILES is not set -# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set -# CONFIG_SETSEBOOL is not set -# CONFIG_SESTATUS is not set - -# -# Print Utilities -# -CONFIG_LPD=y -CONFIG_LPR=y -CONFIG_LPQ=y diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-cpio-mkdir.u --- a/busybox/stuff/busybox-1.16.1-cpio-mkdir.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ ---- busybox-1.16.1/archival/libunarchive/data_extract_all.c -+++ busybox-1.16.1/archival/libunarchive/data_extract_all.c -@@ -40,7 +40,8 @@ - } - } - else if (existing_sb.st_mtime >= file_header->mtime) { -- if (!(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET)) { -+ if (!(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET) -+ && (file_header->mode & S_IFMT) != S_IFDIR) { - bb_error_msg("%s not created: newer or " - "same age file exists", file_header->name); - } diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-dpkg_deb.u --- a/busybox/stuff/busybox-1.16.1-dpkg_deb.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ ---- busybox-1.16.1/archival/dpkg_deb.c -+++ busybox-1.16.1/archival/dpkg_deb.c -@@ -41,6 +41,11 @@ - llist_add_to(&control_tar_llist, (char*)"control.tar.bz2"); - #endif - -+#if ENABLE_FEATURE_SEAMLESS_LZMA -+ llist_add_to(&(ar_archive->accept), (char*)"data.tar.lzma"); -+ llist_add_to(&control_tar_llist, (char*)"control.tar.lzma"); -+#endif -+ - opt_complementary = "c--efXx:e--cfXx:f--ceXx:X--cefx:x--cefX"; - opt = getopt32(argv, "cefXx"); - argv += optind; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-ftpd.u --- a/busybox/stuff/busybox-1.16.1-ftpd.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- busybox-1.16.1/networking/ftpd.c -+++ busybox-1.16.1/networking/ftpd.c -@@ -633,10 +633,10 @@ - argv[4] = NULL; - - /* Improve compatibility with non-RFC conforming FTP clients -- * which send e.g. "LIST -l", "LIST -la". -+ * which send e.g. "LIST -l", "LIST -la", "LIST -aL". - * See https://bugs.kde.org/show_bug.cgi?id=195578 */ - if (ENABLE_FEATURE_FTPD_ACCEPT_BROKEN_LIST -- && G.ftp_arg && G.ftp_arg[0] == '-' && G.ftp_arg[1] == 'l' -+ && G.ftp_arg && G.ftp_arg[0] == '-' - ) { - const char *tmp = strchr(G.ftp_arg, ' '); - if (tmp) /* skip the space */ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-modinfo.u --- a/busybox/stuff/busybox-1.16.1-modinfo.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ ---- busybox-1.16.1/include/applets.h -+++ busybox-1.16.1/include/applets.h -@@ -273,6 +273,7 @@ - IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkpasswd)) - IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP)) - IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP)) -+IF_MODINFO(APPLET(modinfo, _BB_DIR_SBIN, _BB_SUID_DROP)) - IF_MODPROBE(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP)) - IF_MODPROBE_SMALL(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP)) - IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP)) - ---- busybox-1.16.1/include/usage.h -+++ busybox-1.16.1/include/usage.h -@@ -2984,6 +2984,20 @@ - " which are the default for alias 'tulip2' overridden by the options 'irq=2 io=0x210'\n\n" \ - " from the command line\n" - -+#define modinfo_trivial_usage \ -+ "[-adlp0] [-F keyword] MODULE" -+#define modinfo_full_usage "\n\n" \ -+ "Options:" \ -+ "\n -a Shortcut for '-F author'" \ -+ "\n -d Shortcut for '-F description'" \ -+ "\n -l Shortcut for '-F license'" \ -+ "\n -p Shortcut for '-F parm'" \ -+ "\n -F keyword Keyword to look for" \ -+ "\n -0 Use \\0 string separator. Not \\n" \ -+ -+#define modinfo_example_usage \ -+ "$ modinfo -F vermagic loop\n" -+ - #define more_trivial_usage \ - "[FILE]..." - #define more_full_usage "\n\n" \ - ---- busybox-1.16.0/modutils/Config.in -+++ busybox-1.16.0/modutils/Config.in -@@ -110,6 +110,12 @@ - and modules.symbols) that contain dependency information - for modprobe. - -+config MODINFO -+ bool "modinfo" -+ default n -+ help -+ Show information about a Linux Kernel module -+ - comment "Options common to multiple modutils" - - config FEATURE_2_4_MODULES - ---- busybox-1.16.1/modutils/Kbuild -+++ busybox-1.16.1/modutils/Kbuild -@@ -12,3 +12,4 @@ - lib-$(CONFIG_MODPROBE) += modprobe.o modutils.o - lib-$(CONFIG_RMMOD) += rmmod.o modutils.o - lib-$(CONFIG_FEATURE_2_4_MODULES) += modutils-24.o -+lib-$(CONFIG_MODINFO) += modinfo.o - ---- busybox-1.16.1/modutils/modinfo.c -+++ busybox-1.16.1/modutils/modinfo.c -@@ -0,0 +1,121 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * modinfo - retrieve module info -+ * Copyright (c) 2008 Pascal Bellard -+ * -+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. -+ */ -+ -+#undef _GNU_SOURCE -+#define _GNU_SOURCE -+#include -+#include -+#include "modutils.h" -+#include /* uname() */ -+ -+#define ALL_TAGS 0x3F -+ -+enum { -+ ARG_F = (1<<6), /* field name */ -+ ARG_0 = (1<<7) /* \0 as separator */ -+}; -+ -+struct modinfo_env { -+ char *field; -+ int tags; -+}; -+ -+static int display(char *data, const char *pattern, int flag) -+{ -+ if (flag) { -+ int n = printf("%s:",pattern); -+ while (n++ < 16) bb_putchar(' '); -+ } -+ return printf("%s%c",data, (option_mask32 & ARG_0) ? '\0' : '\n'); -+} -+ -+static void modinfo(char *path, struct modinfo_env *env) -+{ -+ static const char *shortcuts[] = { -+ "filename", -+ "description", -+ "author", -+ "license", -+ "vermagic", -+ "parm", -+ }; -+ size_t len; -+ int j, length; -+ char *ptr, *the_module; -+ const char *field = env->field; -+ int tags = env->tags; -+ -+ if (tags & 1) { /* filename */ -+ display(path,shortcuts[0],1 != tags); -+ } -+ len = MAXINT(ssize_t); -+ the_module = xmalloc_open_zipped_read_close(path, &len); -+ if (!the_module) return; -+ if (field) tags |= ALL_TAGS+1; -+ for (j = 1; (1< -+ -+int lookup_entry(const char *comp, char *dest); -+void lookup_file(char *filename); -+ -+int lookup_entry(const char *comp, char *dest) -+{ -+ DIR *dirp; -+ struct dirent *dptr; -+ if (!dest) return 0; -+ dirp = opendir(dest[0] ? dest : "."); -+ while ((dptr = readdir(dirp))) { -+ if (!strcasecmp(dptr->d_name, comp)) { -+ if (dest[0]) strcat(dest, "/"); -+ strcat(dest, dptr->d_name); -+ closedir(dirp); -+ return 1; -+ } -+ } -+ closedir(dirp); -+ return 0; -+} -+ -+void lookup_file(char *filename) -+{ -+ int found = 0; -+ int len = 0; -+ char dest[1024]; -+ char comp[1024]; -+ char *check = filename; -+ char *seek = NULL; -+ -+ dest[0] = 0; -+ check++; -+ while (*check) { -+ seek = strchr(check, '\\'); -+ if (!seek) { -+ if ((*check) && (lookup_entry(check, dest))) -+ found = 1; -+ break; -+ } -+ len = seek - check; -+ memcpy(comp, check, len); -+ comp[len]=0; -+ if (!lookup_entry(comp, dest)) -+ break; -+ check += len + 1; -+ } -+ -+ if (found) { -+ filename[0] = 0; -+ strcat(filename, dest); -+ } -+} -+#endif -+ - #if ENABLE_TFTP - - int tftp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -@@ -782,6 +839,11 @@ - goto err; - } - local_file = block_buf + 2; -+#if ENABLE_FEATURE_TFTPD_RIS -+ if (local_file[0] == '\\') { -+ lookup_file(local_file); -+ } -+#endif - if (local_file[0] == '.' || strstr(local_file, "/.")) { - error_msg = "dot in file name"; - goto err; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-stat.u --- a/busybox/stuff/busybox-1.16.1-stat.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ ---- busybox-1.16.1/coreutils/stat.c -+++ busybox-1.16.1/coreutils/stat.c -@@ -14,12 +14,14 @@ - */ - - #include "libbb.h" -+#include - - /* vars to control behavior */ - #define OPT_FILESYS (1 << 0) - #define OPT_TERSE (1 << 1) - #define OPT_DEREFERENCE (1 << 2) --#define OPT_SELINUX (1 << 3) -+#define OPT_MAP (1 << 3) -+#define OPT_SELINUX (1 << 4) - - #if ENABLE_FEATURE_STAT_FORMAT - typedef bool (*statfunc_ptr)(const char *, const char *); -@@ -359,6 +361,26 @@ - - /* Stat the file system and print what we find. */ - #if !ENABLE_FEATURE_STAT_FORMAT -+#define do_mapfile(filename, format) do_mapfile(filename) -+#endif -+static bool do_mapfile(const char *filename, const char *format) -+{ -+ int i = 0; -+ int fd = xopen(filename, O_RDONLY); -+ -+#if ENABLE_FEATURE_STAT_FORMAT -+ (void) format; -+#endif -+ while (1) { -+ int blk = i++; -+ if (ioctl(fd,FIBMAP,&blk) < 0 || blk == 0) break; -+ printf("%u\n",blk); -+ } -+ return 1; -+} -+ -+/* Stat the file system and print what we find. */ -+#if !ENABLE_FEATURE_STAT_FORMAT - #define do_statfs(filename, format) do_statfs(filename) - #endif - static bool do_statfs(const char *filename, const char *format) -@@ -649,7 +671,7 @@ - statfunc_ptr statfunc = do_stat; - - opt_complementary = "-1"; /* min one arg */ -- opts = getopt32(argv, "ftL" -+ opts = getopt32(argv, "ftLm" - IF_SELINUX("Z") - IF_FEATURE_STAT_FORMAT("c:", &format) - ); -@@ -660,6 +682,9 @@ - selinux_or_die(); - } - #endif -+ if (opts & OPT_MAP) { /* -m */ -+ statfunc = do_mapfile; -+ } - ok = 1; - argv += optind; - for (i = 0; argv[i]; ++i) - ---- busybox-1.16.1/include/usage.h -+++ busybox-1.16.1/include/usage.h -@@ -4201,6 +4201,7 @@ - "\n -f Display filesystem status" \ - "\n -L Follow links" \ - "\n -t Display info in terse form" \ -+ "\n -m Display block list" \ - IF_SELINUX( \ - "\n -Z Print security context" \ - ) \ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-syslogd.u --- a/busybox/stuff/busybox-1.16.1-syslogd.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- busybox-1.16.1/sysklogd/syslogd.c -+++ busybox-1.16.1/sysklogd/syslogd.c -@@ -46,7 +46,7 @@ - #undef SYSLOGD_WRLOCK - - enum { -- MAX_READ = 256, -+ MAX_READ = 1024, - DNS_WAIT_SEC = 2 * 60, - }; - diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-tar.u --- a/busybox/stuff/busybox-1.16.1-tar.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -Accept --wildcards argument ---- busybox-1.16.1/archival/tar.c -+++ busybox-1.16.1/archival/tar.c -@@ -813,6 +813,8 @@ - # if ENABLE_FEATURE_TAR_NOPRESERVE_TIME - "touch\0" No_argument "m" - # endif -+ /* ignore --wildcards */ -+ "wildcards\0" No_argument "\xfb" - /* use numeric uid/gid from tar header, not textual */ - "numeric-owner\0" No_argument "\xfc" - /* do not restore mode */ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-vcsa2txt.u --- a/busybox/stuff/busybox-1.16.1-vcsa2txt.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,576 +0,0 @@ ---- busybox-1.16.1/include/applets.h -+++ busybox-1.16.1/include/applets.h -@@ -105,6 +105,7 @@ - IF_CLEAR(APPLET(clear, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_CMP(APPLET(cmp, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_COMM(APPLET(comm, _BB_DIR_USR_BIN, _BB_SUID_DROP)) -+IF_VCSA2TXT(APPLET(conspy, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp)) - IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP)) - IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) -@@ -420,6 +421,7 @@ - IF_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP)) -+IF_VCSA2TXT(APPLET(vcsa2txt, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP)) - IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) - IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP)) - ---- busybox-1.16.1/include/usage.h -+++ busybox-1.16.1/include/usage.h -@@ -440,6 +440,23 @@ - "\n -1 Close stdout" \ - "\n -2 Close stderr" \ - -+#define conspy_trivial_usage \ -+ "[-vcsnd] [-x rows] [-y lines] [virtual_console]" -+#define conspy_full_usage "\n\n" \ -+ "A text-mode VNC like program for Linux virtual terminals.\n" \ -+ "\nTo exit, quickly press escape 3 times.\n" \ -+ "\nvirtual_console:\n" \ -+ " omitted Track the current console.\n" \ -+ " 1..63 Virtual console N.\n" \ -+ "\nOptions:" \ -+ "\n -v Don't send keystrokes to the console." \ -+ "\n -c May create device in /dev." \ -+ "\n -s Open a SHELL session." \ -+ "\n -n No colors. Black & white only." \ -+ "\n -d Dump console to stdout."\ -+ "\n -x r Skip the r first rows."\ -+ "\n -y l Skip the l first lines."\ -+ - #define setuidgid_trivial_usage \ - "USER PROG ARGS" - #define setuidgid_full_usage "\n\n" \ -@@ -5011,6 +5028,13 @@ - "\n set_ingress_map [vlan-name] [skb_priority] [vlan_qos]" \ - "\n set_name_type [name-type]" \ - -+#define vcsa2txt_trivial_usage \ -+ "stdin" -+#define vcsa2txt_full_usage \ -+ " Filter /dev/vcsa* to ansi escape sequences" -+#define vcsa2txt_example_usage \ -+ "# vcsa2txt < /dev/vcsa1\n" -+ - #define vi_trivial_usage \ - "[OPTIONS] [FILE]..." - #define vi_full_usage "\n\n" \ - ---- busybox-1.16.1/miscutils/Config.in -+++ busybox-1.16.1/miscutils/Config.in -@@ -625,6 +625,12 @@ - help - Write a message to all users that are logged in. - -+config VCSA2TXT -+ bool "vcsa2txt/conspy" -+ default n -+ help -+ Filter /dev/vcsa* output to ansi escape sequences. -+ - config WATCHDOG - bool "watchdog" - default n - ---- busybox-1.16.1/util-linux/Kbuild -+++ busybox-1.16.1/util-linux/Kbuild -@@ -43,3 +43,4 @@ - lib-$(CONFIG_SWITCH_ROOT) += switch_root.o - lib-$(CONFIG_MKFS_EXT2) += tune2fs.o - lib-$(CONFIG_UMOUNT) += umount.o -+lib-$(CONFIG_VCSA2TXT) += vcsa2txt.o - ---- busybox-1.16.1/util-linux/vcsa2txt.c -+++ busybox-1.16.1/util-linux/vcsa2txt.c -@@ -0,0 +1,489 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * A text-mode VNC like program for Linux virtual terminals. -+ * -+ * pascal.bellard@ads-lu.com -+ * -+ * Based on Russell Stuart's conspy.c -+ * http://ace-host.stuart.id.au/russell/files/conspy.c -+ * -+ * Licensed under GPLv2 or later, see file License in this tarball for details. -+ * -+ * example : conspy num shared access to console num -+ * or conspy -d num screenshot of console num -+ * or conspy -cs num poor man's GNU screen like -+ */ -+ -+//applet:IF_CONSPY(APPLET(conspy, _BB_DIR_BIN, _BB_SUID_DROP)) -+ -+//kbuild:lib-$(CONFIG_CONSPY) += conspy.o -+ -+//config:config CONSPY -+//config: bool "conspy" -+//config: default n -+//config: help -+//config: A text-mode VNC like program for Linux virtual terminals. -+//config: example : conspy num shared access to console num -+//config: or conspy -d num screenshot of console num -+//config: or conspy -cs num poor man's GNU screen like -+ -+//usage:#define conspy_trivial_usage -+//usage: "[-vcsndf] [-x ROW] [-y LINE] [CONSOLE_NO]" -+//usage:#define conspy_full_usage "\n\n" -+//usage: "A text-mode VNC like program for Linux virtual consoles." -+//usage: "\nTo exit, quickly press ESC 3 times." -+//usage: "\n" -+//usage: "\nOptions:" -+//usage: "\n -v Don't send keystrokes to the console" -+//usage: "\n -c Create missing devices in /dev" -+//usage: "\n -s Open a SHELL session" -+//usage: "\n -n Black & white" -+//usage: "\n -d Dump console to stdout" -+//usage: "\n -f Follow cursor" -+//usage: "\n -x ROW Starting row" -+//usage: "\n -y LINE Starting line" -+ -+#include "libbb.h" -+#include -+ -+struct screen_info { -+ unsigned char lines, rows, cursor_x, cursor_y; -+}; -+ -+#define CHAR(x) ((x)[0]) -+#define ATTR(x) ((x)[1]) -+#define NEXT(x) ((x)+=2) -+#define DATA(x) (* (short *) (x)) -+ -+struct globals { -+ char* data; -+ int size; -+ int x, y; -+ int kbd_fd; -+ unsigned width; -+ unsigned height; -+ char last_attr; -+ int ioerror_count; -+ int key_count; -+ int escape_count; -+ int nokeys; -+ int current; -+ int vcsa_fd; -+ struct screen_info info; -+ struct termios term_orig; -+}; -+ -+#define G (*ptr_to_globals) -+#define INIT_G() do { \ -+ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ -+} while (0) -+ -+enum { -+ FLAG_v, // view only -+ FLAG_c, // create device if need -+ FLAG_s, // session -+ FLAG_n, // no colors -+ FLAG_d, // dump screen -+ FLAG_f, // follow cursor -+}; -+#define FLAG(x) (1 << FLAG_##x) -+#define BW (option_mask32 & FLAG(n)) -+ -+static void screen_read_close(void) -+{ -+ unsigned i, j; -+ char *data = G.data + G.current; -+ -+ xread(G.vcsa_fd, data, G.size); -+ G.last_attr = 0; -+ for (i = 0; i < G.info.lines; i++) { -+ for (j = 0; j < G.info.rows; j++, NEXT(data)) { -+ unsigned x = j - G.x; // if will catch j < G.x too -+ unsigned y = i - G.y; // if will catch i < G.y too -+ -+ if (CHAR(data) < ' ') -+ CHAR(data) = ' '; -+ if (y >= G.height || x >= G.width) -+ DATA(data) = 0; -+ } -+ } -+ close(G.vcsa_fd); -+} -+ -+static void screen_char(char *data) -+{ -+ if (!BW && G.last_attr != ATTR(data)) { -+ // BLGCRMOW -+ static const char color[8] = "04261537"; -+ -+ printf("\033[%c;4%c;3%cm", -+ (ATTR(data) & 8) ? '1' // bold -+ : '0', // defaults -+ color[(ATTR(data) >> 4) & 7], color[ATTR(data) & 7]); -+ G.last_attr = ATTR(data); -+ } -+ bb_putchar(CHAR(data)); -+} -+ -+#define clrscr() printf("\033[1;1H" "\033[0J") -+#define curoff() printf("\033[?25l") -+ -+static void curon(void) -+{ -+ printf("\033[?25h"); -+} -+ -+static void gotoxy(int row, int line) -+{ -+ printf("\033[%u;%uH", line + 1, row + 1); -+} -+ -+static void screen_dump(void) -+{ -+ int linefeed_cnt; -+ int line, row; -+ int linecnt = G.info.lines - G.y; -+ char *data = G.data + G.current + (2 * G.y * G.info.rows); -+ -+ linefeed_cnt = 0; -+ for (line = 0; line < linecnt && line < G.height; line++) { -+ int space_cnt = 0; -+ for (row = 0; row < G.info.rows; row++, NEXT(data)) { -+ unsigned tty_row = row - G.x; // if will catch row < G.x too -+ -+ if (tty_row >= G.width) -+ continue; -+ space_cnt++; -+ if ((G.last_attr == ATTR(data) || BW) && (CHAR(data) | ' ') == ' ') -+ continue; -+ while (linefeed_cnt != 0) { -+ bb_putchar('\r'); -+ bb_putchar('\n'); -+ linefeed_cnt--; -+ } -+ while (--space_cnt) -+ bb_putchar(' '); -+ screen_char(data); -+ } -+ linefeed_cnt++; -+ } -+} -+ -+static void curmove(void) -+{ -+ unsigned cx = G.info.cursor_x - G.x; -+ unsigned cy = G.info.cursor_y - G.y; -+ -+ if (cx >= G.width || cy >= G.height) { -+ curoff(); -+ } else { -+ curon(); -+ gotoxy(cx, cy); -+ } -+ fflush_all(); -+} -+ -+static void cleanup(int code) -+{ -+ curon(); -+ fflush_all(); -+ tcsetattr(G.kbd_fd, TCSANOW, &G.term_orig); -+ if (ENABLE_FEATURE_CLEAN_UP) { -+ free(ptr_to_globals); -+ close(G.kbd_fd); -+ } -+ // Reset attributes -+ if (!BW) -+ printf("\033[0m"); -+ bb_putchar('\n'); -+ if (code > 1) -+ kill_myself_with_sig(code); // does not return -+ exit(code); -+} -+ -+static void get_initial_data(const char* vcsa_name) -+{ -+ G.vcsa_fd = xopen(vcsa_name, O_RDONLY); -+ xread(G.vcsa_fd, &G.info, 4); -+ G.size = G.info.rows * G.info.lines * 2; -+ G.width = G.height = UINT_MAX; -+ G.data = xzalloc(2 * G.size); -+ screen_read_close(); -+} -+ -+static void create_cdev_if_doesnt_exist(const char* name, dev_t dev) -+{ -+ int fd = open(name, O_RDONLY); -+ if (fd != -1) -+ close(fd); -+ else if (errno == ENOENT) -+ mknod(name, S_IFCHR | 0660, dev); -+} -+ -+static NOINLINE void start_shell_in_child(const char* tty_name) -+{ -+ int pid = vfork(); -+ if (pid < 0) { -+ bb_perror_msg_and_die("vfork"); -+ } -+ if (pid == 0) { -+ struct termios termchild; -+ char *shell = getenv("SHELL"); -+ -+ if (!shell) -+ shell = (char *) DEFAULT_SHELL; -+ signal(SIGHUP, SIG_IGN); -+ // set tty as a controlling tty -+ setsid(); -+ // make tty to be input, output, error -+ close(0); -+ xopen(tty_name, O_RDWR); // uses fd 0 -+ xdup2(0, 1); -+ xdup2(0, 2); -+ ioctl(0, TIOCSCTTY, 1); -+ tcsetpgrp(0, getpid()); -+ tcgetattr(0, &termchild); -+ termchild.c_lflag |= ECHO; -+ termchild.c_oflag |= ONLCR | XTABS; -+ termchild.c_iflag |= ICRNL; -+ termchild.c_iflag &= ~IXOFF; -+ tcsetattr_stdin_TCSANOW(&termchild); -+ execl(shell, shell, "-i", (char *) NULL); -+ bb_simple_perror_msg_and_die(shell); -+ } -+} -+ -+int vcsa2txt_main(int argc) MAIN_EXTERNALLY_VISIBLE; -+int vcsa2txt_main(int argc) -+{ -+ INIT_G(); -+ option_mask32 = FLAG(n); -+ if (argc < 2) option_mask32 = 0; -+ xread(0, &G.info, 4); -+ G.size = G.info.rows * G.info.lines * 2; -+ G.width = G.height = UINT_MAX; -+ G.data = xzalloc(G.size); -+ screen_read_close(); -+ screen_dump(); -+ bb_putchar('\n'); -+ if (ENABLE_FEATURE_CLEAN_UP) { -+ free(ptr_to_globals); -+ close(G.kbd_fd); -+ } -+ return 0; -+} -+ -+int conspy_main(int argc UNUSED_PARAM, char **argv) MAIN_EXTERNALLY_VISIBLE; -+int conspy_main(int argc UNUSED_PARAM, char **argv) -+{ -+ char vcsa_name[sizeof("/dev/vcsa") + 2]; -+ char tty_name[sizeof("/dev/tty") + 2]; -+#define keybuf bb_common_bufsiz1 -+ struct termios termbuf; -+ unsigned opts; -+ unsigned ttynum; -+ int poll_timeout_ms; -+#if ENABLE_LONG_OPTS -+ static const char getopt_longopts[] ALIGN1 = -+ "viewonly\0" No_argument "v" -+ "createdevice\0" No_argument "c" -+ "session\0" No_argument "s" -+ "nocolors\0" No_argument "n" -+ "dump\0" No_argument "d" -+ "follow\0" No_argument "f" -+ ; -+ -+ applet_long_options = getopt_longopts; -+#endif -+ INIT_G(); -+ -+ opt_complementary = "x+:y+"; // numeric params -+ opts = getopt32(argv, "vcsndfx:y:", &G.x, &G.y); -+ argv += optind; -+ ttynum = 0; -+ if (argv[0]) { -+ ttynum = xatou_range(argv[0], 0, 63); -+ } -+ sprintf(vcsa_name, "/dev/vcsa%u", ttynum); -+ sprintf(tty_name, "%s%u", "/dev/tty", ttynum); -+ if (opts & FLAG(c)) { -+ if ((opts & (FLAG(s)|FLAG(v))) != FLAG(v)) -+ create_cdev_if_doesnt_exist(tty_name, makedev(4, ttynum)); -+ create_cdev_if_doesnt_exist(vcsa_name, makedev(7, 128 + ttynum)); -+ } -+ if ((opts & FLAG(s)) && ttynum) { -+ start_shell_in_child(tty_name); -+ } -+ -+ get_initial_data(vcsa_name); -+ G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY); -+ if (opts & FLAG(d)) { -+ screen_dump(); -+ bb_putchar('\n'); -+ if (ENABLE_FEATURE_CLEAN_UP) { -+ free(ptr_to_globals); -+ close(G.kbd_fd); -+ } -+ return 0; -+ } -+ -+ bb_signals(BB_FATAL_SIGS, cleanup); -+ // All characters must be passed through to us unaltered -+ tcgetattr(G.kbd_fd, &G.term_orig); -+ termbuf = G.term_orig; -+ termbuf.c_iflag &= ~(BRKINT|INLCR|ICRNL|IXON|IXOFF|IUCLC|IXANY|IMAXBEL); -+ termbuf.c_oflag &= ~(OPOST); -+ termbuf.c_lflag &= ~(ISIG|ICANON|ECHO); -+ termbuf.c_cc[VMIN] = 1; -+ termbuf.c_cc[VTIME] = 0; -+ tcsetattr(G.kbd_fd, TCSANOW, &termbuf); -+ poll_timeout_ms = 250; -+ while (1) { -+ struct pollfd pfd; -+ int bytes_read; -+ int i, j; -+ char *data, *old; -+ -+ old = G.data + G.current; -+ G.current = G.size - G.current; -+ data = G.data + G.current; -+ -+ // Close & re-open vcsa in case they have -+ // swapped virtual consoles -+ G.vcsa_fd = xopen(vcsa_name, O_RDONLY); -+ xread(G.vcsa_fd, &G.info, 4); -+ if (G.size != (G.info.rows * G.info.lines * 2)) { -+ cleanup(1); -+ } -+ i = G.width; -+ j = G.height; -+ get_terminal_width_height(G.kbd_fd, &G.width, &G.height); -+ if ((option_mask32 & FLAG(f))) { -+ int nx = G.info.cursor_x - G.width + 1; -+ int ny = G.info.cursor_y - G.height + 1; -+ -+ if (G.info.cursor_x < G.x) { -+ G.x = G.info.cursor_x; -+ i = 0; // force refresh -+ } -+ if (nx > G.x) { -+ G.x = nx; -+ i = 0; // force refresh -+ } -+ if (G.info.cursor_y < G.y) { -+ G.y = G.info.cursor_y; -+ i = 0; // force refresh -+ } -+ if (ny > G.y) { -+ G.y = ny; -+ i = 0; // force refresh -+ } -+ } -+ -+ // Scan console data and redraw our tty where needed -+ screen_read_close(); -+ if (i != G.width || j != G.height) { -+ clrscr(); -+ screen_dump(); -+ } -+ else for (i = 0; i < G.info.lines; i++) { -+ char *last = last; -+ char *first = NULL; -+ int iy = i - G.y; -+ -+ if (iy >= (int) G.height) -+ break; -+ for (j = 0; j < G.info.rows; j++) { -+ last = data; -+ if (DATA(data) != DATA(old) && iy >= 0) { -+ unsigned jx = j - G.x; -+ -+ last = NULL; -+ if (first == NULL && jx < G.width) { -+ first = data; -+ gotoxy(jx, iy); -+ } -+ } -+ NEXT(old); -+ NEXT(data); -+ } -+ if (first == NULL) -+ continue; -+ if (last == NULL) -+ last = data; -+ -+ // Write the data to the screen -+ for (; first < last; NEXT(first)) -+ screen_char(first); -+ } -+ curmove(); -+ -+ // Wait for local user keypresses -+ pfd.fd = G.kbd_fd; -+ pfd.events = POLLIN; -+ bytes_read = 0; -+ switch (poll(&pfd, 1, poll_timeout_ms)) { -+ char *k; -+ case -1: -+ if (errno != EINTR) -+ cleanup(1); -+ break; -+ case 0: -+ if (++G.nokeys >= 4) -+ G.nokeys = G.escape_count = 0; -+ break; -+ default: -+ // Read the keys pressed -+ k = keybuf + G.key_count; -+ bytes_read = read(G.kbd_fd, k, sizeof(keybuf) - G.key_count); -+ if (bytes_read < 0) -+ cleanup(1); -+ -+ // Do exit processing -+ for (i = 0; i < bytes_read; i++) { -+ if (k[i] != '\033') G.escape_count = 0; -+ else if (++G.escape_count >= 3) -+ cleanup(0); -+ } -+ } -+ poll_timeout_ms = 250; -+ -+ // Insert all keys pressed into the virtual console's input -+ // buffer. Don't do this if the virtual console is in scan -+ // code mode - giving ASCII characters to a program expecting -+ // scan codes will confuse it. -+ if (!(option_mask32 & FLAG(v)) && G.escape_count == 0) { -+ int handle, result; -+ long kbd_mode; -+ -+ G.key_count += bytes_read; -+ handle = xopen(tty_name, O_WRONLY); -+ result = ioctl(handle, KDGKBMODE, &kbd_mode); -+ if (result == -1) -+ /* nothing */; -+ else if (kbd_mode != K_XLATE && kbd_mode != K_UNICODE) -+ G.key_count = 0; // scan code mode -+ else { -+ for (i = 0; i < G.key_count && result != -1; i++) -+ result = ioctl(handle, TIOCSTI, keybuf + i); -+ G.key_count -= i; -+ if (G.key_count) -+ memmove(keybuf, keybuf + i, G.key_count); -+ // If there is an application on console which reacts -+ // to keypresses, we need to make our first sleep -+ // shorter to quickly redraw whatever it printed there. -+ poll_timeout_ms = 20; -+ } -+ // Close & re-open tty in case they have -+ // swapped virtual consoles -+ close(handle); -+ -+ // We sometimes get spurious IO errors on the TTY -+ // as programs close and re-open it -+ if (result != -1) -+ G.ioerror_count = 0; -+ else if (errno != EIO || ++G.ioerror_count > 4) -+ cleanup(1); -+ } -+ } -+} diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1-zmodules.u --- a/busybox/stuff/busybox-1.16.1-zmodules.u Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ ---- busybox-1.16.1/modutils/depmod.c -+++ busybox-1.16.1/modutils/depmod.c -@@ -37,7 +37,10 @@ - ARG_e = (1<<3), /* with -F, print unresolved symbols */ - ARG_F = (1<<4), /* System.map that contains the symbols */ - ARG_n = (1<<5), /* dry-run, print to stdout only */ -- ARG_r = (1<<6) /* Compat dummy. Linux Makefile uses it */ -+ ARG_r = (1<<6), /* Compat dummy. Linux Makefile uses it */ -+ ARG_u = (1<<7), /* unresolved-error: ignored */ -+ ARG_q = (1<<8), /* quiet: ignored */ -+ ARG_C = (1<<9) /* config: ignored */ - }; - - static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARAM, -@@ -143,7 +146,7 @@ - struct utsname uts; - int tmp; - -- getopt32(argv, "aAb:eF:nr", &moddir_base, NULL); -+ getopt32(argv, "aAb:eF:nruqC:", &moddir_base, NULL); - argv += optind; - - /* goto modules location */ - ---- busybox-1.16.1/libbb/read.c -+++ busybox-1.16.1/libbb/read.c -@@ -328,16 +328,18 @@ - - sfx = strrchr(fname, '.'); - if (sfx) { -- if (ENABLE_FEATURE_SEAMLESS_LZMA && strcmp(sfx, ".lzma") == 0) -- /* .lzma has no header/signature, just trust it */ -+ xread(fd, &magic, 2); -+ if (ENABLE_FEATURE_SEAMLESS_LZMA && -+ ((magic[0] == 0x5d && magic[1] == 0) || strcmp(sfx, ".lzma") == 0)) { -+ xlseek(fd, 0, SEEK_SET); - open_transformer(fd, unpack_lzma_stream, "unlzma"); -+ } - else - if ((ENABLE_FEATURE_SEAMLESS_GZ && strcmp(sfx, ".gz") == 0) - || (ENABLE_FEATURE_SEAMLESS_BZ2 && strcmp(sfx, ".bz2") == 0) - ) { - /* .gz and .bz2 both have 2-byte signature, and their - * unpack_XXX_stream wants this header skipped. */ -- xread(fd, &magic, 2); - #if ENABLE_FEATURE_SEAMLESS_GZ - #if BB_MMU - xformer = unpack_gz_stream; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.16.1.config --- a/busybox/stuff/busybox-1.16.1.config Wed Jul 07 19:33:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,923 +0,0 @@ -# -# Automatically generated make config: don't edit -# Busybox version: 1.16.1 -# Fri Jun 4 16:23:33 2010 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -CONFIG_DESKTOP=y -# CONFIG_EXTRA_COMPAT is not set -CONFIG_INCLUDE_SUSv2=y -# CONFIG_USE_PORTABLE_CODE is not set -CONFIG_FEATURE_BUFFERS_USE_MALLOC=y -# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set -# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set -CONFIG_SHOW_USAGE=y -CONFIG_FEATURE_VERBOSE_USAGE=y -CONFIG_FEATURE_COMPRESS_USAGE=y -CONFIG_FEATURE_INSTALLER=y -CONFIG_LOCALE_SUPPORT=y -# CONFIG_FEATURE_ASSUME_UNICODE is not set -# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set -CONFIG_LONG_OPTS=y -CONFIG_FEATURE_DEVPTS=y -# CONFIG_FEATURE_CLEAN_UP is not set -CONFIG_FEATURE_PIDFILE=y -CONFIG_FEATURE_SUID=y -CONFIG_FEATURE_SUID_CONFIG=y -# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set -# CONFIG_FEATURE_PREFER_APPLETS is not set -CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" -CONFIG_FEATURE_SYSLOG=y -CONFIG_FEATURE_HAVE_RPC=y - -# -# Build Options -# -# CONFIG_STATIC is not set -# CONFIG_PIE is not set -# CONFIG_NOMMU is not set -# CONFIG_BUILD_LIBBUSYBOX is not set -# CONFIG_FEATURE_INDIVIDUAL is not set -# CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y -CONFIG_CROSS_COMPILER_PREFIX="" -CONFIG_EXTRA_CFLAGS="" - -# -# Debugging Options -# -# CONFIG_DEBUG is not set -# CONFIG_DEBUG_PESSIMIZE is not set -# CONFIG_WERROR is not set -CONFIG_NO_DEBUG_LIB=y -# CONFIG_DMALLOC is not set -# CONFIG_EFENCE is not set - -# -# Installation Options -# -# CONFIG_INSTALL_NO_USR is not set -CONFIG_INSTALL_APPLET_SYMLINKS=y -# CONFIG_INSTALL_APPLET_HARDLINKS is not set -# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set -# CONFIG_INSTALL_APPLET_DONT is not set -# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set -# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set -# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set -CONFIG_PREFIX="./_install" - -# -# Busybox Library Tuning -# -CONFIG_PASSWORD_MINLEN=6 -CONFIG_MD5_SIZE_VS_SPEED=0 -# CONFIG_FEATURE_FAST_TOP is not set -# CONFIG_FEATURE_ETC_NETWORKS is not set -CONFIG_FEATURE_EDITING=y -CONFIG_FEATURE_EDITING_MAX_LEN=1024 -# CONFIG_FEATURE_EDITING_VI is not set -CONFIG_FEATURE_EDITING_HISTORY=127 -CONFIG_FEATURE_EDITING_SAVEHISTORY=y -CONFIG_FEATURE_TAB_COMPLETION=y -# CONFIG_FEATURE_USERNAME_COMPLETION is not set -CONFIG_FEATURE_EDITING_FANCY_PROMPT=y -# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set -CONFIG_FEATURE_NON_POSIX_CP=y -# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set -CONFIG_FEATURE_COPYBUF_KB=4 -CONFIG_MONOTONIC_SYSCALL=y -CONFIG_IOCTL_HEX2STR_ERROR=y -CONFIG_FEATURE_HWIB=y - -# -# Applets -# - -# -# Archival Utilities -# -CONFIG_FEATURE_SEAMLESS_LZMA=y -CONFIG_FEATURE_SEAMLESS_BZ2=y -CONFIG_FEATURE_SEAMLESS_GZ=y -CONFIG_FEATURE_SEAMLESS_Z=y -CONFIG_AR=y -# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -CONFIG_BUNZIP2=y -# CONFIG_BZIP2 is not set -CONFIG_CPIO=y -CONFIG_FEATURE_CPIO_O=y -CONFIG_FEATURE_CPIO_P=y -CONFIG_DPKG=y -CONFIG_DPKG_DEB=y -CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y -CONFIG_GUNZIP=y -CONFIG_GZIP=y -CONFIG_FEATURE_GZIP_LONG_OPTIONS=y -# CONFIG_LZOP is not set -# CONFIG_LZOP_COMPR_HIGH is not set -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -# CONFIG_FEATURE_TAR_AUTODETECT is not set -CONFIG_FEATURE_TAR_FROM=y -CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y -CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y -CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y -CONFIG_FEATURE_TAR_LONG_OPTIONS=y -CONFIG_FEATURE_TAR_UNAME_GNAME=y -CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y -CONFIG_UNCOMPRESS=y -CONFIG_UNLZMA=y -# CONFIG_FEATURE_LZMA_FAST is not set -CONFIG_UNZIP=y - -# -# Coreutils -# -CONFIG_BASENAME=y -CONFIG_CAL=y -CONFIG_CAT=y -# CONFIG_CATV is not set -CONFIG_CHGRP=y -CONFIG_CHMOD=y -CONFIG_CHOWN=y -CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y -CONFIG_CHROOT=y -CONFIG_CKSUM=y -CONFIG_COMM=y -CONFIG_CP=y -CONFIG_FEATURE_CP_LONG_OPTIONS=y -CONFIG_CUT=y -CONFIG_DATE=y -CONFIG_FEATURE_DATE_ISOFMT=y -CONFIG_FEATURE_DATE_COMPAT=y -CONFIG_DD=y -CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set -CONFIG_FEATURE_DD_IBS_OBS=y -CONFIG_DF=y -CONFIG_FEATURE_DF_FANCY=y -CONFIG_DIRNAME=y -CONFIG_DOS2UNIX=y -CONFIG_UNIX2DOS=y -CONFIG_DU=y -CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y -CONFIG_ECHO=y -CONFIG_FEATURE_FANCY_ECHO=y -CONFIG_ENV=y -CONFIG_FEATURE_ENV_LONG_OPTIONS=y -CONFIG_EXPAND=y -CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y -CONFIG_EXPR=y -# CONFIG_EXPR_MATH_SUPPORT_64 is not set -CONFIG_FALSE=y -CONFIG_FOLD=y -CONFIG_FSYNC=y -CONFIG_HEAD=y -CONFIG_FEATURE_FANCY_HEAD=y -CONFIG_HOSTID=y -CONFIG_ID=y -CONFIG_INSTALL=y -CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y -CONFIG_LENGTH=y -CONFIG_LN=y -CONFIG_LOGNAME=y -CONFIG_LS=y -CONFIG_FEATURE_LS_FILETYPES=y -CONFIG_FEATURE_LS_FOLLOWLINKS=y -CONFIG_FEATURE_LS_RECURSIVE=y -CONFIG_FEATURE_LS_SORTFILES=y -CONFIG_FEATURE_LS_TIMESTAMPS=y -CONFIG_FEATURE_LS_USERNAME=y -CONFIG_FEATURE_LS_COLOR=y -CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y -CONFIG_MD5SUM=y -CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y -CONFIG_MKFIFO=y -CONFIG_MKNOD=y -CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y -CONFIG_NICE=y -CONFIG_NOHUP=y -CONFIG_OD=y -CONFIG_PRINTENV=y -CONFIG_PRINTF=y -CONFIG_PWD=y -CONFIG_READLINK=y -CONFIG_FEATURE_READLINK_FOLLOW=y -CONFIG_REALPATH=y -CONFIG_RM=y -CONFIG_RMDIR=y -CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y -CONFIG_SEQ=y -CONFIG_SHA1SUM=y -CONFIG_SHA256SUM=y -# CONFIG_SHA512SUM is not set -CONFIG_SLEEP=y -CONFIG_FEATURE_FANCY_SLEEP=y -# CONFIG_FEATURE_FLOAT_SLEEP is not set -CONFIG_SORT=y -CONFIG_FEATURE_SORT_BIG=y -CONFIG_SPLIT=y -CONFIG_FEATURE_SPLIT_FANCY=y -CONFIG_STAT=y -CONFIG_FEATURE_STAT_FORMAT=y -CONFIG_STTY=y -CONFIG_SUM=y -CONFIG_SYNC=y -CONFIG_TAC=y -CONFIG_TAIL=y -CONFIG_FEATURE_FANCY_TAIL=y -CONFIG_TEE=y -CONFIG_FEATURE_TEE_USE_BLOCK_IO=y -CONFIG_TEST=y -CONFIG_FEATURE_TEST_64=y -CONFIG_TOUCH=y -CONFIG_TR=y -CONFIG_FEATURE_TR_CLASSES=y -CONFIG_FEATURE_TR_EQUIV=y -CONFIG_TRUE=y -CONFIG_TTY=y -CONFIG_UNAME=y -CONFIG_UNEXPAND=y -CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y -CONFIG_UNIQ=y -CONFIG_USLEEP=y -CONFIG_UUDECODE=y -CONFIG_UUENCODE=y -CONFIG_WC=y -CONFIG_FEATURE_WC_LARGE=y -CONFIG_WHO=y -CONFIG_WHOAMI=y -CONFIG_YES=y - -# -# Common options for cp and mv -# -CONFIG_FEATURE_PRESERVE_HARDLINKS=y - -# -# Common options for ls, more and telnet -# -CONFIG_FEATURE_AUTOWIDTH=y - -# -# Common options for df, du, ls -# -CONFIG_FEATURE_HUMAN_READABLE=y - -# -# Common options for md5sum, sha1sum, sha256sum, sha512sum -# -CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y - -# -# Console Utilities -# -CONFIG_CHVT=y -CONFIG_CLEAR=y -CONFIG_DEALLOCVT=y -CONFIG_DUMPKMAP=y -CONFIG_KBD_MODE=y -CONFIG_LOADFONT=y -CONFIG_LOADKMAP=y -CONFIG_OPENVT=y -CONFIG_RESET=y -# CONFIG_RESIZE is not set -# CONFIG_FEATURE_RESIZE_PRINT is not set -CONFIG_SETCONSOLE=y -# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set -# CONFIG_SETFONT is not set -# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set -CONFIG_DEFAULT_SETFONT_DIR="" -CONFIG_SETKEYCODES=y -CONFIG_SETLOGCONS=y -# CONFIG_SHOWKEY is not set - -# -# Debian Utilities -# -CONFIG_MKTEMP=y -CONFIG_PIPE_PROGRESS=y -# CONFIG_RUN_PARTS is not set -# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set -# CONFIG_FEATURE_RUN_PARTS_FANCY is not set -# CONFIG_START_STOP_DAEMON is not set -# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set -# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set -CONFIG_WHICH=y - -# -# Editors -# -CONFIG_AWK=y -CONFIG_FEATURE_AWK_LIBM=y -CONFIG_CMP=y -CONFIG_DIFF=y -CONFIG_FEATURE_DIFF_LONG_OPTIONS=y -CONFIG_FEATURE_DIFF_DIR=y -# CONFIG_ED is not set -CONFIG_PATCH=y -CONFIG_SED=y -CONFIG_VI=y -CONFIG_FEATURE_VI_MAX_LEN=1024 -CONFIG_FEATURE_VI_8BIT=y -CONFIG_FEATURE_VI_COLON=y -CONFIG_FEATURE_VI_YANKMARK=y -CONFIG_FEATURE_VI_SEARCH=y -CONFIG_FEATURE_VI_USE_SIGNALS=y -CONFIG_FEATURE_VI_DOT_CMD=y -CONFIG_FEATURE_VI_READONLY=y -CONFIG_FEATURE_VI_SETOPTS=y -CONFIG_FEATURE_VI_SET=y -CONFIG_FEATURE_VI_WIN_RESIZE=y -CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y -CONFIG_FEATURE_ALLOW_EXEC=y - -# -# Finding Utilities -# -CONFIG_FIND=y -CONFIG_FEATURE_FIND_PRINT0=y -CONFIG_FEATURE_FIND_MTIME=y -CONFIG_FEATURE_FIND_MMIN=y -CONFIG_FEATURE_FIND_PERM=y -CONFIG_FEATURE_FIND_TYPE=y -CONFIG_FEATURE_FIND_XDEV=y -CONFIG_FEATURE_FIND_MAXDEPTH=y -CONFIG_FEATURE_FIND_NEWER=y -CONFIG_FEATURE_FIND_INUM=y -CONFIG_FEATURE_FIND_EXEC=y -CONFIG_FEATURE_FIND_USER=y -CONFIG_FEATURE_FIND_GROUP=y -CONFIG_FEATURE_FIND_NOT=y -CONFIG_FEATURE_FIND_DEPTH=y -CONFIG_FEATURE_FIND_PAREN=y -CONFIG_FEATURE_FIND_SIZE=y -CONFIG_FEATURE_FIND_PRUNE=y -CONFIG_FEATURE_FIND_DELETE=y -CONFIG_FEATURE_FIND_PATH=y -CONFIG_FEATURE_FIND_REGEX=y -# CONFIG_FEATURE_FIND_CONTEXT is not set -CONFIG_FEATURE_FIND_LINKS=y -CONFIG_GREP=y -CONFIG_FEATURE_GREP_EGREP_ALIAS=y -CONFIG_FEATURE_GREP_FGREP_ALIAS=y -CONFIG_FEATURE_GREP_CONTEXT=y -CONFIG_XARGS=y -CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y -CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y -CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y -CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y - -# -# Init Utilities -# -CONFIG_INIT=y -CONFIG_FEATURE_USE_INITTAB=y -CONFIG_FEATURE_KILL_REMOVED=y -CONFIG_FEATURE_KILL_DELAY=0 -CONFIG_FEATURE_INIT_SCTTY=y -CONFIG_FEATURE_INIT_SYSLOG=y -CONFIG_FEATURE_EXTRA_QUIET=y -# CONFIG_FEATURE_INIT_COREDUMPS is not set -CONFIG_FEATURE_INITRD=y -CONFIG_HALT=y -# CONFIG_FEATURE_CALL_TELINIT is not set -CONFIG_TELINIT_PATH="" -CONFIG_MESG=y - -# -# Login/Password Management Utilities -# -CONFIG_FEATURE_SHADOWPASSWDS=y -# CONFIG_USE_BB_PWD_GRP is not set -# CONFIG_USE_BB_SHADOW is not set -CONFIG_USE_BB_CRYPT=y -# CONFIG_USE_BB_CRYPT_SHA is not set -CONFIG_ADDGROUP=y -CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y -CONFIG_FEATURE_ADDUSER_TO_GROUP=y -CONFIG_DELGROUP=y -CONFIG_FEATURE_DEL_USER_FROM_GROUP=y -# CONFIG_FEATURE_CHECK_NAMES is not set -CONFIG_ADDUSER=y -CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y -CONFIG_FIRST_SYSTEM_ID=100 -CONFIG_LAST_SYSTEM_ID=999 -CONFIG_DELUSER=y -CONFIG_GETTY=y -CONFIG_FEATURE_UTMP=y -CONFIG_FEATURE_WTMP=y -CONFIG_LOGIN=y -# CONFIG_PAM is not set -# CONFIG_LOGIN_SCRIPTS is not set -CONFIG_FEATURE_NOLOGIN=y -CONFIG_FEATURE_SECURETTY=y -CONFIG_PASSWD=y -CONFIG_FEATURE_PASSWD_WEAK_CHECK=y -# CONFIG_CRYPTPW is not set -CONFIG_CHPASSWD=y -CONFIG_SU=y -CONFIG_FEATURE_SU_SYSLOG=y -CONFIG_FEATURE_SU_CHECKS_SHELLS=y -CONFIG_SULOGIN=y -CONFIG_VLOCK=y - -# -# Linux Ext2 FS Progs -# -CONFIG_CHATTR=y -CONFIG_FSCK=y -CONFIG_LSATTR=y - -# -# Linux Module Utilities -# -# CONFIG_MODPROBE_SMALL is not set -# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set -# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set -CONFIG_INSMOD=y -CONFIG_RMMOD=y -CONFIG_LSMOD=y -CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y -CONFIG_MODPROBE=y -CONFIG_FEATURE_MODPROBE_BLACKLIST=y -CONFIG_DEPMOD=y -CONFIG_MODINFO=y - -# -# Options common to multiple modutils -# -# CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set -# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set -# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set -# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -CONFIG_FEATURE_CHECK_TAINTED_MODULE=y -CONFIG_FEATURE_MODUTILS_ALIAS=y -CONFIG_FEATURE_MODUTILS_SYMBOLS=y -CONFIG_DEFAULT_MODULES_DIR="/lib/modules" -CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" - -# -# Linux System Utilities -# -# CONFIG_ACPID is not set -# CONFIG_FEATURE_ACPID_COMPAT is not set -CONFIG_BLKID=y -CONFIG_DMESG=y -CONFIG_FEATURE_DMESG_PRETTY=y -CONFIG_FBSET=y -CONFIG_FEATURE_FBSET_FANCY=y -# CONFIG_FEATURE_FBSET_READMODE is not set -CONFIG_FDFLUSH=y -CONFIG_FDFORMAT=y -CONFIG_FDISK=y -CONFIG_FDISK_SUPPORT_LARGE_DISKS=y -CONFIG_FEATURE_FDISK_WRITABLE=y -# CONFIG_FEATURE_AIX_LABEL is not set -# CONFIG_FEATURE_SGI_LABEL is not set -# CONFIG_FEATURE_SUN_LABEL is not set -# CONFIG_FEATURE_OSF_LABEL is not set -# CONFIG_FEATURE_FDISK_ADVANCED is not set -CONFIG_FINDFS=y -CONFIG_FREERAMDISK=y -# CONFIG_FSCK_MINIX is not set -CONFIG_MKFS_EXT2=y -# CONFIG_MKFS_MINIX is not set -# CONFIG_FEATURE_MINIX2 is not set -# CONFIG_MKFS_REISER is not set -CONFIG_MKFS_VFAT=y -# CONFIG_GETOPT is not set -# CONFIG_FEATURE_GETOPT_LONG is not set -CONFIG_HEXDUMP=y -CONFIG_FEATURE_HEXDUMP_REVERSE=y -# CONFIG_HD is not set -CONFIG_HWCLOCK=y -CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y -CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y -CONFIG_IPCRM=y -CONFIG_IPCS=y -CONFIG_LOSETUP=y -CONFIG_LSPCI=y -CONFIG_LSUSB=y -# CONFIG_MDEV is not set -# CONFIG_FEATURE_MDEV_CONF is not set -# CONFIG_FEATURE_MDEV_RENAME is not set -# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set -# CONFIG_FEATURE_MDEV_EXEC is not set -# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set -CONFIG_MKSWAP=y -CONFIG_FEATURE_MKSWAP_UUID=y -CONFIG_MORE=y -CONFIG_FEATURE_USE_TERMIOS=y -CONFIG_VOLUMEID=y -CONFIG_FEATURE_VOLUMEID_EXT=y -CONFIG_FEATURE_VOLUMEID_BTRFS=y -CONFIG_FEATURE_VOLUMEID_REISERFS=y -CONFIG_FEATURE_VOLUMEID_FAT=y -CONFIG_FEATURE_VOLUMEID_HFS=y -# CONFIG_FEATURE_VOLUMEID_JFS is not set -CONFIG_FEATURE_VOLUMEID_XFS=y -CONFIG_FEATURE_VOLUMEID_NTFS=y -CONFIG_FEATURE_VOLUMEID_ISO9660=y -# CONFIG_FEATURE_VOLUMEID_UDF is not set -CONFIG_FEATURE_VOLUMEID_LUKS=y -CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y -# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set -# CONFIG_FEATURE_VOLUMEID_ROMFS is not set -# CONFIG_FEATURE_VOLUMEID_SYSV is not set -# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set -CONFIG_FEATURE_VOLUMEID_LINUXRAID=y -CONFIG_MOUNT=y -# CONFIG_FEATURE_MOUNT_FAKE is not set -# CONFIG_FEATURE_MOUNT_VERBOSE is not set -CONFIG_FEATURE_MOUNT_HELPERS=y -CONFIG_FEATURE_MOUNT_LABEL=y -CONFIG_FEATURE_MOUNT_NFS=y -CONFIG_FEATURE_MOUNT_CIFS=y -CONFIG_FEATURE_MOUNT_FLAGS=y -CONFIG_FEATURE_MOUNT_FSTAB=y -CONFIG_PIVOT_ROOT=y -CONFIG_RDATE=y -CONFIG_RDEV=y -CONFIG_READPROFILE=y -CONFIG_RTCWAKE=y -CONFIG_SCRIPT=y -CONFIG_SCRIPTREPLAY=y -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=y -CONFIG_FEATURE_SWAPON_PRI=y -CONFIG_SWITCH_ROOT=y -CONFIG_UMOUNT=y -CONFIG_FEATURE_UMOUNT_ALL=y - -# -# Common options for mount/umount -# -CONFIG_FEATURE_MOUNT_LOOP=y -# CONFIG_FEATURE_MTAB_SUPPORT is not set - -# -# Miscellaneous Utilities -# -CONFIG_ADJTIMEX=y -# CONFIG_BBCONFIG is not set -CONFIG_BEEP=y -CONFIG_FEATURE_BEEP_FREQ=4000 -CONFIG_FEATURE_BEEP_LENGTH_MS=30 -CONFIG_CHAT=y -CONFIG_FEATURE_CHAT_NOFAIL=y -# CONFIG_FEATURE_CHAT_TTY_HIFI is not set -CONFIG_FEATURE_CHAT_IMPLICIT_CR=y -# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set -# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set -# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set -# CONFIG_FEATURE_CHAT_CLR_ABORT is not set -CONFIG_CHRT=y -CONFIG_CROND=y -# CONFIG_FEATURE_CROND_D is not set -# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set -CONFIG_FEATURE_CROND_DIR="/var/spool/cron" -CONFIG_CRONTAB=y -# CONFIG_DC is not set -# CONFIG_FEATURE_DC_LIBM is not set -# CONFIG_DEVFSD is not set -# CONFIG_DEVFSD_MODLOAD is not set -# CONFIG_DEVFSD_FG_NP is not set -# CONFIG_DEVFSD_VERBOSE is not set -# CONFIG_FEATURE_DEVFS is not set -# CONFIG_DEVMEM is not set -CONFIG_EJECT=y -CONFIG_FEATURE_EJECT_SCSI=y -# CONFIG_FBSPLASH is not set -# CONFIG_FLASHCP is not set -# CONFIG_FLASH_LOCK is not set -# CONFIG_FLASH_UNLOCK is not set -# CONFIG_FLASH_ERASEALL is not set -CONFIG_IONICE=y -# CONFIG_INOTIFYD is not set -CONFIG_LAST=y -CONFIG_FEATURE_LAST_SMALL=y -# CONFIG_FEATURE_LAST_FANCY is not set -CONFIG_LESS=y -CONFIG_FEATURE_LESS_MAXLINES=9999999 -CONFIG_FEATURE_LESS_BRACKETS=y -CONFIG_FEATURE_LESS_FLAGS=y -CONFIG_FEATURE_LESS_MARKS=y -CONFIG_FEATURE_LESS_REGEXP=y -# CONFIG_FEATURE_LESS_WINCH is not set -# CONFIG_FEATURE_LESS_DASHCMD is not set -# CONFIG_FEATURE_LESS_LINENUMS is not set -CONFIG_HDPARM=y -CONFIG_FEATURE_HDPARM_GET_IDENTITY=y -# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set -# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set -CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y -# CONFIG_MAKEDEVS is not set -# CONFIG_FEATURE_MAKEDEVS_LEAF is not set -# CONFIG_FEATURE_MAKEDEVS_TABLE is not set -# CONFIG_MAN is not set -CONFIG_MICROCOM=y -CONFIG_MOUNTPOINT=y -# CONFIG_MT is not set -CONFIG_RAIDAUTORUN=y -# CONFIG_READAHEAD is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -CONFIG_SETSID=y -CONFIG_STRINGS=y -CONFIG_TASKSET=y -CONFIG_FEATURE_TASKSET_FANCY=y -CONFIG_TIME=y -CONFIG_TIMEOUT=y -# CONFIG_TTYSIZE is not set -# CONFIG_VOLNAME is not set -CONFIG_WALL=y -CONFIG_VCSA2TXT=y -CONFIG_WATCHDOG=y - -# -# Networking Utilities -# -CONFIG_FEATURE_IPV6=y -# CONFIG_FEATURE_UNIX_LOCAL is not set -CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y -# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set -CONFIG_ARP=y -CONFIG_ARPING=y -CONFIG_BRCTL=y -CONFIG_FEATURE_BRCTL_FANCY=y -# CONFIG_FEATURE_BRCTL_SHOW is not set -CONFIG_DNSD=y -CONFIG_ETHER_WAKE=y -CONFIG_FAKEIDENTD=y -# CONFIG_FTPD is not set -# CONFIG_FEATURE_FTP_WRITE is not set -# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set -CONFIG_FTPGET=y -CONFIG_FTPPUT=y -CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y -CONFIG_HOSTNAME=y -CONFIG_HTTPD=y -CONFIG_FEATURE_HTTPD_RANGES=y -# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set -CONFIG_FEATURE_HTTPD_SETUID=y -CONFIG_FEATURE_HTTPD_BASIC_AUTH=y -CONFIG_FEATURE_HTTPD_AUTH_MD5=y -CONFIG_FEATURE_HTTPD_CGI=y -CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y -CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y -CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y -CONFIG_FEATURE_HTTPD_ERROR_PAGES=y -CONFIG_FEATURE_HTTPD_PROXY=y -CONFIG_IFCONFIG=y -CONFIG_FEATURE_IFCONFIG_STATUS=y -# CONFIG_FEATURE_IFCONFIG_SLIP is not set -CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y -CONFIG_FEATURE_IFCONFIG_HW=y -CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y -CONFIG_IFENSLAVE=y -# CONFIG_IFPLUGD is not set -# CONFIG_IFUPDOWN is not set -CONFIG_IFUPDOWN_IFSTATE_PATH="" -# CONFIG_FEATURE_IFUPDOWN_IP is not set -# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set -# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set -# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set -# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set -CONFIG_INETD=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y -CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y -CONFIG_FEATURE_INETD_RPC=y -CONFIG_IP=y -CONFIG_FEATURE_IP_ADDRESS=y -CONFIG_FEATURE_IP_LINK=y -CONFIG_FEATURE_IP_ROUTE=y -CONFIG_FEATURE_IP_TUNNEL=y -CONFIG_FEATURE_IP_RULE=y -CONFIG_FEATURE_IP_SHORT_FORMS=y -# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -CONFIG_IPADDR=y -CONFIG_IPLINK=y -CONFIG_IPROUTE=y -CONFIG_IPTUNNEL=y -CONFIG_IPRULE=y -CONFIG_IPCALC=y -CONFIG_FEATURE_IPCALC_FANCY=y -CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y -CONFIG_NAMEIF=y -# CONFIG_FEATURE_NAMEIF_EXTENDED is not set -CONFIG_NC=y -CONFIG_NC_SERVER=y -CONFIG_NC_EXTRA=y -CONFIG_NETSTAT=y -CONFIG_FEATURE_NETSTAT_WIDE=y -CONFIG_FEATURE_NETSTAT_PRG=y -CONFIG_NSLOOKUP=y -CONFIG_NTPD=y -CONFIG_FEATURE_NTPD_SERVER=y -CONFIG_PING=y -CONFIG_PING6=y -CONFIG_FEATURE_FANCY_PING=y -CONFIG_PSCAN=y -CONFIG_ROUTE=y -# CONFIG_SLATTACH is not set -CONFIG_TELNET=y -CONFIG_FEATURE_TELNET_TTYPE=y -CONFIG_FEATURE_TELNET_AUTOLOGIN=y -# CONFIG_TELNETD is not set -# CONFIG_FEATURE_TELNETD_STANDALONE is not set -# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set -CONFIG_TFTP=y -CONFIG_TFTPD=y -CONFIG_FEATURE_TFTPD_RIS=y -CONFIG_FEATURE_TFTP_GET=y -CONFIG_FEATURE_TFTP_PUT=y -CONFIG_FEATURE_TFTP_BLOCKSIZE=y -# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set -# CONFIG_TFTP_DEBUG is not set -CONFIG_TRACEROUTE=y -# CONFIG_TRACEROUTE6 is not set -CONFIG_FEATURE_TRACEROUTE_VERBOSE=y -CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y -# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set -CONFIG_UDHCPD=y -CONFIG_DHCPRELAY=y -CONFIG_DUMPLEASES=y -CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y -CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" -CONFIG_UDHCPC=y -CONFIG_FEATURE_UDHCPC_ARPING=y -# CONFIG_FEATURE_UDHCP_PORT is not set -CONFIG_UDHCP_DEBUG=0 -# CONFIG_FEATURE_UDHCP_RFC3397 is not set -CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 -CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" -CONFIG_VCONFIG=y -CONFIG_WGET=y -CONFIG_FEATURE_WGET_STATUSBAR=y -CONFIG_FEATURE_WGET_AUTHENTICATION=y -CONFIG_FEATURE_WGET_LONG_OPTIONS=y -CONFIG_ZCIP=y -# CONFIG_TCPSVD is not set -CONFIG_TUNCTL=y -# CONFIG_FEATURE_TUNCTL_UG is not set -# CONFIG_UDPSVD is not set - -# -# Print Utilities -# -# CONFIG_LPD is not set -CONFIG_LPR=y -# CONFIG_LPQ is not set - -# -# Mail Utilities -# -# CONFIG_MAKEMIME is not set -CONFIG_FEATURE_MIME_CHARSET="us-ascii" -# CONFIG_POPMAILDIR is not set -# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set -# CONFIG_REFORMIME is not set -# CONFIG_FEATURE_REFORMIME_COMPAT is not set -CONFIG_SENDMAIL=y - -# -# Process Utilities -# -CONFIG_FREE=y -CONFIG_FUSER=y -CONFIG_KILL=y -CONFIG_KILLALL=y -CONFIG_KILLALL5=y -CONFIG_NMETER=y -CONFIG_PGREP=y -CONFIG_PIDOF=y -CONFIG_FEATURE_PIDOF_SINGLE=y -CONFIG_FEATURE_PIDOF_OMIT=y -CONFIG_PKILL=y -CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y -CONFIG_FEATURE_PS_TIME=y -CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y -# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set -CONFIG_RENICE=y -CONFIG_BB_SYSCTL=y -CONFIG_TOP=y -CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y -CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y -CONFIG_FEATURE_TOP_SMP_CPU=y -CONFIG_FEATURE_TOP_DECIMALS=y -CONFIG_FEATURE_TOP_SMP_PROCESS=y -CONFIG_FEATURE_TOPMEM=y -CONFIG_FEATURE_SHOW_THREADS=y -CONFIG_UPTIME=y -CONFIG_WATCH=y - -# -# Runit Utilities -# -# CONFIG_RUNSV is not set -# CONFIG_RUNSVDIR is not set -# CONFIG_FEATURE_RUNSVDIR_LOG is not set -# CONFIG_SV is not set -CONFIG_SV_DEFAULT_SERVICE_DIR="" -# CONFIG_SVLOGD is not set -# CONFIG_CHPST is not set -# CONFIG_SETUIDGID is not set -# CONFIG_ENVUIDGID is not set -# CONFIG_ENVDIR is not set -# CONFIG_SOFTLIMIT is not set -# CONFIG_CHCON is not set -# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set -# CONFIG_GETENFORCE is not set -# CONFIG_GETSEBOOL is not set -# CONFIG_LOAD_POLICY is not set -# CONFIG_MATCHPATHCON is not set -# CONFIG_RESTORECON is not set -# CONFIG_RUNCON is not set -# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set -# CONFIG_SELINUXENABLED is not set -# CONFIG_SETENFORCE is not set -# CONFIG_SETFILES is not set -# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set -# CONFIG_SETSEBOOL is not set -# CONFIG_SESTATUS is not set - -# -# Shells -# -CONFIG_FEATURE_SH_IS_ASH=y -# CONFIG_FEATURE_SH_IS_HUSH is not set -# CONFIG_FEATURE_SH_IS_NONE is not set -CONFIG_ASH=y -CONFIG_ASH_BASH_COMPAT=y -CONFIG_ASH_JOB_CONTROL=y -CONFIG_ASH_ALIAS=y -CONFIG_ASH_GETOPTS=y -CONFIG_ASH_BUILTIN_ECHO=y -CONFIG_ASH_BUILTIN_PRINTF=y -CONFIG_ASH_BUILTIN_TEST=y -CONFIG_ASH_CMDCMD=y -# CONFIG_ASH_MAIL is not set -CONFIG_ASH_OPTIMIZE_FOR_SIZE=y -CONFIG_ASH_RANDOM_SUPPORT=y -# CONFIG_ASH_EXPAND_PRMT is not set -# CONFIG_HUSH is not set -# CONFIG_HUSH_BASH_COMPAT is not set -# CONFIG_HUSH_HELP is not set -# CONFIG_HUSH_INTERACTIVE is not set -# CONFIG_HUSH_JOB is not set -# CONFIG_HUSH_TICK is not set -# CONFIG_HUSH_IF is not set -# CONFIG_HUSH_LOOPS is not set -# CONFIG_HUSH_CASE is not set -# CONFIG_HUSH_FUNCTIONS is not set -# CONFIG_HUSH_LOCAL is not set -# CONFIG_HUSH_EXPORT_N is not set -# CONFIG_HUSH_RANDOM_SUPPORT is not set -# CONFIG_LASH is not set -# CONFIG_MSH is not set -CONFIG_SH_MATH_SUPPORT=y -# CONFIG_SH_MATH_SUPPORT_64 is not set -CONFIG_FEATURE_SH_EXTRA_QUIET=y -# CONFIG_FEATURE_SH_STANDALONE is not set -# CONFIG_FEATURE_SH_NOFORK is not set -# CONFIG_CTTYHACK is not set - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -CONFIG_FEATURE_ROTATE_LOGFILE=y -CONFIG_FEATURE_REMOTE_LOG=y -CONFIG_FEATURE_SYSLOGD_DUP=y -# CONFIG_FEATURE_IPC_SYSLOG is not set -CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 -# CONFIG_LOGREAD is not set -# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -CONFIG_KLOGD=y -CONFIG_LOGGER=y diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-cpio-mkdir.u --- a/busybox/stuff/busybox-1.17.0-cpio-mkdir.u Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/busybox-1.17.0-cpio-mkdir.u Wed Jul 07 20:55:53 2010 +0200 @@ -1,5 +1,6 @@ ---- busybox-1.16.1/archival/libunarchive/data_extract_all.c -+++ busybox-1.16.1/archival/libunarchive/data_extract_all.c +FIXME: Add test case !! +--- busybox-1.17.0/archival/libunarchive/data_extract_all.c ++++ busybox-1.17.0/archival/libunarchive/data_extract_all.c @@ -69,7 +69,8 @@ } } diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-depmod.u --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/busybox/stuff/busybox-1.17.0-depmod.u Wed Jul 07 20:55:53 2010 +0200 @@ -0,0 +1,25 @@ +Accept and ignore: --unresolved-error, --quiet, --config somefile +--- busybox-1.17.0/modutils/depmod.c ++++ busybox-1.17.0/modutils/depmod.c +@@ -35,7 +35,10 @@ + ARG_e = (1<<3), /* with -F, print unresolved symbols */ + ARG_F = (1<<4), /* System.map that contains the symbols */ + ARG_n = (1<<5), /* dry-run, print to stdout only */ +- ARG_r = (1<<6) /* Compat dummy. Linux Makefile uses it */ ++ ARG_r = (1<<6), /* Compat dummy. Linux Makefile uses it */ ++ ARG_u = (1<<7), /* unresolved-error: ignored */ ++ ARG_q = (1<<8), /* quiet: ignored */ ++ ARG_C = (1<<9) /* config: ignored */ + }; + + static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARAM, +@@ -143,7 +146,7 @@ + struct utsname uts; + int tmp; + +- getopt32(argv, "aAb:eF:nr", &moddir_base, NULL); ++ getopt32(argv, "aAb:eF:nruqC:", &moddir_base, NULL, NULL); + argv += optind; + + /* goto modules location */ + diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-ris.u --- a/busybox/stuff/busybox-1.17.0-ris.u Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/busybox-1.17.0-ris.u Wed Jul 07 20:55:53 2010 +0200 @@ -1,3 +1,4 @@ +Add support for the Windows Remote Installation Service --- busybox-1.17.0/networking/Config.src +++ busybox-1.17.0/networking/Config.src @@ -841,6 +841,15 @@ @@ -9,7 +10,7 @@ + default y + depends on TFTPD + help -+ Add support for the Remote Installation Service. This allows ++ Add support for the Windows Remote Installation Service. This allows + a client to get files starting with \ without respecting case. + Each \ will be replaced by a /. + @@ -19,63 +20,59 @@ --- busybox-1.17.0/networking/tftp.c +++ busybox-1.17.0/networking/tftp.c -@@ -656,6 +656,63 @@ +@@ -656,6 +656,59 @@ #undef remote_file } +#if ENABLE_FEATURE_TFTPD_RIS +#include + -+int lookup_entry(const char *comp, char *dest); -+void lookup_file(char *filename); ++static int lookup_entry(const char *search, char *unixpath); ++static void unixfilename(char *filename); + -+int lookup_entry(const char *comp, char *dest) ++// lookup search and concat real filename to unixpath ++static int lookup_entry(const char *search, char *unixpath) +{ -+ DIR *dirp; -+ struct dirent *dptr; -+ if (!dest) return 0; -+ dirp = opendir(dest[0] ? dest : "."); -+ while ((dptr = readdir(dirp))) { -+ if (!strcasecmp(dptr->d_name, comp)) { -+ if (dest[0]) strcat(dest, "/"); -+ strcat(dest, dptr->d_name); -+ closedir(dirp); -+ return 1; ++ int status = 0; ++ DIR *dirp = opendir(unixpath[0] ? unixpath : "."); ++ ++ if (dirp != NULL) { ++ struct dirent *entry; ++ ++ while ((entry = readdir(dirp))) { ++ if (!strcasecmp(entry->d_name, search)) { ++ if (unixpath[0]) strcat(unixpath, "/"); ++ strcat(unixpath, entry->d_name); ++ status++; ++ break; ++ } + } -+ } -+ closedir(dirp); -+ return 0; ++ closedir(dirp); ++ } ++ return status; +} + -+void lookup_file(char *filename) ++// update filename with real file path found ++static void unixfilename(char *filename) +{ -+ int found = 0; -+ int len = 0; -+ char dest[1024]; -+ char comp[1024]; -+ char *check = filename; -+ char *seek = NULL; ++ char unixpath[PATH_MAX]; ++ char *s = unixpath + 1; ++ char *check = filename + 1; ++ int len; + -+ dest[0] = 0; -+ check++; -+ while (*check) { -+ seek = strchr(check, '\\'); -+ if (!seek) { -+ if ((*check) && (lookup_entry(check, dest))) -+ found = 1; ++ for (unixpath[0] = 0; *check; len++, s += len, check += len) { ++ char *seek = strchr(check, '\\'); ++ ++ if (!seek) { // basename of filename ++ if (lookup_entry(check, unixpath)) ++ strcpy(filename, unixpath); // found + break; + } + len = seek - check; -+ memcpy(comp, check, len); -+ comp[len]=0; -+ if (!lookup_entry(comp, dest)) -+ break; -+ check += len + 1; -+ } -+ -+ if (found) { -+ filename[0] = 0; -+ strcat(filename, dest); ++ memcpy(s, check, len); ++ s[len] = '\0'; ++ if (!lookup_entry(s, unixpath)) ++ break; // path mismatch + } +} +#endif @@ -83,14 +80,13 @@ #if ENABLE_TFTP int tftp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -@@ -785,6 +842,11 @@ +@@ -785,6 +838,10 @@ goto err; } local_file = block_buf + 2; +#if ENABLE_FEATURE_TFTPD_RIS -+ if (local_file[0] == '\\') { -+ lookup_file(local_file); -+ } ++ if (local_file[0] == '\\') ++ unixfilename(local_file); +#endif if (local_file[0] == '.' || strstr(local_file, "/.")) { error_msg = "dot in file name"; diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-stat.u --- a/busybox/stuff/busybox-1.17.0-stat.u Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/busybox-1.17.0-stat.u Wed Jul 07 20:55:53 2010 +0200 @@ -1,3 +1,5 @@ +Add non standard stat -m support to display file block list +Useful to patch read-only filesystems such as ISO9660 --- busybox-1.17.0/include/usage.src.h +++ busybox-1.17.0/include/usage.src.h @@ -3979,6 +3979,7 @@ diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-tar.u --- a/busybox/stuff/busybox-1.17.0-tar.u Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/busybox-1.17.0-tar.u Wed Jul 07 20:55:53 2010 +0200 @@ -1,9 +1,12 @@ -Accept --wildcards argument +Accept and ignore --wildcards argument --- busybox-1.17.0/archival/tar.c +++ busybox-1.17.0/archival/tar.c -@@ -843,6 +843,8 @@ +@@ -841,8 +841,10 @@ + "touch\0" No_argument "m" + # endif # if ENABLE_FEATURE_TAR_TO_COMMAND - "to-command\0" Required_argument "\xfb" +- "to-command\0" Required_argument "\xfb" ++ "to-command\0" Required_argument "\xfa" # endif + /* ignore --wildcards */ + "wildcards\0" No_argument "\xfb" diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/busybox-1.17.0-zmodules.u --- a/busybox/stuff/busybox-1.17.0-zmodules.u Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/busybox-1.17.0-zmodules.u Wed Jul 07 20:55:53 2010 +0200 @@ -1,45 +1,41 @@ ---- busybox-1.17.0/modutils/depmod.c -+++ busybox-1.17.0/modutils/depmod.c -@@ -35,7 +35,10 @@ - ARG_e = (1<<3), /* with -F, print unresolved symbols */ - ARG_F = (1<<4), /* System.map that contains the symbols */ - ARG_n = (1<<5), /* dry-run, print to stdout only */ -- ARG_r = (1<<6) /* Compat dummy. Linux Makefile uses it */ -+ ARG_r = (1<<6), /* Compat dummy. Linux Makefile uses it */ -+ ARG_u = (1<<7), /* unresolved-error: ignored */ -+ ARG_q = (1<<8), /* quiet: ignored */ -+ ARG_C = (1<<9) /* config: ignored */ - }; - - static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARAM, -@@ -143,7 +146,7 @@ - struct utsname uts; - int tmp; - -- getopt32(argv, "aAb:eF:nr", &moddir_base, NULL); -+ getopt32(argv, "aAb:eF:nruqC:", &moddir_base, NULL); - argv += optind; - - /* goto modules location */ +Add LZMA_DEFAULT_MAGIC support +--- busybox-1.17.0/include/unarchive.h ++++ busybox-1.17.0/include/unarchive.h +@@ -9,6 +9,8 @@ + COMPRESS_MAGIC = 0x1f9d, + GZIP_MAGIC = 0x1f8b, + BZIP2_MAGIC = 'B' * 256 + 'Z', ++ /* lzma default options: lc=3 lp=0 pb=2, historic % 256 == 0 */ ++ LZMA_DEFAULT_MAGIC = 0x5d00, + /* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */ + /* More info at: http://tukaani.org/xz/xz-file-format.txt */ + XZ_MAGIC1 = 0xfd * 256 + '7', +@@ -20,6 +22,8 @@ + COMPRESS_MAGIC = 0x9d1f, + GZIP_MAGIC = 0x8b1f, + BZIP2_MAGIC = 'Z' * 256 + 'B', ++ /* lzma default options: lc=3 lp=0 pb=2, historic % 256 == 0 */ ++ LZMA_DEFAULT_MAGIC = 0x5d, + XZ_MAGIC1 = '7' * 256 + 0xfd, + XZ_MAGIC2 = ((0 * 256 + 'Z') * 256 + 'X') * 256 + 'z', + XZ_MAGIC1a = (('X' * 256 + 'z') * 256 + '7') * 256 + 0xfd, --- busybox-1.17.0/libbb/read_printf.c +++ busybox-1.17.0/libbb/read_printf.c -@@ -337,10 +337,16 @@ - - sfx = strrchr(fname, '.'); - if (sfx) { -+ char magic[2]; -+ - sfx++; -- if (ENABLE_FEATURE_SEAMLESS_LZMA && strcmp(sfx, "lzma") == 0) -- /* .lzma has no header/signature, just trust it */ -+ xread(fd, &magic, 2); -+ xlseek(fd, 0, SEEK_SET); -+ if (ENABLE_FEATURE_SEAMLESS_LZMA -+ && ((magic[0] == 0x5d && magic[1] == 0) -+ || strcmp(sfx, ".lzma") == 0)) { - open_transformer(fd, unpack_lzma_stream, "unlzma"); -+ } - else - if ((ENABLE_FEATURE_SEAMLESS_GZ && strcmp(sfx, "gz") == 0) - || (ENABLE_FEATURE_SEAMLESS_BZ2 && strcmp(sfx, "bz2") == 0) +@@ -286,6 +286,16 @@ + # endif + goto found_magic; + } ++ if (ENABLE_FEATURE_SEAMLESS_LZMA ++ && magic.b16[0] == LZMA_DEFAULT_MAGIC ++ ) { ++# if BB_MMU ++ xformer = unpack_lzma_stream; ++# else ++ xformer_prog = "unlzma"; ++# endif ++ goto found_magic; ++ } + if (ENABLE_FEATURE_SEAMLESS_XZ + && magic.b16[0] == XZ_MAGIC1 + ) { diff -r 0c0324ebd2d3 -r 1ed09465c0ae busybox/stuff/udhcp.script --- a/busybox/stuff/udhcp.script Wed Jul 07 19:33:09 2010 +0200 +++ b/busybox/stuff/udhcp.script Wed Jul 07 20:55:53 2010 +0200 @@ -4,6 +4,7 @@ [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 +[ "$subnet" == "255.255.255.255" ] && subnet="255.255.0.0" # qemu weirdness RESOLV_CONF="/etc/resolv.conf" [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" [ -n "$subnet" ] && NETMASK="netmask $subnet"