# HG changeset patch # User Pascal Bellard # Date 1243440916 -7200 # Node ID 1da58af0028a304f3cdbe35dbefc02e61b5207af # Parent 77070ef5bae82cbdd3aa780f7752af8b7c3ad7d9 busybox/su: fix environment diff -r 77070ef5bae8 -r 1da58af0028a busybox/receipt --- a/busybox/receipt Wed May 27 11:52:33 2009 +0200 +++ b/busybox/receipt Wed May 27 18:15:16 2009 +0200 @@ -34,6 +34,7 @@ mkswap.u install.u basename.u +su.u EOT cp ../stuff/$PACKAGE-$VERSION.config .config make oldconfig diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0-cpio-mkdir.u --- a/busybox/stuff/busybox-1.10.0-cpio-mkdir.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ ---- busybox-1.10.0/archival/libunarchive/data_extract_all.c -+++ busybox-1.10.0/archival/libunarchive/data_extract_all.c -@@ -38,7 +38,8 @@ - } - } - else if (statbuf.st_mtime <= file_header->mtime) { -- if (!(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { -+ if (!(archive_handle->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 @@ - } - 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->flags & ARCHIVE_EXTRACT_QUIET) - ) { - bb_perror_msg("cannot make dir %s", file_header->name); diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0-cpio.u --- a/busybox/stuff/busybox-1.10.0-cpio.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -diff -purN busybox-1.10.0/archival/Config.in busybox/archival/Config.in ---- busybox-1.10.0/archival/Config.in 2008-03-29 21:47:37.000000000 +0100 -+++ busybox-1.10.0/archival/Config.in 2008-03-29 21:47:37.000000000 +0100 -@@ -78,6 +78,14 @@ config CPIO - Unless you have a specific application which requires cpio, you should - probably say N here. - -+config FEATURE_CPIO_O -+ bool "Support for archive creation" -+ default n -+ depends on CPIO -+ help -+ This implementation of cpio can create cpio archives in the "newc" -+ format only. -+ - config DPKG - bool "dpkg" - default n -diff -purN busybox-1.10.0/archival/cpio.c busybox/archival/cpio.c ---- busybox-1.10.0/archival/cpio.c 2008-03-29 21:47:55.000000000 +0100 -+++ busybox-1.10.0/archival/cpio.c 2008-03-29 21:47:55.000000000 +0100 -@@ -21,12 +21,146 @@ - #define CPIO_OPT_FILE 0x10 - #define CPIO_OPT_CREATE_LEADING_DIR 0x20 - #define CPIO_OPT_PRESERVE_MTIME 0x40 -+#define CPIO_OPT_CREATE 0x80 -+#define CPIO_OPT_FORMAT 0x100 -+ -+#if ENABLE_FEATURE_CPIO_O -+static void cpio_pad(off_t *size, int n) -+{ -+ int i; -+ for (*size += i = (-*size) & n; --i >= 0; bb_putchar(0)); -+} -+ -+static void cpio_o(void) -+{ -+ struct name_s { -+ struct name_s *next; -+ char name[0]; -+ }; -+ struct inodes_s { -+ struct name_s *names; -+ struct inodes_s *next; -+ struct stat st; -+ } *links = NULL; -+ off_t bytes = 0; // output bytes count -+#if CONFIG_FEATURE_COPYBUF_KB < 1 -+ char buf[1024]; -+#else -+ char buf[CONFIG_FEATURE_COPYBUF_KB * 1024]; -+#endif -+ -+ while (1) { -+ const char *name = "TRAILER!!!"; -+ char *line = xmalloc_getline(stdin); -+ // allocate inode struct each loop to avoid struct stat copy -+ struct inodes_s *inode = xzalloc(sizeof(*inode)); // die if fail -+ off_t size; -+ -+ inode->st.st_nlink++; // =1 -+ if (line) { -+ /* Strip leading `./' from the filename. */ -+ for (name = line; name[0] == '.' && name[1] == '/';) { -+ while (*++name == '/'); -+ } -+ if (!*name) goto free_and_continue; // line empty -+ if (lstat(name, &inode->st)) { -+ abort_cpio_o: -+ bb_perror_msg_and_die(name); -+ } -+ if (!S_ISLNK(inode->st.st_mode) && !S_ISREG(inode->st.st_mode)) -+ inode->st.st_size = 0; -+ } -+ // hard links will are stored and will be processed later -+ if (!S_ISDIR(inode->st.st_mode) && inode->st.st_nlink > 1) { -+ struct name_s *n; -+ struct inodes_s *l; -+ -+ for (l = links; l && l->st.st_ino != inode->st.st_ino; l = l->next); -+ if (l == NULL) { // not found: new hard links set -+ l = inode; // l->names = NULL; l->st = inode->st -+ l->next = links; -+ links = l; -+ } -+ n = xmalloc(sizeof(*n) + strlen(name) + 1); // die if fail -+ strcpy(n->name, name); -+ n->next = l->names; -+ l->names = n; // will not free inode if l == inode -+ goto free_and_continue; -+ } -+ size = inode->st.st_size; -+ // no more files ? process hard links -+ if (!line && links) { -+ struct name_s *n; -+ -+ free(inode); // trailer pseudo inode -+ inode = links; -+ n = links->names; -+ name = line = xstrdup(n->name); // line will free *name memory -+ links->names = n->next; -+ if (links->names == NULL) { // inode will free *links memory -+ size = links->st.st_size; -+ links = links->next; -+ } -+ free(n); -+ } -+ bytes += printf("070701%08lx%08lx%08lx%08lx%08lx%08lx%08lx" -+ "%08lx%08lx%08lx%08lx%08lx%08lx%s%c", -+ (unsigned long) inode->st.st_ino, -+ (unsigned long) inode->st.st_mode, -+ (unsigned long) inode->st.st_uid, -+ (unsigned long) inode->st.st_gid, -+ (unsigned long) inode->st.st_nlink, -+ (unsigned long) inode->st.st_mtime, -+ (unsigned long) size, -+ (unsigned long) major(inode->st.st_dev), -+ (unsigned long) minor(inode->st.st_dev), -+ (unsigned long) major(inode->st.st_rdev), -+ (unsigned long) minor(inode->st.st_rdev), -+ strlen(name) + 1UL, 0UL, name, 0); -+ cpio_pad(&bytes, (line) ? 4-1 : 512-1); -+ if (size) { -+ if (S_ISLNK(inode->st.st_mode)) { -+ char *lpath = xmalloc_readlink_or_warn(name); -+ -+ if (!lpath) goto abort_cpio_o; -+ bytes += printf("%s", lpath); -+ free(lpath); -+ } -+ if (S_ISREG(inode->st.st_mode)) { -+ int fd = open_or_warn(name, O_RDONLY); -+ -+ while (1) { -+ int len = full_read(fd, buf, sizeof(buf)); -+ if (len < 0) goto abort_cpio_o; -+ if (len == 0) break; -+ bytes += len; -+ fwrite(buf, 1, len, stdout); -+ } -+ close(fd); -+ } -+ cpio_pad(&bytes, 4-1); -+ } -+ -+ if (!line) { -+ fputc('\n', stderr); // GNU cpio do that... -+ return; // was trailer -+ } -+ -+ free_and_continue: -+ if (!inode->names) free(inode); -+ free(line); -+ } -+} -+#endif - - int cpio_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int cpio_main(int argc, char **argv) - { - archive_handle_t *archive_handle; - char *cpio_filename = NULL; -+#if ENABLE_FEATURE_CPIO_O -+ const char *cpio_fmt = ""; -+#endif - unsigned opt; - - /* Initialise */ -@@ -35,10 +169,26 @@ int cpio_main(int argc, char **argv) - archive_handle->seek = seek_by_read; - archive_handle->flags = ARCHIVE_EXTRACT_NEWER | ARCHIVE_PRESERVE_DATE; - -+#if ENABLE_FEATURE_CPIO_O -+ opt = getopt32(argv, "ituvF:dmoH:", &cpio_filename,&cpio_fmt); -+ -+ if (opt & CPIO_OPT_CREATE) { -+ if (*cpio_fmt != 'n') -+ goto cpio_show_usage; -+ if (cpio_filename) { -+ fclose(stdout); -+ stdout = fopen(cpio_filename,"w"); -+ } -+ cpio_o(); -+ return EXIT_SUCCESS; -+ } -+#else - opt = getopt32(argv, "ituvF:dm", &cpio_filename); -+#endif - - /* One of either extract or test options must be given */ - if ((opt & (CPIO_OPT_TEST | CPIO_OPT_EXTRACT)) == 0) { -+ cpio_show_usage: - bb_show_usage(); - } - -diff -purN busybox-1.10.0/include/usage.h busybox/include/usage.h ---- busybox-1.10.0/include/usage.h 2008-03-29 21:48:22.000000000 +0100 -+++ busybox-1.10.0/include/usage.h 2008-03-29 21:48:22.000000000 +0100 -@@ -496,13 +496,19 @@ - "\n -l,-s Create (sym)links" \ - - #define cpio_trivial_usage \ -- "-[dimtuv][F cpiofile]" -+ "-[dim" USE_FEATURE_CPIO_O("o") "tuv][F cpiofile]" \ -+ USE_FEATURE_CPIO_O( "[H newc]" ) - #define cpio_full_usage \ -- "Extract or list files from a cpio archive\n" \ -+ "Extract or list files from a cpio archive" \ -+ USE_FEATURE_CPIO_O( ", or create a cpio archive" ) "\n" \ - "Main operation mode:" \ - "\n d Make leading directories" \ - "\n i Extract" \ - "\n m Preserve mtime" \ -+ USE_FEATURE_CPIO_O( \ -+ "\n o Create" \ -+ "\n H newc Define format" \ -+ ) \ - "\n t List" \ - "\n v Verbose" \ - "\n u Unconditional overwrite" \ diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0-dhcpc.u --- a/busybox/stuff/busybox-1.10.0-dhcpc.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- busybox-1.10.0/networking/udhcp/dhcpc.c -+++ busybox-1.10.0/networking/udhcp/dhcpc.c -@@ -377,7 +377,11 @@ - xid = random_xid(); - - /* send discover packet */ -- 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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0-patch.u --- a/busybox/stuff/busybox-1.10.0-patch.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,412 +0,0 @@ ---- busybox-1.10.0/editors/patch.c 2008-03-24 15:46:20.000000000 +0100 -+++ busybox-1.10.0/editors/patch.c 2008-03-24 15:46:20.000000000 +0100 -@@ -19,15 +19,11 @@ - * - Reject file isnt saved - */ - --#include -- - #include "libbb.h" - --static unsigned int copy_lines(FILE *src_stream, FILE *dest_stream, const unsigned int lines_count) -+static unsigned copy_lines(FILE *src_stream, FILE *dest_stream, unsigned lines_count) - { -- unsigned int i = 0; -- -- while (src_stream && (i < lines_count)) { -+ while (src_stream && lines_count) { - char *line; - line = xmalloc_fgets(src_stream); - if (line == NULL) { -@@ -37,60 +33,70 @@ - bb_perror_msg_and_die("error writing to new file"); - } - free(line); -- -- i++; -+ lines_count--; - } -- return i; -+ return lines_count; - } - - /* If patch_level is -1 it will remove all directory names - * char *line must be greater than 4 chars - * returns NULL if the file doesnt exist or error - * returns malloc'ed filename -+ * NB: frees 1st argument! - */ - --static char *extract_filename(char *line, int patch_level) -+static char *extract_filename(char *line, unsigned patch_level, const char *pat) - { -- char *temp, *filename_start_ptr = line + 4; -- int i; -+ char *temp = NULL, *filename_start_ptr = line + 4; - -- /* Terminate string at end of source filename */ -- temp = strchrnul(filename_start_ptr, '\t'); -- *temp = '\0'; -- -- /* Skip over (patch_level) number of leading directories */ -- if (patch_level == -1) -- patch_level = INT_MAX; -- for (i = 0; i < patch_level; i++) { -- temp = strchr(filename_start_ptr, '/'); -- if (!temp) -- break; -- filename_start_ptr = temp + 1; -+ if (strncmp(line, pat, 4) == 0) { -+ /* Terminate string at end of source filename */ -+ line[strcspn(line,"\t\n\r")] = '\0'; -+ -+ /* Skip over (patch_level) number of leading directories */ -+ while (patch_level--) { -+ temp = strchr(filename_start_ptr, '/'); -+ if (!temp) -+ break; -+ filename_start_ptr = temp + 1; -+ } -+ temp = xstrdup(filename_start_ptr); - } -- -- return xstrdup(filename_start_ptr); -+ free(line); -+ return temp; - } - - int patch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int patch_main(int argc ATTRIBUTE_UNUSED, char **argv) - { -- int patch_level = -1; -- char *patch_line; -- int ret; -- FILE *patch_file = NULL; - struct stat saved_stat; -- -+ char *patch_line; -+ FILE *patch_file; -+ int patch_level; -+ int ret = 0; -+#define ENABLE_FEATURE_PATCH_REVERSE 1 -+#if ENABLE_FEATURE_PATCH_REVERSE -+ char minus = '-'; -+ char plus = '+'; -+#else -+ const char minus = '-'; -+ const char plus = '+'; -+#endif -+ -+ xfunc_error_retval = 2; - { -- char *p, *i; -- ret = getopt32(argv, "p:i:", &p, &i); -- if (ret & 1) -- patch_level = xatol_range(p, -1, USHRT_MAX); -- if (ret & 2) { -- patch_file = xfopen(i, "r"); -- } else { -- patch_file = stdin; -- } -- ret = 0; -+ const char *p = "-1"; -+ const char *i = "-"; /* compat */ -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (getopt32(argv, "p:i:R", &p, &i) & 4) { -+ minus = '+'; -+ plus = '-'; -+ } -+#else -+ getopt32(argv, "p:i:", &p, &i); -+#endif -+ patch_level = xatoi(p); /* can be negative! */ -+ patch_file = xfopen_stdin(i); - } - - patch_line = xmalloc_getline(patch_file); -@@ -100,38 +106,38 @@ - char *original_filename; - char *new_filename; - char *backup_filename; -- unsigned int src_cur_line = 1; -- unsigned int dest_cur_line = 0; -- unsigned int dest_beg_line; -- unsigned int bad_hunk_count = 0; -- unsigned int hunk_count = 0; -- char copy_trailing_lines_flag = 0; -+ unsigned src_cur_line = 1; -+ unsigned dest_cur_line = 0; -+ unsigned dest_beg_line; -+ unsigned bad_hunk_count = 0; -+ unsigned hunk_count = 0; -+ smallint copy_trailing_lines_flag = 0; - - /* Skip everything upto the "---" marker - * No need to parse the lines "Only in ", and "diff " - */ -- while (patch_line && strncmp(patch_line, "--- ", 4) != 0) { -- free(patch_line); -+ do { -+ /* Extract the filename used before the patch was generated */ -+ original_filename = extract_filename(patch_line, patch_level, "--- "); - patch_line = xmalloc_getline(patch_file); -- } -- /* FIXME: patch_line NULL check?? */ -+ if (!patch_line) goto quit; -+ } while (!original_filename); - -- /* Extract the filename used before the patch was generated */ -- original_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -- -- patch_line = xmalloc_getline(patch_file); -- /* FIXME: NULL check?? */ -- if (strncmp(patch_line, "+++ ", 4) != 0) { -- ret = 2; -- bb_error_msg("invalid patch"); -- continue; -+ new_filename = extract_filename(patch_line, patch_level, "+++ "); -+ if (!new_filename) { -+ bb_error_msg_and_die("invalid patch"); -+ } -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (plus != '+') { -+ /* reverse patch */ -+ char *tmp = original_filename; -+ original_filename = new_filename; -+ new_filename = tmp; - } -- new_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -+#endif - - /* Get access rights from the file to be patched, -1 file does not exist */ -- if (stat(new_filename, &saved_stat)) { -+ if (stat(new_filename, &saved_stat) != 0) { - char *line_ptr; - /* Create leading directories */ - line_ptr = strrchr(new_filename, '/'); -@@ -140,132 +146,137 @@ - bb_make_directory(new_filename, -1, FILEUTILS_RECUR); - *line_ptr = '/'; - } -- dst_stream = xfopen(new_filename, "w+"); - backup_filename = NULL; -+ saved_stat.st_mode = 0644; - } else { -- backup_filename = xmalloc(strlen(new_filename) + 6); -- strcpy(backup_filename, new_filename); -- strcat(backup_filename, ".orig"); -+ backup_filename = xasprintf("%s.orig", new_filename); - xrename(new_filename, backup_filename); -- dst_stream = xfopen(new_filename, "w"); -- fchmod(fileno(dst_stream), saved_stat.st_mode); - } -- -- if ((backup_filename == NULL) || stat(original_filename, &saved_stat)) { -- src_stream = NULL; -- } else { -- if (strcmp(original_filename, new_filename) == 0) { -- src_stream = xfopen(backup_filename, "r"); -- } else { -- src_stream = xfopen(original_filename, "r"); -- } -+ dst_stream = xfopen(new_filename, "w"); -+ fchmod(fileno(dst_stream), saved_stat.st_mode); -+ src_stream = NULL; -+ -+ if (backup_filename && !stat(original_filename, &saved_stat)) { -+ src_stream = xfopen((strcmp(original_filename, new_filename)) ? -+ original_filename : backup_filename, "r"); - } - - printf("patching file %s\n", new_filename); - -- /* Handle each hunk */ -+ /* Handle all hunks for this file */ - patch_line = xmalloc_fgets(patch_file); - while (patch_line) { -- unsigned int count; -- unsigned int src_beg_line; -- unsigned int unused; -- unsigned int hunk_offset_start = 0; -- int hunk_error = 0; -- -- /* This bit should be improved */ -- if ((sscanf(patch_line, "@@ -%d,%d +%d,%d @@", &src_beg_line, &unused, &dest_beg_line, &unused) != 4) && -- (sscanf(patch_line, "@@ -%d,%d +%d @@", &src_beg_line, &unused, &dest_beg_line) != 3) && -- (sscanf(patch_line, "@@ -%d +%d,%d @@", &src_beg_line, &dest_beg_line, &unused) != 3)) { -+ unsigned count; -+ unsigned src_beg_line; -+ unsigned hunk_offset_start; -+ unsigned src_last_line = 1; -+#if ENABLE_FEATURE_PATCH_REVERSE -+ unsigned dst_last_line = 1; -+ -+ if ((sscanf(patch_line, "@@ -%d,%d +%d,%d", &src_beg_line, &src_last_line, &dest_beg_line, &dst_last_line) < 3) && -+ (sscanf(patch_line, "@@ -%d +%d,%d", &src_beg_line, &dest_beg_line, &dst_last_line) < 2)) { - /* No more hunks for this file */ - break; - } -- free(patch_line); -+ if (plus != '+') { -+ /* reverse patch */ -+ unsigned tmp = src_last_line; -+ src_last_line = dst_last_line; -+ dst_last_line = tmp; -+ tmp = src_beg_line; -+ src_beg_line = dest_beg_line; -+ dest_beg_line = tmp; -+ } -+#else -+ -+ if ((sscanf(patch_line, "@@ -%d,%d +%d", &src_beg_line, &src_last_line, &dest_beg_line) != 3) && -+ (sscanf(patch_line, "@@ -%d +%d", &src_beg_line, &dest_beg_line) != 2)) { -+ /* No more hunks for this file */ -+ break; -+ } -+#endif - hunk_count++; - - if (src_beg_line && dest_beg_line) { - /* Copy unmodified lines upto start of hunk */ -- /* src_beg_line will be 0 if its a new file */ -+ /* src_beg_line will be 0 if it's a new file */ - count = src_beg_line - src_cur_line; -- if (copy_lines(src_stream, dst_stream, count) != count) { -+ if (copy_lines(src_stream, dst_stream, count)) { - bb_error_msg_and_die("bad src file"); - } - src_cur_line += count; - dest_cur_line += count; - copy_trailing_lines_flag = 1; - } -- hunk_offset_start = src_cur_line; -- -- while ((patch_line = xmalloc_fgets(patch_file)) != NULL) { -- if ((*patch_line == '-') || (*patch_line == ' ')) { -+ src_last_line += hunk_offset_start = src_cur_line; -+#if ENABLE_FEATURE_PATCH_REVERSE -+ dst_last_line += dest_cur_line; -+#endif -+ while (1) { -+ free(patch_line); -+ patch_line = xmalloc_fgets(patch_file); -+ if (patch_line == NULL) break; -+ if ((*patch_line == minus) || (*patch_line == ' ')) { - char *src_line = NULL; -+ if (src_cur_line == src_last_line) break; - if (src_stream) { - src_line = xmalloc_fgets(src_stream); -- if (!src_line) { -- hunk_error++; -- break; -- } else { -+ if (src_line) { -+ int diff = strcmp(src_line, patch_line + 1); - src_cur_line++; -+ free(src_line); -+ if (diff) src_line = NULL; - } -- if (strcmp(src_line, patch_line + 1) != 0) { -- bb_error_msg("hunk #%d FAILED at %d", hunk_count, hunk_offset_start); -- hunk_error++; -- free(patch_line); -- /* Probably need to find next hunk, etc... */ -- /* but for now we just bail out */ -- patch_line = NULL; -- break; -- } -- free(src_line); - } -- if (*patch_line == ' ') { -- fputs(patch_line + 1, dst_stream); -- dest_cur_line++; -+ if (!src_line) { -+ bb_error_msg("hunk #%u FAILED at %u", hunk_count, hunk_offset_start); -+ bad_hunk_count++; -+ break; - } -- } else if (*patch_line == '+') { -- fputs(patch_line + 1, dst_stream); -- dest_cur_line++; -- } else { -+ if (*patch_line != ' ') { -+ continue; -+ } -+ } else if (*patch_line != plus) { - break; - } -- free(patch_line); -- } -- if (hunk_error) { -- bad_hunk_count++; -- } -- } -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (dest_cur_line == dst_last_line) break; -+#endif -+ fputs(patch_line + 1, dst_stream); -+ dest_cur_line++; -+ } /* end of while loop handling one hunk */ -+ } /* end of while loop handling one file */ - - /* Cleanup last patched file */ - if (copy_trailing_lines_flag) { -- copy_lines(src_stream, dst_stream, -1); -+ copy_lines(src_stream, dst_stream, (unsigned)(-1)); - } - if (src_stream) { - fclose(src_stream); - } -- if (dst_stream) { -- fclose(dst_stream); -- } -+ fclose(dst_stream); - if (bad_hunk_count) { -- if (!ret) { -- ret = 1; -- } -- bb_error_msg("%d out of %d hunk FAILED", bad_hunk_count, hunk_count); -+ ret = 1; -+ bb_error_msg("%u out of %u hunk FAILED", bad_hunk_count, hunk_count); - } else { - /* It worked, we can remove the backup */ - if (backup_filename) { - unlink(backup_filename); -+ free(backup_filename); - } - if ((dest_cur_line == 0) || (dest_beg_line == 0)) { - /* The new patched file is empty, remove it */ - xunlink(new_filename); -- if (strcmp(new_filename, original_filename) != 0) -- xunlink(original_filename); -+ /* original_filename and new_filename may be the same file */ -+ unlink(original_filename); - } - } -- } -+ } /* end of "while there are patch lines" */ -+quit: - - /* 0 = SUCCESS - * 1 = Some hunks failed -- * 2 = More serious problems -+ * 2 = More serious problems (exited earlier) - */ - return ret; - } - ---- busybox-1.10.0/include/usage.h 2008-03-24 16:20:43.000000000 +0100 -+++ busybox-1.10.0/include/usage.h 2008-03-24 16:22:06.000000000 +0100 -@@ -2833,8 +2833,9 @@ - ) - - #define patch_trivial_usage \ -- "[-p NUM] [-i DIFF]" -+ "[-R] [-p NUM] [-i DIFF]" - #define patch_full_usage \ -+ " -R Reverse patch\n" \ - " -p NUM Strip NUM leading components from file names" \ - "\n -i DIFF Read DIFF instead of stdin" \ - diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0-vcsa2txt.u --- a/busybox/stuff/busybox-1.10.0-vcsa2txt.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ ---- busybox-1.10.0/include/applets.h Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.0/include/applets.h Sat Mar 22 02:31:50 2008 -@@ -382,6 +382,7 @@ - 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.10.0/include/usage.h Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.0/include/usage.h Sat Mar 22 02:31:50 2008 -@@ -4314,6 +4314,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 \ - ---- busybox-1.10.0/miscutils/Config.in Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.0/miscutils/Config.in Sat Mar 22 02:31:50 2008 -@@ -461,6 +461,12 @@ - only height, or both, in any order. It also does not complain on 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.10.0/util-linux/Kbuild Sat Mar 22 02:31:53 2008 -+++ busybox-1.10.0/util-linux/Kbuild Sat Mar 22 02:31:53 2008 -@@ -33,3 +33,4 @@ - lib-$(CONFIG_SWAPONOFF) += swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) += switch_root.o - lib-$(CONFIG_UMOUNT) += umount.o -+lib-$(CONFIG_VCSA2TXT) += vcsa2txt.o - ---- busybox-1.10.0/util-linux/vcsa2txt.c Sat Mar 22 19:40:15 2008 -+++ busybox-1.10.0/util-linux/vcsa2txt.c Sat Mar 22 19:40:15 2008 -@@ -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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.0.config --- a/busybox/stuff/busybox-1.10.0.config Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,832 +0,0 @@ -# TODO: add RESET CLEAR RMMOD LSMOD -# -# Automatically generated make config: don't edit -# Busybox version: 1.10.0 -# Sat Mar 22 19:45:26 2008 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -# CONFIG_NITPICK is not set -CONFIG_DESKTOP=y -# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -# 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_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 - -# -# Debugging Options -# -# CONFIG_DEBUG 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 - -# -# 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 - -# -# Applets -# - -# -# Archival Utilities -# -# CONFIG_AR is not set -# 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_FEATURE_GUNZIP_UNCOMPRESS=y -CONFIG_GZIP=y -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_FEATURE_RPM_BZ2=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -CONFIG_FEATURE_TAR_GZIP=y -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -CONFIG_FEATURE_TAR_COMPRESS=y -CONFIG_FEATURE_TAR_AUTODETECT=y -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 - -# -# Common options for cpio and tar -# -# CONFIG_FEATURE_UNARCHIVE_TAPE is not set - -# -# Common options for dpkg and dpkg_deb -# -CONFIG_FEATURE_DEB_TAR_GZ=y -CONFIG_FEATURE_DEB_TAR_BZ2=y -CONFIG_FEATURE_DEB_TAR_LZMA=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_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 is not set -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 is not set -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_SETKEYCODES=y -# CONFIG_SETLOGCONS 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_SHADOW is not set -# CONFIG_USE_BB_PWD_GRP is not set -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 is not set -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=y -CONFIG_FSCK=y -CONFIG_LSATTR=y - -# -# Linux Module Utilities -# -# CONFIG_INSMOD 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_RMMOD is not set -# CONFIG_LSMOD is not set -# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set -# CONFIG_MODPROBE is not set -# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set -# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_2_6_MODULES is not set -# 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_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 is not set -# CONFIG_FEATURE_VOLUMEID_JFS is not set -# CONFIG_FEATURE_VOLUMEID_XFS is not set -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 is not set -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_READPROFILE=y -# CONFIG_RTCWAKE is not set -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=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_LAST=y -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_MICROCOM=y -CONFIG_MOUNTPOINT=y -# CONFIG_MT is not set -# CONFIG_RAIDAUTORUN is not set -# CONFIG_READAHEAD is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -CONFIG_SCRIPT=y -CONFIG_STRINGS=y -CONFIG_SETSID=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_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 is not set -# CONFIG_FEATURE_IP_ADDRESS is not set -# CONFIG_FEATURE_IP_LINK is not set -# CONFIG_FEATURE_IP_ROUTE is not set -# CONFIG_FEATURE_IP_TUNNEL is not set -# CONFIG_FEATURE_IP_RULE is not set -# CONFIG_FEATURE_IP_SHORT_FORMS is not set -# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -# CONFIG_IPADDR is not set -# CONFIG_IPLINK is not set -# CONFIG_IPROUTE is not set -# CONFIG_IPTUNNEL is not set -# CONFIG_IPRULE is not set -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_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_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 is not set -# 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_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_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_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_CTTYHACK is not set - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -CONFIG_FEATURE_ROTATE_LOGFILE=y -CONFIG_FEATURE_REMOTE_LOG=y -# CONFIG_FEATURE_SYSLOGD_DUP is not set -# 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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-cpio-mkdir.u --- a/busybox/stuff/busybox-1.10.1-cpio-mkdir.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0-cpio-mkdir.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-cpio-mtime.u --- a/busybox/stuff/busybox-1.10.1-cpio-mtime.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ ---- busybox-1.10.0/archival/cpio.c -+++ busybox-1.10.0/archival/cpio.c -@@ -167,7 +167,7 @@ - archive_handle = init_handle(); - archive_handle->src_fd = STDIN_FILENO; - archive_handle->seek = seek_by_read; -- archive_handle->flags = ARCHIVE_EXTRACT_NEWER | ARCHIVE_PRESERVE_DATE; -+ archive_handle->flags = ARCHIVE_EXTRACT_NEWER; - - #if ENABLE_FEATURE_CPIO_O - opt = getopt32(argv, "ituvF:dmoH:", &cpio_filename,&cpio_fmt); -@@ -220,6 +220,9 @@ - if (opt & CPIO_OPT_CREATE_LEADING_DIR) { - archive_handle->flags |= ARCHIVE_CREATE_LEADING_DIRS; - } -+ if (opt & CPIO_OPT_PRESERVE_MTIME) { -+ archive_handle->flags |= ARCHIVE_PRESERVE_DATE; -+ } - - while (optind < argc) { - archive_handle->filter = filter_accept_list; diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-cpio.u --- a/busybox/stuff/busybox-1.10.1-cpio.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0-cpio.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-dhcpc.u --- a/busybox/stuff/busybox-1.10.1-dhcpc.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0-dhcpc.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-fixes-1.10.1.u --- a/busybox/stuff/busybox-1.10.1-fixes-1.10.1.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,971 +0,0 @@ -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-completion.patch ---- busybox-1.10.1/libbb/lineedit.c Sat Apr 19 05:50:33 2008 -+++ busybox-1.10.1-completion/libbb/lineedit.c Thu Apr 24 06:45:39 2008 -@@ -518,8 +518,8 @@ - - for (i = 0; i < npaths; i++) { - dir = opendir(paths[i]); -- if (!dir) /* Don't print an error */ -- continue; -+ if (!dir) -+ continue; /* don't print an error */ - - while ((next = readdir(dir)) != NULL) { - int len1; -@@ -529,18 +529,21 @@ - if (strncmp(str_found, pfind, strlen(pfind))) - continue; - /* not see .name without .match */ -- if (*str_found == '.' && *pfind == 0) { -+ if (*str_found == '.' && *pfind == '\0') { - if (NOT_LONE_CHAR(paths[i], '/') || str_found[1]) - continue; - str_found = ""; /* only "/" */ - } - found = concat_path_file(paths[i], str_found); -- /* hmm, remover in progress? */ -- if (lstat(found, &st) < 0) -+ /* hmm, remove in progress? */ -+ /* NB: stat() first so that we see is it a directory; -+ * but if that fails, use lstat() so that -+ * we still match dangling links */ -+ if (stat(found, &st) && lstat(found, &st)) - goto cont; - /* find with dirs? */ - if (paths[i] != dirbuf) -- strcpy(found, next->d_name); /* only name */ -+ strcpy(found, next->d_name); /* only name */ - - len1 = strlen(found); - found = xrealloc(found, len1 + 2); -@@ -548,7 +551,7 @@ - found[len1+1] = '\0'; - - if (S_ISDIR(st.st_mode)) { -- /* name is directory */ -+ /* name is a directory */ - if (found[len1-1] != '/') { - found[len1] = '/'; - } -@@ -566,7 +569,7 @@ - closedir(dir); - } - if (paths != path1) { -- free(paths[0]); /* allocated memory only in first member */ -+ free(paths[0]); /* allocated memory is only in first member */ - free(paths); - } - #undef dirbuf -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-echo.patch ---- busybox-1.10.1/coreutils/echo.c Sat Apr 19 05:50:32 2008 -+++ busybox-1.10.1-echo/coreutils/echo.c Wed Apr 30 02:37:08 2008 -@@ -27,10 +27,8 @@ - - /* This is a NOFORK applet. Be very careful! */ - --/* argc is unused, but removing it precludes compiler from -- * using call -> jump optimization */ -+/* NB: can be used by shell even if not enabled as applet */ - --int echo_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int echo_main(int argc ATTRIBUTE_UNUSED, char **argv) - { - const char *arg; -@@ -110,15 +108,19 @@ - } - #if !ENABLE_FEATURE_FANCY_ECHO - /* SUSv3 specifies that octal escapes must begin with '0'. */ -- if ( (((unsigned char)*arg) - '1') >= 7) -+ if ( ((int)(unsigned char)(*arg) - '0') >= 8) /* '8' or bigger */ - #endif - { - /* Since SUSv3 mandates a first digit of 0, 4-digit octals - * of the form \0### are accepted. */ -- if (*arg == '0' && ((unsigned char)(arg[1]) - '0') < 8) { -- arg++; -+ if (*arg == '0') { -+ /* NB: don't turn "...\0" into "...\" */ -+ if (arg[1] && ((unsigned char)(arg[1]) - '0') < 8) { -+ arg++; -+ } - } -- /* bb_process_escape_sequence can handle nul correctly */ -+ /* bb_process_escape_sequence handles NUL correctly -+ * ("...\" case). */ - c = bb_process_escape_sequence(&arg); - } - } -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-fixes-1.10.1.u -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-hppa.patch ---- busybox-1.10.1/include/libbb.h Sat Apr 19 05:50:36 2008 -+++ busybox-1.10.1-hppa/include/libbb.h Mon Apr 28 10:34:36 2008 -@@ -288,20 +288,20 @@ - * SIGSYS Bad argument to routine - * SIGTRAP Trace/breakpoint trap - */ -- BB_FATAL_SIGS = 0 -- + (1 << SIGHUP) -- + (1 << SIGINT) -- + (1 << SIGTERM) -- + (1 << SIGPIPE) // Write to pipe with no readers -- + (1 << SIGQUIT) // Quit from keyboard -- + (1 << SIGABRT) // Abort signal from abort(3) -- + (1 << SIGALRM) // Timer signal from alarm(2) -- + (1 << SIGVTALRM) // Virtual alarm clock -- + (1 << SIGXCPU) // CPU time limit exceeded -- + (1 << SIGXFSZ) // File size limit exceeded -- + (1 << SIGUSR1) // Yes kids, these are also fatal! -- + (1 << SIGUSR2) -- + 0, -+ BB_FATAL_SIGS = (int)(0 -+ + (1LL << SIGHUP) -+ + (1LL << SIGINT) -+ + (1LL << SIGTERM) -+ + (1LL << SIGPIPE) // Write to pipe with no readers -+ + (1LL << SIGQUIT) // Quit from keyboard -+ + (1LL << SIGABRT) // Abort signal from abort(3) -+ + (1LL << SIGALRM) // Timer signal from alarm(2) -+ + (1LL << SIGVTALRM) // Virtual alarm clock -+ + (1LL << SIGXCPU) // CPU time limit exceeded -+ + (1LL << SIGXFSZ) // File size limit exceeded -+ + (1LL << SIGUSR1) // Yes kids, these are also fatal! -+ + (1LL << SIGUSR2) -+ + 0), - }; - void bb_signals(int sigs, void (*f)(int)); - /* Unlike signal() and bb_signals, sets handler with sigaction() -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-httpd.patch ---- busybox-1.10.1/networking/httpd.c Sat Apr 19 05:50:27 2008 -+++ busybox-1.10.1-httpd/networking/httpd.c Wed May 7 11:19:11 2008 -@@ -1457,6 +1457,11 @@ - } - } - #endif -+ /* restore default signal dispositions for CGI process */ -+ signal(SIGCHLD, SIG_DFL); -+ signal(SIGPIPE, SIG_DFL); -+ signal(SIGHUP, SIG_DFL); -+ - execv(fullpath, argv); - if (verbose) - bb_perror_msg("exec %s", fullpath); -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-ioctl.patch ---- busybox-1.10.1/include/libbb.h Sat Apr 19 05:50:36 2008 -+++ busybox-1.10.1-ioctl/include/libbb.h Thu Apr 24 06:45:03 2008 -@@ -995,16 +995,16 @@ - /* NB: typically you want to pass fd 0, not 1. Think 'applet | grep something' */ - int get_terminal_width_height(int fd, int *width, int *height); - --int ioctl_or_perror(int fd, int request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); --void ioctl_or_perror_and_die(int fd, int request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); -+int ioctl_or_perror(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); -+void ioctl_or_perror_and_die(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); - #if ENABLE_IOCTL_HEX2STR_ERROR --int bb_ioctl_or_warn(int fd, int request, void *argp, const char *ioctl_name); --void bb_xioctl(int fd, int request, void *argp, const char *ioctl_name); -+int bb_ioctl_or_warn(int fd, unsigned request, void *argp, const char *ioctl_name); -+void bb_xioctl(int fd, unsigned request, void *argp, const char *ioctl_name); - #define ioctl_or_warn(fd,request,argp) bb_ioctl_or_warn(fd,request,argp,#request) - #define xioctl(fd,request,argp) bb_xioctl(fd,request,argp,#request) - #else --int bb_ioctl_or_warn(int fd, int request, void *argp); --void bb_xioctl(int fd, int request, void *argp); -+int bb_ioctl_or_warn(int fd, unsigned request, void *argp); -+void bb_xioctl(int fd, unsigned request, void *argp); - #define ioctl_or_warn(fd,request,argp) bb_ioctl_or_warn(fd,request,argp) - #define xioctl(fd,request,argp) bb_xioctl(fd,request,argp) - #endif ---- busybox-1.10.1/libbb/xfuncs.c Sat Apr 19 05:50:33 2008 -+++ busybox-1.10.1-ioctl/libbb/xfuncs.c Thu Apr 24 06:45:14 2008 -@@ -704,7 +704,7 @@ - return ret; - } - --void ioctl_or_perror_and_die(int fd, int request, void *argp, const char *fmt,...) -+void ioctl_or_perror_and_die(int fd, unsigned request, void *argp, const char *fmt,...) - { - va_list p; - -@@ -717,7 +717,7 @@ - } - } - --int ioctl_or_perror(int fd, int request, void *argp, const char *fmt,...) -+int ioctl_or_perror(int fd, unsigned request, void *argp, const char *fmt,...) - { - va_list p; - int ret = ioctl(fd, request, argp); -@@ -731,7 +731,7 @@ - } - - #if ENABLE_IOCTL_HEX2STR_ERROR --int bb_ioctl_or_warn(int fd, int request, void *argp, const char *ioctl_name) -+int bb_ioctl_or_warn(int fd, unsigned request, void *argp, const char *ioctl_name) - { - int ret; - -@@ -740,13 +740,13 @@ - bb_simple_perror_msg(ioctl_name); - return ret; - } --void bb_xioctl(int fd, int request, void *argp, const char *ioctl_name) -+void bb_xioctl(int fd, unsigned request, void *argp, const char *ioctl_name) - { - if (ioctl(fd, request, argp) < 0) - bb_simple_perror_msg_and_die(ioctl_name); - } - #else --int bb_ioctl_or_warn(int fd, int request, void *argp) -+int bb_ioctl_or_warn(int fd, unsigned request, void *argp) - { - int ret; - -@@ -755,7 +755,7 @@ - bb_perror_msg("ioctl %#x failed", request); - return ret; - } --void bb_xioctl(int fd, int request, void *argp) -+void bb_xioctl(int fd, unsigned request, void *argp) - { - if (ioctl(fd, request, argp) < 0) - bb_perror_msg_and_die("ioctl %#x failed", request); -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-mdev.patch ---- busybox-1.10.1/util-linux/mdev.c Sat Apr 19 05:50:39 2008 -+++ busybox-1.10.1-mdev/util-linux/mdev.c Fri May 2 14:48:06 2008 -@@ -12,6 +12,8 @@ - #include "libbb.h" - #include "xregex.h" - -+#define ENABLE_FEATURE_MDEV_RENAME_REGEXP 1 -+ - struct globals { - int root_major, root_minor; - }; -@@ -21,7 +23,21 @@ - - #define MAX_SYSFS_DEPTH 3 /* prevent infinite loops in /sys symlinks */ - -+/* We use additional 64+ bytes in make_device() */ -+#define SCRATCH_SIZE 80 -+ -+static char *next_field(char *s) -+{ -+ char *end = skip_non_whitespace(s); -+ s = skip_whitespace(end); -+ *end = '\0'; -+ if (*s == '\0') -+ s = NULL; -+ return s; -+} -+ - /* mknod in /dev based on a path like "/sys/block/hda/hda1" */ -+/* NB: "mdev -s" may call us many times, do not leak memory/fds! */ - static void make_device(char *path, int delete) - { - const char *device_name; -@@ -29,7 +45,7 @@ - int mode = 0660; - uid_t uid = 0; - gid_t gid = 0; -- char *temp = path + strlen(path); -+ char *dev_maj_min = path + strlen(path); - char *command = NULL; - char *alias = NULL; - -@@ -42,156 +58,178 @@ - * also depend on path having writeable space after it. - */ - if (!delete) { -- strcat(path, "/dev"); -- len = open_read_close(path, temp + 1, 64); -- *temp++ = 0; -+ strcpy(dev_maj_min, "/dev"); -+ len = open_read_close(path, dev_maj_min + 1, 64); -+ *dev_maj_min++ = '\0'; - if (len < 1) { -- if (ENABLE_FEATURE_MDEV_EXEC) -- /* no "dev" file, so just try to run script */ -- *temp = 0; -- else -+ if (!ENABLE_FEATURE_MDEV_EXEC) - return; -+ /* no "dev" file, so just try to run script */ -+ *dev_maj_min = '\0'; - } - } - - /* Determine device name, type, major and minor */ - device_name = bb_basename(path); -- type = (path[5] == 'c' ? S_IFCHR : S_IFBLK); -+ /* http://kernel.org/doc/pending/hotplug.txt says that only -+ * "/sys/block/..." is for block devices. "sys/bus" etc is not! */ -+ type = (strncmp(&path[5], "block/", 6) == 0 ? S_IFBLK : S_IFCHR); - - if (ENABLE_FEATURE_MDEV_CONF) { - FILE *fp; -- char *line, *vline; -+ char *line, *val, *next; - unsigned lineno = 0; - -- /* If we have a config file, look up the user settings */ -+ /* If we have config file, look up user settings */ - fp = fopen_or_warn("/etc/mdev.conf", "r"); - if (!fp) - goto end_parse; - -- while ((vline = line = xmalloc_getline(fp)) != NULL) { -- int field; -+ while ((line = xmalloc_getline(fp)) != NULL) { -+ regmatch_t off[1+9*ENABLE_FEATURE_MDEV_RENAME_REGEXP]; - -- /* A pristine copy for command execution. */ -- char *orig_line; -- if (ENABLE_FEATURE_MDEV_EXEC) -- orig_line = xstrdup(line); -- - ++lineno; -+ trim(line); -+ if (!line[0]) -+ goto next_line; - -- /* Three fields: regex, uid:gid, mode */ -- for (field = 0; field < (3 + ENABLE_FEATURE_MDEV_RENAME + ENABLE_FEATURE_MDEV_EXEC); ++field) { -+ /* Fields: regex uid:gid mode [alias] [cmd] */ - -- /* Find a non-empty field */ -- char *val; -- do { -- val = strtok(vline, " \t"); -- vline = NULL; -- } while (val && !*val); -- if (!val) { -- if (field) -- break; -- else -- goto next_line; -- } -+ /* 1st field: regex to match this device */ -+ next = next_field(line); -+ { -+ regex_t match; -+ int result; - -- if (field == 0) { -+ /* Is this it? */ -+ xregcomp(&match, line, REG_EXTENDED); -+ result = regexec(&match, device_name, ARRAY_SIZE(off), off, 0); -+ regfree(&match); - -- /* Regex to match this device */ -- regex_t match; -- regmatch_t off; -- int result; -+ //bb_error_msg("matches:"); -+ //for (int i = 0; i < ARRAY_SIZE(off); i++) { -+ // if (off[i].rm_so < 0) continue; -+ // bb_error_msg("match %d: '%.*s'\n", i, -+ // (int)(off[i].rm_eo - off[i].rm_so), -+ // device_name + off[i].rm_so); -+ //} - -- /* Is this it? */ -- xregcomp(&match, val, REG_EXTENDED); -- result = regexec(&match, device_name, 1, &off, 0); -- regfree(&match); -+ /* If not this device, skip rest of line */ -+ /* (regexec returns whole pattern as "range" 0) */ -+ if (result || off[0].rm_so || off[0].rm_eo != strlen(device_name)) -+ goto next_line; -+ } - -- /* If not this device, skip rest of line */ -- if (result || off.rm_so || off.rm_eo != strlen(device_name)) -- goto next_line; -+ /* This line matches: stop parsing the file -+ * after parsing the rest of fields */ - -- } else if (field == 1) { -+ /* 2nd field: uid:gid - device ownership */ -+ if (!next) /* field must exist */ -+ bb_error_msg_and_die("bad line %u", lineno); -+ val = next; -+ next = next_field(val); -+ { -+ struct passwd *pass; -+ struct group *grp; -+ char *str_uid = val; -+ char *str_gid = strchrnul(val, ':'); - -- /* uid:gid device ownership */ -- struct passwd *pass; -- struct group *grp; -+ if (*str_gid) -+ *str_gid++ = '\0'; -+ /* Parse UID */ -+ pass = getpwnam(str_uid); -+ if (pass) -+ uid = pass->pw_uid; -+ else -+ uid = strtoul(str_uid, NULL, 10); -+ /* Parse GID */ -+ grp = getgrnam(str_gid); -+ if (grp) -+ gid = grp->gr_gid; -+ else -+ gid = strtoul(str_gid, NULL, 10); -+ } - -- char *str_uid = val; -- char *str_gid = strchr(val, ':'); -- if (str_gid) -- *str_gid = '\0', ++str_gid; -+ /* 3rd field: mode - device permissions */ -+ if (!next) /* field must exist */ -+ bb_error_msg_and_die("bad line %u", lineno); -+ val = next; -+ next = next_field(val); -+ mode = strtoul(val, NULL, 8); - -- /* Parse UID */ -- pass = getpwnam(str_uid); -- if (pass) -- uid = pass->pw_uid; -- else -- uid = strtoul(str_uid, NULL, 10); -+ /* 4th field (opt): >alias */ -+ if (ENABLE_FEATURE_MDEV_RENAME) { -+ if (!next) -+ break; -+ if (*next == '>') { -+#if ENABLE_FEATURE_MDEV_RENAME_REGEXP -+ char *s, *p; -+ unsigned i, n; -+#endif -+ val = next; -+ next = next_field(val); -+#if ENABLE_FEATURE_MDEV_RENAME_REGEXP -+ /* substitute %1..9 with off[1..9], if any */ -+ n = 0; -+ s = val; -+ while (*s && *s++ == '%') -+ n++; - -- /* parse GID */ -- grp = getgrnam(str_gid); -- if (grp) -- gid = grp->gr_gid; -- else -- gid = strtoul(str_gid, NULL, 10); -- -- } else if (field == 2) { -- -- /* Mode device permissions */ -- mode = strtoul(val, NULL, 8); -- -- } else if (ENABLE_FEATURE_MDEV_RENAME && field == 3) { -- -- if (*val != '>') -- ++field; -- else -- alias = xstrdup(val + 1); -- -+ p = alias = xzalloc(strlen(val) + n * strlen(device_name)); -+ s = val + 1; -+ while (*s) { -+ *p = *s; -+ if ('%' == *s) { -+ i = (s[1] - '0'); -+ if (i <= 9 && off[i].rm_so >= 0) { -+ n = off[i].rm_eo - off[i].rm_so; -+ strncpy(p, device_name + off[i].rm_so, n); -+ p += n - 1; -+ s++; -+ } -+ } -+ p++; -+ s++; -+ } -+#else -+ alias = xstrdup(val + 1); -+#endif - } -+ } - -- if (ENABLE_FEATURE_MDEV_EXEC && field == 3 + ENABLE_FEATURE_MDEV_RENAME) { -+ /* The rest (opt): command to run */ -+ if (!next) -+ break; -+ val = next; -+ if (ENABLE_FEATURE_MDEV_EXEC) { -+ const char *s = "@$*"; -+ const char *s2 = strchr(s, *val); - -- /* Optional command to run */ -- const char *s = "@$*"; -- const char *s2 = strchr(s, *val); -+ if (!s2) -+ bb_error_msg_and_die("bad line %u", lineno); - -- if (!s2) { -- /* Force error */ -- field = 1; -- break; -- } -- -- /* Correlate the position in the "@$*" with the delete -- * step so that we get the proper behavior. -- */ -- if ((s2 - s + 1) & (1 << delete)) -- command = xstrdup(orig_line + (val + 1 - line)); -+ /* Correlate the position in the "@$*" with the delete -+ * step so that we get the proper behavior: -+ * @cmd: run on create -+ * $cmd: run on delete -+ * *cmd: run on both -+ */ -+ if ((s2 - s + 1) /*1/2/3*/ & /*1/2*/ (1 + delete)) { -+ command = xstrdup(val + 1); - } - } -- -- /* Did everything parse happily? */ -- if (field <= 2) -- bb_error_msg_and_die("bad line %u", lineno); -- -+ /* end of field parsing */ -+ break; /* we found matching line, stop */ - next_line: - free(line); -- if (ENABLE_FEATURE_MDEV_EXEC) -- free(orig_line); -- } -+ } /* end of "while line is read from /etc/mdev.conf" */ - -- if (ENABLE_FEATURE_CLEAN_UP) -- fclose(fp); -- -- end_parse: /* nothing */ ; -+ free(line); /* in case we used "break" to get here */ -+ fclose(fp); - } -+ end_parse: - -- if (!delete) { -- if (sscanf(temp, "%d:%d", &major, &minor) != 2) { -- if (ENABLE_FEATURE_MDEV_EXEC) -- goto skip_creation; -- else -- return; -- } -+ if (!delete && sscanf(dev_maj_min, "%u:%u", &major, &minor) == 2) { - - if (ENABLE_FEATURE_MDEV_RENAME) - unlink(device_name); -@@ -208,39 +246,44 @@ - if (ENABLE_FEATURE_MDEV_RENAME && alias) { - char *dest; - -- temp = strrchr(alias, '/'); -- if (temp) { -- if (temp[1] != '\0') -- /* given a file name, so rename it */ -- *temp = '\0'; -+ /* ">bar/": rename to bar/device_name */ -+ /* ">bar[/]baz": rename to bar[/]baz */ -+ dest = strrchr(alias, '/'); -+ if (dest) { /* ">bar/[baz]" ? */ -+ *dest = '\0'; /* mkdir bar */ - bb_make_directory(alias, 0755, FILEUTILS_RECUR); -- dest = concat_path_file(alias, device_name); -- } else -- dest = alias; -+ *dest = '/'; -+ if (dest[1] == '\0') { /* ">bar/" => ">bar/device_name" */ -+ dest = alias; -+ alias = concat_path_file(alias, device_name); -+ free(dest); -+ } -+ } - -- rename(device_name, dest); // TODO: xrename? -- symlink(dest, device_name); -+ /* recreate device_name as a symlink to moved device node */ -+ if (rename(device_name, alias) == 0) { -+ symlink(alias, device_name); -+ } - -- if (alias != dest) -- free(alias); -- free(dest); -+ free(alias); - } - } -- skip_creation: /* nothing */ ; - } -+ - if (ENABLE_FEATURE_MDEV_EXEC && command) { -- /* setenv will leak memory, so use putenv */ -+ /* setenv will leak memory, use putenv/unsetenv/free */ - char *s = xasprintf("MDEV=%s", device_name); - putenv(s); - if (system(command) == -1) -- bb_perror_msg_and_die("cannot run %s", command); -+ bb_perror_msg_and_die("can't run '%s'", command); - s[4] = '\0'; - unsetenv(s); - free(s); - free(command); - } -+ - if (delete) -- remove_file(device_name, FILEUTILS_FORCE); -+ unlink(device_name); - } - - /* File callback for /sys/ traversal */ -@@ -249,14 +292,15 @@ - void *userData, - int depth ATTRIBUTE_UNUSED) - { -- size_t len = strlen(fileName) - 4; -+ size_t len = strlen(fileName) - 4; /* can't underflow */ - char *scratch = userData; - -- if (strcmp(fileName + len, "/dev")) -+ /* len check is for paranoid reasons */ -+ if (strcmp(fileName + len, "/dev") || len >= PATH_MAX) - return FALSE; - - strcpy(scratch, fileName); -- scratch[len] = 0; -+ scratch[len] = '\0'; - make_device(scratch, 0); - - return TRUE; -@@ -287,12 +331,6 @@ - int cnt; - int firmware_fd, loading_fd, data_fd; - -- /* check for $FIRMWARE from kernel */ -- /* XXX: dont bother: open(NULL) works same as open("no-such-file") -- * if (!firmware) -- * return; -- */ -- - /* check for /lib/firmware/$FIRMWARE */ - xchdir("/lib/firmware"); - firmware_fd = xopen(firmware, O_RDONLY); -@@ -304,16 +342,15 @@ - xchdir(sysfs_path); - for (cnt = 0; cnt < 30; ++cnt) { - loading_fd = open("loading", O_WRONLY); -- if (loading_fd == -1) -- sleep(1); -- else -- break; -+ if (loading_fd != -1) -+ goto loading; -+ sleep(1); - } -- if (loading_fd == -1) -- goto out; -+ goto out; - -+ loading: - /* tell kernel we're loading by `echo 1 > /sys/$DEVPATH/loading` */ -- if (write(loading_fd, "1", 1) != 1) -+ if (full_write(loading_fd, "1", 1) != 1) - goto out; - - /* load firmware by `cat /lib/firmware/$FIRMWARE > /sys/$DEVPATH/data */ -@@ -324,9 +361,9 @@ - - /* tell kernel result by `echo [0|-1] > /sys/$DEVPATH/loading` */ - if (cnt > 0) -- write(loading_fd, "0", 1); -+ full_write(loading_fd, "0", 1); - else -- write(loading_fd, "-1", 2); -+ full_write(loading_fd, "-1", 2); - - out: - if (ENABLE_FEATURE_CLEAN_UP) { -@@ -341,16 +378,14 @@ - { - char *action; - char *env_path; -- RESERVE_CONFIG_BUFFER(temp,PATH_MAX); -+ RESERVE_CONFIG_BUFFER(temp, PATH_MAX + SCRATCH_SIZE); - - xchdir("/dev"); - -- if (argc == 2 && !strcmp(argv[1],"-s")) { -- -+ if (argc == 2 && !strcmp(argv[1], "-s")) { - /* Scan: - * mdev -s - */ -- - struct stat st; - - xstat("/", &st); -@@ -366,26 +401,27 @@ - fileAction, dirAction, temp, 0); - - } else { -- - /* Hotplug: - * env ACTION=... DEVPATH=... mdev - * ACTION can be "add" or "remove" - * DEVPATH is like "/block/sda" or "/class/input/mice" - */ -- - action = getenv("ACTION"); - env_path = getenv("DEVPATH"); - if (!action || !env_path) - bb_show_usage(); - -- sprintf(temp, "/sys%s", env_path); -+ snprintf(temp, PATH_MAX, "/sys%s", env_path); - if (!strcmp(action, "remove")) - make_device(temp, 1); - else if (!strcmp(action, "add")) { - make_device(temp, 0); - -- if (ENABLE_FEATURE_MDEV_LOAD_FIRMWARE) -- load_firmware(getenv("FIRMWARE"), temp); -+ if (ENABLE_FEATURE_MDEV_LOAD_FIRMWARE) { -+ char *fw = getenv("FIRMWARE"); -+ if (fw) -+ load_firmware(fw, temp); -+ } - } - } - -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-pidof.patch ---- busybox-1.10.1/libbb/procps.c Sat Apr 19 05:50:33 2008 -+++ busybox-1.10.1-pidof/libbb/procps.c Sat Apr 26 01:18:32 2008 -@@ -258,7 +258,7 @@ - &sp->start_time, - &vsz, - &rss); -- if (n != 10) -+ if (n != 11) - break; - /* vsz is in bytes and we want kb */ - sp->vsz = vsz >> 10; -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-ssd.patch ---- busybox-1.10.1/debianutils/start_stop_daemon.c Sat Apr 19 05:50:30 2008 -+++ busybox-1.10.1-ssd/debianutils/start_stop_daemon.c Tue Apr 22 03:13:13 2008 -@@ -11,7 +11,6 @@ - /* NB: we have a problem here with /proc/NN/exe usage, similar to - * one fixed in killall/pidof */ - --#include - #include - - /* Override ENABLE_FEATURE_PIDFILE */ -@@ -33,6 +32,7 @@ - int user_id; - smallint quiet; - smallint signal_nr; -+ struct stat execstat; - }; - #define G (*(struct globals*)&bb_common_bufsiz1) - #define found (G.found ) -@@ -43,6 +43,7 @@ - #define user_id (G.user_id ) - #define quiet (G.quiet ) - #define signal_nr (G.signal_nr ) -+#define execstat (G.execstat ) - #define INIT_G() \ - do { \ - user_id = -1; \ -@@ -50,25 +51,21 @@ - } while (0) - - --static int pid_is_exec(pid_t pid, const char *name) -+static int pid_is_exec(pid_t pid) - { -+ struct stat st; - char buf[sizeof("/proc//exe") + sizeof(int)*3]; -- char *execbuf; -- int n; - - sprintf(buf, "/proc/%u/exe", pid); -- n = strlen(name) + 1; -- execbuf = xzalloc(n + 1); -- readlink(buf, execbuf, n); -- /* if readlink fails because link target is longer than strlen(name), -- * execbuf still contains "", and strcmp will return !0. */ -- n = strcmp(execbuf, name); -- if (ENABLE_FEATURE_CLEAN_UP) -- free(execbuf); -- return !n; /* nonzero (true) if execbuf == name */ -+ if (stat(buf, &st) < 0) -+ return 0; -+ if (st.st_dev == execstat.st_dev -+ && st.st_ino == execstat.st_ino) -+ return 1; -+ return 0; - } - --static int pid_is_user(int pid, int uid) -+static int pid_is_user(int pid) - { - struct stat sb; - char buf[sizeof("/proc/") + sizeof(int)*3]; -@@ -76,42 +73,39 @@ - sprintf(buf, "/proc/%u", pid); - if (stat(buf, &sb) != 0) - return 0; -- return (sb.st_uid == uid); -+ return (sb.st_uid == user_id); - } - --static int pid_is_cmd(pid_t pid, const char *name) -+static int pid_is_cmd(pid_t pid) - { -- char fname[sizeof("/proc//stat") + sizeof(int)*3]; -- char *buf; -- int r = 0; -+ char buf[256]; /* is it big enough? */ -+ char *p, *pe; - -- sprintf(fname, "/proc/%u/stat", pid); -- buf = xmalloc_open_read_close(fname, NULL); -- if (buf) { -- char *p = strchr(buf, '('); -- if (p) { -- char *pe = strrchr(++p, ')'); -- if (pe) { -- *pe = '\0'; -- r = !strcmp(p, name); -- } -- } -- free(buf); -- } -- return r; -+ sprintf(buf, "/proc/%u/stat", pid); -+ if (open_read_close(buf, buf, sizeof(buf) - 1) < 0) -+ return 0; -+ buf[sizeof(buf) - 1] = '\0'; /* paranoia */ -+ p = strchr(buf, '('); -+ if (!p) -+ return 0; -+ pe = strrchr(++p, ')'); -+ if (!pe) -+ return 0; -+ *pe = '\0'; -+ return !strcmp(p, cmdname); - } - - static void check(int pid) - { - struct pid_list *p; - -- if (execname && !pid_is_exec(pid, execname)) { -+ if (execname && !pid_is_exec(pid)) { - return; - } -- if (userspec && !pid_is_user(pid, user_id)) { -+ if (userspec && !pid_is_user(pid)) { - return; - } -- if (cmdname && !pid_is_cmd(pid, cmdname)) { -+ if (cmdname && !pid_is_cmd(pid)) { - return; - } - p = xmalloc(sizeof(*p)); -@@ -148,9 +142,16 @@ - procdir = xopendir("/proc"); - - pid = 0; -- while ((entry = readdir(procdir)) != NULL) { -+ while(1) { -+ errno = 0; /* clear any previous error */ -+ entry = readdir(procdir); -+// TODO: check for exact errno(s) which mean that we got stale entry -+ if (errno) /* Stale entry, process has died after opendir */ -+ continue; -+ if (!entry) /* EOF, no more entries */ -+ break; - pid = bb_strtou(entry->d_name, NULL, 10); -- if (errno) -+ if (errno) /* NaN */ - continue; - check(pid); - } -@@ -165,8 +166,6 @@ - struct pid_list *p; - int killed = 0; - -- do_procinit(); -- - if (cmdname) { - if (ENABLE_FEATURE_CLEAN_UP) what = xstrdup(cmdname); - if (!ENABLE_FEATURE_CLEAN_UP) what = cmdname; -@@ -251,7 +250,7 @@ - }; - - int start_stop_daemon_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; --int start_stop_daemon_main(int argc, char **argv) -+int start_stop_daemon_main(int argc ATTRIBUTE_UNUSED, char **argv) - { - unsigned opt; - char *signame; -@@ -293,7 +292,7 @@ - // if (retry_arg) - // retries = xatoi_u(retry_arg); - // ) -- argc -= optind; -+ //argc -= optind; - argv += optind; - - if (userspec) { -@@ -301,13 +300,15 @@ - if (errno) - user_id = xuname2uid(userspec); - } -+ if (execname) -+ xstat(execname, &execstat); - -+ do_procinit(); /* Both start and stop needs to know current processes */ -+ - if (opt & CTX_STOP) { - int i = do_stop(); - return (opt & OPT_OKNODO) ? 0 : (i <= 0); - } -- -- do_procinit(); - - if (found) { - if (!quiet) -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-taskset.patch ---- busybox-1.10.1/miscutils/taskset.c Sat Apr 19 06:03:13 2008 -+++ busybox-1.10.1-taskset/miscutils/taskset.c Fri Apr 25 18:58:53 2008 -@@ -94,8 +94,10 @@ - unsigned i; - /* Do not allow zero mask: */ - unsigned long long m = xstrtoull_range(aff, 0, 1, ULLONG_MAX); -+ enum { CNT_BIT = CPU_SETSIZE < sizeof(m)*8 ? CPU_SETSIZE : sizeof(m)*8 }; -+ - CPU_ZERO(&mask); -- for (i = 0; i < CPU_SETSIZE; i++) { -+ for (i = 0; i < CNT_BIT; i++) { - unsigned long long bit = (1ULL << i); - if (bit & m) - CPU_SET(i, &mask); -http://busybox.net/downloads/fixes-1.10.1/busybox-1.10.1-trylink.patch ---- busybox-1.10.1/scripts/trylink Sat Apr 19 05:50:27 2008 -+++ busybox-1.10.1-trylink/scripts/trylink Wed Apr 30 02:10:19 2008 -@@ -66,7 +66,7 @@ - #if defined(__GLIBC__) && !defined(__UCLIBC__) - syntax error here - #endif -- " >"$tempname" -+ " >"$tempname".c - if $CC "$tempname".c -c -o "$tempname".o >/dev/null 2>&1; then - echo "$2"; - else diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-header_tar.u --- a/busybox/stuff/busybox-1.10.1-header_tar.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ ---- busybox-1.10.1/archival/libunarchive/get_header_tar.c -+++ busybox-1.10.1/archival/libunarchive/get_header_tar.c -@@ -24,18 +24,20 @@ - }; - #endif - --/* NB: _DESTROYS_ str[len] character! */ - static unsigned long long getOctal(char *str, int len) - { - unsigned long long v; -+ char last; - /* Actually, tar header allows leading spaces also. - * Oh well, we will be liberal and skip this... - * The only downside probably is that we allow "-123" too :) - if (*str < '0' || *str > '7') - bb_error_msg_and_die("corrupted octal value in tar header"); - */ -+ last = str[len]; - str[len] = '\0'; - v = strtoull(str, &str, 8); -+ str[len] = last; - if (*str && (!ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY || *str != ' ')) - bb_error_msg_and_die("corrupted octal value in tar header"); - return v; diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-patch.u --- a/busybox/stuff/busybox-1.10.1-patch.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0-patch.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-script.u --- a/busybox/stuff/busybox-1.10.1-script.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ ---- busybox-1.10.1/util-linux/script.c -+++ busybox-1.10.1/util-linux/script.c -@@ -132,8 +132,7 @@ - count = safe_read(pty, buf, sizeof(buf)); - if (count <= 0 && errno != EAGAIN) { - /* err/eof: don't read anymore */ -- pfd[1].revents = 0; -- fd_count--; -+ break; - } - if (count > 0) { - full_write(1, buf, count); diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-stat.u --- a/busybox/stuff/busybox-1.10.1-stat.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ ---- busybox-1.10.1/coreutils/stat.c -+++ busybox-1.10.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 *); -@@ -345,6 +347,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) -@@ -632,13 +654,15 @@ - 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.10.1/include/usage.h -+++ busybox-1.10.1/include/usage.h -@@ -3585,6 +3585,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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-tar.u --- a/busybox/stuff/busybox-1.10.1-tar.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ ---- busybox-1.10.1/archival/tar.c -+++ busybox-1.10.1/archival/tar.c -@@ -787,2 +787,3 @@ - # endif -+ "wildcards\0" No_argument "\xfc" - "no-same-owner\0" No_argument "\xfd" diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-tftp.u --- a/busybox/stuff/busybox-1.10.1-tftp.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ ---- busybox-1.10.1/networking/tftp.c -+++ busybox-1.10.1/networking/tftp.c -@@ -39,7 +39,7 @@ - #define TFTP_ERROR 5 - #define TFTP_OACK 6 - --/* error codes sent over network (we use only 0, 3 and 8) */ -+/* error codes sent over network (we use only 0, 1, 3 and 8) */ - /* generic (error message is included in the packet) */ - #define ERR_UNSPEC 0 - #define ERR_NOFILE 1 -@@ -121,9 +121,8 @@ - return blksize; - } - --static char *tftp_get_blksize(char *buf, int len) -+static char *tftp_get_option(const char *option, char *buf, int len) - { --#define option "blksize" - int opt_val = 0; - int opt_found = 0; - int k; -@@ -155,7 +154,6 @@ - } - - return NULL; --#undef option - } - - #endif -@@ -165,6 +163,7 @@ - len_and_sockaddr *peer_lsa, - const char *local_file, - USE_TFTP(const char *remote_file,) -+ USE_FEATURE_TFTP_BLOCKSIZE(void *tsize,) - int blksize) - { - #if !ENABLE_TFTP -@@ -243,9 +242,9 @@ - if (NOT_LONE_DASH(local_file)) - local_fd = xopen(local_file, open_mode); - } else { -- local_fd = open_or_warn(local_file, open_mode); -+ local_fd = open(local_file, open_mode); - if (local_fd < 0) { -- /*error_pkt_reason = ERR_NOFILE/ERR_ACCESS?*/ -+ error_pkt_reason = ERR_NOFILE; - strcpy(error_pkt_str, "can't open file"); - goto send_err_pkt; - } -@@ -253,7 +252,7 @@ - - if (!ENABLE_TFTP || our_lsa) { - #if ENABLE_FEATURE_TFTP_BLOCKSIZE -- if (blksize != TFTP_BLKSIZE_DEFAULT) { -+ if (blksize != TFTP_BLKSIZE_DEFAULT || tsize) { - /* Create and send OACK packet. */ - /* For the download case, block_nr is still 1 - - * we expect 1st ACK from peer to be for (block_nr-1), -@@ -313,10 +312,20 @@ - - #if ENABLE_FEATURE_TFTP_BLOCKSIZE - add_blksize_opt: -- /* add "blksize", , blksize, */ -- strcpy(cp, "blksize"); -- cp += sizeof("blksize"); -- cp += snprintf(cp, 6, "%d", blksize) + 1; -+ if (tsize) { -+ struct stat st; -+ /* add "tsize", , size, */ -+ strcpy(cp, "tsize"); -+ cp += sizeof("tsize"); -+ fstat(local_fd,&st); -+ cp += snprintf(cp, 10, "%u", (int) st.st_size) + 1; -+ } -+ if (blksize != TFTP_BLKSIZE_DEFAULT) { -+ /* add "blksize", , blksize, */ -+ strcpy(cp, "blksize"); -+ cp += sizeof("blksize"); -+ cp += snprintf(cp, 6, "%d", blksize) + 1; -+ } - #endif - /* First packet is built, so skip packet generation */ - goto send_pkt; -@@ -450,7 +459,7 @@ - /* server seems to support options */ - char *res; - -- res = tftp_get_blksize(&rbuf[2], len - 2); -+ res = tftp_get_option("blksize", &rbuf[2], len - 2); - if (res) { - blksize = tftp_blksize_check(res, blksize); - if (blksize < 0) { -@@ -596,6 +605,7 @@ - result = tftp_protocol( - NULL /* our_lsa*/, peer_lsa, - local_file, remote_file, -+ USE_FEATURE_TFTP_BLOCKSIZE(NULL,) - blksize); - - if (result != EXIT_SUCCESS && NOT_LONE_DASH(local_file) && CMD_GET(opt)) { -@@ -631,6 +641,7 @@ - const char *error_msg; - int opt, result, opcode; - int blksize = TFTP_BLKSIZE_DEFAULT; -+ USE_FEATURE_TFTP_BLOCKSIZE(char *tsize = NULL;) - - INIT_G(); - -@@ -676,7 +687,7 @@ - char *opt_str = mode + sizeof("octet"); - int opt_len = block_buf + result - opt_str; - if (opt_len > 0) { -- res = tftp_get_blksize(opt_str, opt_len); -+ res = tftp_get_option("blksize", opt_str, opt_len); - if (res) { - blksize = tftp_blksize_check(res, 65564); - if (blksize < 0) { -@@ -685,6 +696,7 @@ - goto do_proto; - } - } -+ tsize = tftp_get_option("tsize", opt_str, opt_len); - } - } - #endif -@@ -710,6 +722,7 @@ - result = tftp_protocol( - our_lsa, peer_lsa, - local_file, USE_TFTP(NULL /*remote_file*/,) -+ USE_FEATURE_TFTP_BLOCKSIZE(tsize,) - blksize - ); - diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-unlzma.u --- a/busybox/stuff/busybox-1.10.1-unlzma.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ ---- busybox-1.10.1/archival/libunarchive/decompress_unlzma.c -+++ busybox-1.10.1/archival/libunarchive/decompress_unlzma.c -@@ -491,10 +491,16 @@ - - if (full_write(dst_fd, buffer, buffer_pos) != buffer_pos) { - bad: -+ len = -1; -+ } -+ else { -+ USE_DESKTOP(total_written += buffer_pos;) -+ len = USE_DESKTOP(total_written) + 0; -+ } -+ if (ENABLE_FEATURE_CLEAN_UP) { - rc_free(rc); -- return -1; -+ free(buffer); -+ free(p); - } -- rc_free(rc); -- USE_DESKTOP(total_written += buffer_pos;) -- return USE_DESKTOP(total_written) + 0; -+ return len; - } diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1-vcsa2txt.u --- a/busybox/stuff/busybox-1.10.1-vcsa2txt.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0-vcsa2txt.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.1.config --- a/busybox/stuff/busybox-1.10.1.config Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.0.config \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-cpio-mkdir.u --- a/busybox/stuff/busybox-1.10.3-cpio-mkdir.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-cpio-mkdir.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-cpio-mtime.u --- a/busybox/stuff/busybox-1.10.3-cpio-mtime.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-cpio-mtime.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-cpio.u --- a/busybox/stuff/busybox-1.10.3-cpio.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -diff -purN busybox-1.10.0/archival/Config.in busybox/archival/Config.in ---- busybox-1.10.0/archival/Config.in 2008-03-29 21:47:37.000000000 +0100 -+++ busybox-1.10.0/archival/Config.in 2008-03-29 21:47:37.000000000 +0100 -@@ -78,6 +78,14 @@ config CPIO - Unless you have a specific application which requires cpio, you should - probably say N here. - -+config FEATURE_CPIO_O -+ bool "Support for archive creation" -+ default n -+ depends on CPIO -+ help -+ This implementation of cpio can create cpio archives in the "newc" -+ format only. -+ - config DPKG - bool "dpkg" - default n -diff -purN busybox-1.10.0/archival/cpio.c busybox/archival/cpio.c ---- busybox-1.10.0/archival/cpio.c 2008-03-29 21:47:55.000000000 +0100 -+++ busybox-1.10.0/archival/cpio.c 2008-03-29 21:47:55.000000000 +0100 -@@ -21,12 +21,146 @@ - #define CPIO_OPT_FILE 0x10 - #define CPIO_OPT_CREATE_LEADING_DIR 0x20 - #define CPIO_OPT_PRESERVE_MTIME 0x40 -+#define CPIO_OPT_CREATE 0x80 -+#define CPIO_OPT_FORMAT 0x100 -+ -+#if ENABLE_FEATURE_CPIO_O -+static void cpio_pad(off_t *size, int n) -+{ -+ int i; -+ for (*size += i = (-*size) & n; --i >= 0; bb_putchar(0)); -+} -+ -+static void cpio_o(void) -+{ -+ struct name_s { -+ struct name_s *next; -+ char name[0]; -+ }; -+ struct inodes_s { -+ struct name_s *names; -+ struct inodes_s *next; -+ struct stat st; -+ } *links = NULL; -+ off_t bytes = 0; // output bytes count -+#if CONFIG_FEATURE_COPYBUF_KB < 1 -+ char buf[1024]; -+#else -+ char buf[CONFIG_FEATURE_COPYBUF_KB * 1024]; -+#endif -+ -+ while (1) { -+ const char *name = "TRAILER!!!"; -+ char *line = xmalloc_getline(stdin); -+ // allocate inode struct each loop to avoid struct stat copy -+ struct inodes_s *inode = xzalloc(sizeof(*inode)); // die if fail -+ off_t size; -+ -+ inode->st.st_nlink++; // =1 -+ if (line) { -+ /* Strip leading `./' from the filename. */ -+ for (name = line; name[0] == '.' && name[1] == '/';) { -+ while (*++name == '/'); -+ } -+ if (!*name) goto free_and_continue; // line empty -+ if (lstat(name, &inode->st)) { -+ abort_cpio_o: -+ bb_perror_msg_and_die(name); -+ } -+ if (!S_ISLNK(inode->st.st_mode) && !S_ISREG(inode->st.st_mode)) -+ inode->st.st_size = 0; -+ } -+ // hard links will are stored and will be processed later -+ if (!S_ISDIR(inode->st.st_mode) && !S_ISLNK(inode->st.st_mode) && inode->st.st_nlink > 1) { -+ struct name_s *n; -+ struct inodes_s *l; -+ -+ for (l = links; l && l->st.st_ino != inode->st.st_ino; l = l->next); -+ if (l == NULL) { // not found: new hard links set -+ l = inode; // l->names = NULL; l->st = inode->st -+ l->next = links; -+ links = l; -+ } -+ n = xmalloc(sizeof(*n) + strlen(name) + 1); // die if fail -+ strcpy(n->name, name); -+ n->next = l->names; -+ l->names = n; // will not free inode if l == inode -+ goto free_and_continue; -+ } -+ size = inode->st.st_size; -+ // no more files ? process hard links -+ if (!line && links) { -+ struct name_s *n; -+ -+ free(inode); // trailer pseudo inode -+ inode = links; -+ n = links->names; -+ name = line = xstrdup(n->name); // line will free *name memory -+ links->names = n->next; -+ if (links->names == NULL) { // inode will free *links memory -+ size = links->st.st_size; -+ links = links->next; -+ } -+ free(n); -+ } -+ bytes += printf("070701%08lx%08lx%08lx%08lx%08lx%08lx%08lx" -+ "%08lx%08lx%08lx%08lx%08lx%08lx%s%c", -+ (unsigned long) inode->st.st_ino, -+ (unsigned long) inode->st.st_mode, -+ (unsigned long) inode->st.st_uid, -+ (unsigned long) inode->st.st_gid, -+ (unsigned long) inode->st.st_nlink, -+ (unsigned long) inode->st.st_mtime, -+ (unsigned long) size, -+ (unsigned long) major(inode->st.st_dev), -+ (unsigned long) minor(inode->st.st_dev), -+ (unsigned long) major(inode->st.st_rdev), -+ (unsigned long) minor(inode->st.st_rdev), -+ strlen(name) + 1UL, 0UL, name, 0); -+ cpio_pad(&bytes, (line) ? 4-1 : 512-1); -+ if (size) { -+ if (S_ISLNK(inode->st.st_mode)) { -+ char *lpath = xmalloc_readlink_or_warn(name); -+ -+ if (!lpath) goto abort_cpio_o; -+ bytes += printf("%s", lpath); -+ free(lpath); -+ } -+ if (S_ISREG(inode->st.st_mode)) { -+ int fd = open_or_warn(name, O_RDONLY); -+ -+ while (1) { -+ int len = full_read(fd, buf, sizeof(buf)); -+ if (len < 0) goto abort_cpio_o; -+ if (len == 0) break; -+ bytes += len; -+ fwrite(buf, 1, len, stdout); -+ } -+ close(fd); -+ } -+ cpio_pad(&bytes, 4-1); -+ } -+ -+ if (!line) { -+ fputc('\n', stderr); // GNU cpio do that... -+ return; // was trailer -+ } -+ -+ free_and_continue: -+ if (!inode->names) free(inode); -+ free(line); -+ } -+} -+#endif - - int cpio_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int cpio_main(int argc, char **argv) - { - archive_handle_t *archive_handle; - char *cpio_filename = NULL; -+#if ENABLE_FEATURE_CPIO_O -+ const char *cpio_fmt = ""; -+#endif - unsigned opt; - - /* Initialise */ -@@ -35,10 +169,26 @@ int cpio_main(int argc, char **argv) - archive_handle->seek = seek_by_read; - archive_handle->flags = ARCHIVE_EXTRACT_NEWER | ARCHIVE_PRESERVE_DATE; - -+#if ENABLE_FEATURE_CPIO_O -+ opt = getopt32(argv, "ituvF:dmoH:", &cpio_filename,&cpio_fmt); -+ -+ if (opt & CPIO_OPT_CREATE) { -+ if (*cpio_fmt != 'n') -+ goto cpio_show_usage; -+ if (cpio_filename) { -+ fclose(stdout); -+ stdout = fopen(cpio_filename,"w"); -+ } -+ cpio_o(); -+ return EXIT_SUCCESS; -+ } -+#else - opt = getopt32(argv, "ituvF:dm", &cpio_filename); -+#endif - - /* One of either extract or test options must be given */ - if ((opt & (CPIO_OPT_TEST | CPIO_OPT_EXTRACT)) == 0) { -+ cpio_show_usage: - bb_show_usage(); - } - -diff -purN busybox-1.10.0/include/usage.h busybox/include/usage.h ---- busybox-1.10.0/include/usage.h 2008-03-29 21:48:22.000000000 +0100 -+++ busybox-1.10.0/include/usage.h 2008-03-29 21:48:22.000000000 +0100 -@@ -496,13 +496,19 @@ - "\n -l,-s Create (sym)links" \ - - #define cpio_trivial_usage \ -- "-[dimtuv][F cpiofile]" -+ "-[dim" USE_FEATURE_CPIO_O("o") "tuv][F cpiofile]" \ -+ USE_FEATURE_CPIO_O( "[H newc]" ) - #define cpio_full_usage \ -- "Extract or list files from a cpio archive\n" \ -+ "Extract or list files from a cpio archive" \ -+ USE_FEATURE_CPIO_O( ", or create a cpio archive" ) "\n" \ - "Main operation mode:" \ - "\n d Make leading directories" \ - "\n i Extract" \ - "\n m Preserve mtime" \ -+ USE_FEATURE_CPIO_O( \ -+ "\n o Create" \ -+ "\n H newc Define format" \ -+ ) \ - "\n t List" \ - "\n v Verbose" \ - "\n u Unconditional overwrite" \ diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-dhcpc.u --- a/busybox/stuff/busybox-1.10.3-dhcpc.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-dhcpc.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-header_tar.u --- a/busybox/stuff/busybox-1.10.3-header_tar.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-header_tar.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-patch.u --- a/busybox/stuff/busybox-1.10.3-patch.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,412 +0,0 @@ ---- busybox-1.10.3/editors/patch.c 2008-03-24 15:46:20.000000000 +0100 -+++ busybox-1.10.3/editors/patch.c 2008-03-24 15:46:20.000000000 +0100 -@@ -19,15 +19,11 @@ - * - Reject file isnt saved - */ - --#include -- - #include "libbb.h" - --static unsigned int copy_lines(FILE *src_stream, FILE *dest_stream, const unsigned int lines_count) -+static unsigned copy_lines(FILE *src_stream, FILE *dest_stream, unsigned lines_count) - { -- unsigned int i = 0; -- -- while (src_stream && (i < lines_count)) { -+ while (src_stream && lines_count) { - char *line; - line = xmalloc_fgets(src_stream); - if (line == NULL) { -@@ -37,60 +33,70 @@ - bb_perror_msg_and_die("error writing to new file"); - } - free(line); -- -- i++; -+ lines_count--; - } -- return i; -+ return lines_count; - } - - /* If patch_level is -1 it will remove all directory names - * char *line must be greater than 4 chars - * returns NULL if the file doesnt exist or error - * returns malloc'ed filename -+ * NB: frees 1st argument! - */ - --static char *extract_filename(char *line, int patch_level) -+static char *extract_filename(char *line, unsigned patch_level, const char *pat) - { -- char *temp, *filename_start_ptr = line + 4; -- int i; -+ char *temp = NULL, *filename_start_ptr = line + 4; - -- /* Terminate string at end of source filename */ -- temp = strchrnul(filename_start_ptr, '\t'); -- *temp = '\0'; -- -- /* Skip over (patch_level) number of leading directories */ -- if (patch_level == -1) -- patch_level = INT_MAX; -- for (i = 0; i < patch_level; i++) { -- temp = strchr(filename_start_ptr, '/'); -- if (!temp) -- break; -- filename_start_ptr = temp + 1; -+ if (strncmp(line, pat, 4) == 0) { -+ /* Terminate string at end of source filename */ -+ line[strcspn(line,"\t\n\r")] = '\0'; -+ -+ /* Skip over (patch_level) number of leading directories */ -+ while (patch_level--) { -+ temp = strchr(filename_start_ptr, '/'); -+ if (!temp) -+ break; -+ filename_start_ptr = temp + 1; -+ } -+ temp = xstrdup(filename_start_ptr); - } -- -- return xstrdup(filename_start_ptr); -+ free(line); -+ return temp; - } - - int patch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int patch_main(int argc ATTRIBUTE_UNUSED, char **argv) - { -- int patch_level = -1; -- char *patch_line; -- int ret; -- FILE *patch_file = NULL; - struct stat saved_stat; -- -+ char *patch_line; -+ FILE *patch_file; -+ int patch_level; -+ int ret = 0; -+#define ENABLE_FEATURE_PATCH_REVERSE 1 -+#if ENABLE_FEATURE_PATCH_REVERSE -+ char minus = '-'; -+ char plus = '+'; -+#else -+ const char minus = '-'; -+ const char plus = '+'; -+#endif -+ -+ xfunc_error_retval = 2; - { -- char *p, *i; -- ret = getopt32(argv, "p:i:", &p, &i); -- if (ret & 1) -- patch_level = xatol_range(p, -1, USHRT_MAX); -- if (ret & 2) { -- patch_file = xfopen(i, "r"); -- } else { -- patch_file = stdin; -- } -- ret = 0; -+ const char *p = "-1"; -+ const char *i = "-"; /* compat */ -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (getopt32(argv, "p:i:R", &p, &i) & 4) { -+ minus = '+'; -+ plus = '-'; -+ } -+#else -+ getopt32(argv, "p:i:", &p, &i); -+#endif -+ patch_level = xatoi(p); /* can be negative! */ -+ patch_file = xfopen_stdin(i); - } - - patch_line = xmalloc_getline(patch_file); -@@ -100,38 +106,38 @@ - char *original_filename; - char *new_filename; - char *backup_filename; -- unsigned int src_cur_line = 1; -- unsigned int dest_cur_line = 0; -- unsigned int dest_beg_line; -- unsigned int bad_hunk_count = 0; -- unsigned int hunk_count = 0; -- char copy_trailing_lines_flag = 0; -+ unsigned src_cur_line = 1; -+ unsigned dest_cur_line = 0; -+ unsigned dest_beg_line; -+ unsigned bad_hunk_count = 0; -+ unsigned hunk_count = 0; -+ smallint copy_trailing_lines_flag = 0; - - /* Skip everything upto the "---" marker - * No need to parse the lines "Only in ", and "diff " - */ -- while (patch_line && strncmp(patch_line, "--- ", 4) != 0) { -- free(patch_line); -+ do { -+ /* Extract the filename used before the patch was generated */ -+ original_filename = extract_filename(patch_line, patch_level, "--- "); - patch_line = xmalloc_getline(patch_file); -- } -- /* FIXME: patch_line NULL check?? */ -+ if (!patch_line) goto quit; -+ } while (!original_filename); - -- /* Extract the filename used before the patch was generated */ -- original_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -- -- patch_line = xmalloc_getline(patch_file); -- /* FIXME: NULL check?? */ -- if (strncmp(patch_line, "+++ ", 4) != 0) { -- ret = 2; -- bb_error_msg("invalid patch"); -- continue; -+ new_filename = extract_filename(patch_line, patch_level, "+++ "); -+ if (!new_filename) { -+ bb_error_msg_and_die("invalid patch"); -+ } -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (plus != '+') { -+ /* reverse patch */ -+ char *tmp = original_filename; -+ original_filename = new_filename; -+ new_filename = tmp; - } -- new_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -+#endif - - /* Get access rights from the file to be patched, -1 file does not exist */ -- if (stat(new_filename, &saved_stat)) { -+ if (stat(new_filename, &saved_stat) != 0) { - char *line_ptr; - /* Create leading directories */ - line_ptr = strrchr(new_filename, '/'); -@@ -140,132 +146,137 @@ - bb_make_directory(new_filename, -1, FILEUTILS_RECUR); - *line_ptr = '/'; - } -- dst_stream = xfopen(new_filename, "w+"); - backup_filename = NULL; -+ saved_stat.st_mode = 0644; - } else { -- backup_filename = xmalloc(strlen(new_filename) + 6); -- strcpy(backup_filename, new_filename); -- strcat(backup_filename, ".orig"); -+ backup_filename = xasprintf("%s.orig", new_filename); - xrename(new_filename, backup_filename); -- dst_stream = xfopen(new_filename, "w"); -- fchmod(fileno(dst_stream), saved_stat.st_mode); - } -- -- if ((backup_filename == NULL) || stat(original_filename, &saved_stat)) { -- src_stream = NULL; -- } else { -- if (strcmp(original_filename, new_filename) == 0) { -- src_stream = xfopen(backup_filename, "r"); -- } else { -- src_stream = xfopen(original_filename, "r"); -- } -+ dst_stream = xfopen(new_filename, "w"); -+ fchmod(fileno(dst_stream), saved_stat.st_mode); -+ src_stream = NULL; -+ -+ if (backup_filename && !stat(original_filename, &saved_stat)) { -+ src_stream = xfopen((strcmp(original_filename, new_filename)) ? -+ original_filename : backup_filename, "r"); - } - - printf("patching file %s\n", new_filename); - -- /* Handle each hunk */ -+ /* Handle all hunks for this file */ - patch_line = xmalloc_fgets(patch_file); - while (patch_line) { -- unsigned int count; -- unsigned int src_beg_line; -- unsigned int unused; -- unsigned int hunk_offset_start = 0; -- int hunk_error = 0; -- -- /* This bit should be improved */ -- if ((sscanf(patch_line, "@@ -%d,%d +%d,%d @@", &src_beg_line, &unused, &dest_beg_line, &unused) != 4) && -- (sscanf(patch_line, "@@ -%d,%d +%d @@", &src_beg_line, &unused, &dest_beg_line) != 3) && -- (sscanf(patch_line, "@@ -%d +%d,%d @@", &src_beg_line, &dest_beg_line, &unused) != 3)) { -+ unsigned count; -+ unsigned src_beg_line; -+ unsigned hunk_offset_start; -+ unsigned src_last_line = 1; -+#if ENABLE_FEATURE_PATCH_REVERSE -+ unsigned dst_last_line = 1; -+ -+ if ((sscanf(patch_line, "@@ -%d,%d +%d,%d", &src_beg_line, &src_last_line, &dest_beg_line, &dst_last_line) < 3) && -+ (sscanf(patch_line, "@@ -%d +%d,%d", &src_beg_line, &dest_beg_line, &dst_last_line) < 2)) { - /* No more hunks for this file */ - break; - } -- free(patch_line); -+ if (plus != '+') { -+ /* reverse patch */ -+ unsigned tmp = src_last_line; -+ src_last_line = dst_last_line; -+ dst_last_line = tmp; -+ tmp = src_beg_line; -+ src_beg_line = dest_beg_line; -+ dest_beg_line = tmp; -+ } -+#else -+ -+ if ((sscanf(patch_line, "@@ -%d,%d +%d", &src_beg_line, &src_last_line, &dest_beg_line) != 3) && -+ (sscanf(patch_line, "@@ -%d +%d", &src_beg_line, &dest_beg_line) != 2)) { -+ /* No more hunks for this file */ -+ break; -+ } -+#endif - hunk_count++; - - if (src_beg_line && dest_beg_line) { - /* Copy unmodified lines upto start of hunk */ -- /* src_beg_line will be 0 if its a new file */ -+ /* src_beg_line will be 0 if it's a new file */ - count = src_beg_line - src_cur_line; -- if (copy_lines(src_stream, dst_stream, count) != count) { -+ if (copy_lines(src_stream, dst_stream, count)) { - bb_error_msg_and_die("bad src file"); - } - src_cur_line += count; - dest_cur_line += count; - copy_trailing_lines_flag = 1; - } -- hunk_offset_start = src_cur_line; -- -- while ((patch_line = xmalloc_fgets(patch_file)) != NULL) { -- if ((*patch_line == '-') || (*patch_line == ' ')) { -+ src_last_line += hunk_offset_start = src_cur_line; -+#if ENABLE_FEATURE_PATCH_REVERSE -+ dst_last_line += dest_cur_line; -+#endif -+ while (1) { -+ free(patch_line); -+ patch_line = xmalloc_fgets(patch_file); -+ if (patch_line == NULL) break; -+ if ((*patch_line == minus) || (*patch_line == ' ')) { - char *src_line = NULL; -+ if (src_cur_line == src_last_line) break; - if (src_stream) { - src_line = xmalloc_fgets(src_stream); -- if (!src_line) { -- hunk_error++; -- break; -- } else { -+ if (src_line) { -+ int diff = strcmp(src_line, patch_line + 1); - src_cur_line++; -+ free(src_line); -+ if (diff) src_line = NULL; - } -- if (strcmp(src_line, patch_line + 1) != 0) { -- bb_error_msg("hunk #%d FAILED at %d", hunk_count, hunk_offset_start); -- hunk_error++; -- free(patch_line); -- /* Probably need to find next hunk, etc... */ -- /* but for now we just bail out */ -- patch_line = NULL; -- break; -- } -- free(src_line); - } -- if (*patch_line == ' ') { -- fputs(patch_line + 1, dst_stream); -- dest_cur_line++; -+ if (!src_line) { -+ bb_error_msg("hunk #%u FAILED at %u", hunk_count, hunk_offset_start); -+ bad_hunk_count++; -+ break; - } -- } else if (*patch_line == '+') { -- fputs(patch_line + 1, dst_stream); -- dest_cur_line++; -- } else { -+ if (*patch_line != ' ') { -+ continue; -+ } -+ } else if (*patch_line != plus) { - break; - } -- free(patch_line); -- } -- if (hunk_error) { -- bad_hunk_count++; -- } -- } -+#if ENABLE_FEATURE_PATCH_REVERSE -+ if (dest_cur_line == dst_last_line) break; -+#endif -+ fputs(patch_line + 1, dst_stream); -+ dest_cur_line++; -+ } /* end of while loop handling one hunk */ -+ } /* end of while loop handling one file */ - - /* Cleanup last patched file */ - if (copy_trailing_lines_flag) { -- copy_lines(src_stream, dst_stream, -1); -+ copy_lines(src_stream, dst_stream, (unsigned)(-1)); - } - if (src_stream) { - fclose(src_stream); - } -- if (dst_stream) { -- fclose(dst_stream); -- } -+ fclose(dst_stream); - if (bad_hunk_count) { -- if (!ret) { -- ret = 1; -- } -- bb_error_msg("%d out of %d hunk FAILED", bad_hunk_count, hunk_count); -+ ret = 1; -+ bb_error_msg("%u out of %u hunk FAILED", bad_hunk_count, hunk_count); - } else { - /* It worked, we can remove the backup */ - if (backup_filename) { - unlink(backup_filename); -+ free(backup_filename); - } - if ((dest_cur_line == 0) || (dest_beg_line == 0)) { - /* The new patched file is empty, remove it */ - xunlink(new_filename); -- if (strcmp(new_filename, original_filename) != 0) -- xunlink(original_filename); -+ /* original_filename and new_filename may be the same file */ -+ unlink(original_filename); - } - } -- } -+ } /* end of "while there are patch lines" */ -+quit: - - /* 0 = SUCCESS - * 1 = Some hunks failed -- * 2 = More serious problems -+ * 2 = More serious problems (exited earlier) - */ - return ret; - } - ---- busybox-1.10.3/include/usage.h 2008-03-24 16:20:43.000000000 +0100 -+++ busybox-1.10.3/include/usage.h 2008-03-24 16:22:06.000000000 +0100 -@@ -2837,8 +2837,9 @@ - ) - - #define patch_trivial_usage \ -- "[-p NUM] [-i DIFF]" -+ "[-R] [-p NUM] [-i DIFF]" - #define patch_full_usage \ -+ " -R Reverse patch\n" \ - " -p NUM Strip NUM leading components from file names" \ - "\n -i DIFF Read DIFF instead of stdin" \ - diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-script.u --- a/busybox/stuff/busybox-1.10.3-script.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-script.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-stat.u --- a/busybox/stuff/busybox-1.10.3-stat.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ ---- busybox-1.10.1/coreutils/stat.c -+++ busybox-1.10.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 *); -@@ -345,6 +347,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) -@@ -632,13 +654,15 @@ - 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.10.1/include/usage.h -+++ busybox-1.10.1/include/usage.h -@@ -3589,6 +3589,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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-syslogd.u --- a/busybox/stuff/busybox-1.10.3-syslogd.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- busybox-1.10.3/sysklogd/syslogd.c -+++ busybox-1.10.3/sysklogd/syslogd.c -@@ -41,7 +41,7 @@ - #undef SYSLOGD_MARK - - enum { -- MAX_READ = 256, -+ MAX_READ = 1024, - DNS_WAIT_SEC = 2 * 60, - }; - diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-tar.u --- a/busybox/stuff/busybox-1.10.3-tar.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-tar.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-tftp.u --- a/busybox/stuff/busybox-1.10.3-tftp.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-tftp.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-unlzma.u --- a/busybox/stuff/busybox-1.10.3-unlzma.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.1-unlzma.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3-vcsa2txt.u --- a/busybox/stuff/busybox-1.10.3-vcsa2txt.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ ---- busybox-1.10.3/include/applets.h Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.3/include/applets.h Sat Mar 22 02:31:50 2008 -@@ -382,6 +382,7 @@ - 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.10.3/include/usage.h Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.3/include/usage.h Sat Mar 22 02:31:50 2008 -@@ -4318,6 +4318,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 \ - ---- busybox-1.10.3/miscutils/Config.in Sat Mar 22 02:31:50 2008 -+++ busybox-1.10.3/miscutils/Config.in Sat Mar 22 02:31:50 2008 -@@ -461,6 +461,12 @@ - only height, or both, in any order. It also does not complain on 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.10.3/util-linux/Kbuild Sat Mar 22 02:31:53 2008 -+++ busybox-1.10.3/util-linux/Kbuild Sat Mar 22 02:31:53 2008 -@@ -33,3 +33,4 @@ - lib-$(CONFIG_SWAPONOFF) += swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) += switch_root.o - lib-$(CONFIG_UMOUNT) += umount.o -+lib-$(CONFIG_VCSA2TXT) += vcsa2txt.o - ---- busybox-1.10.3/util-linux/vcsa2txt.c Sat Mar 22 19:40:15 2008 -+++ busybox-1.10.3/util-linux/vcsa2txt.c Sat Mar 22 19:40:15 2008 -@@ -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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.10.3.config --- a/busybox/stuff/busybox-1.10.3.config Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,831 +0,0 @@ -# -# Automatically generated make config: don't edit -# Busybox version: 1.10.3 -# Sat Jul 12 20:22:54 2008 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -# CONFIG_NITPICK is not set -CONFIG_DESKTOP=y -# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -# 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_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 - -# -# Debugging Options -# -# CONFIG_DEBUG 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 - -# -# 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 - -# -# Applets -# - -# -# Archival Utilities -# -# CONFIG_AR is not set -# 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_FEATURE_GUNZIP_UNCOMPRESS=y -CONFIG_GZIP=y -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_FEATURE_RPM_BZ2=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -CONFIG_FEATURE_TAR_GZIP=y -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -CONFIG_FEATURE_TAR_COMPRESS=y -CONFIG_FEATURE_TAR_AUTODETECT=y -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 - -# -# Common options for cpio and tar -# -# CONFIG_FEATURE_UNARCHIVE_TAPE is not set - -# -# Common options for dpkg and dpkg_deb -# -CONFIG_FEATURE_DEB_TAR_GZ=y -CONFIG_FEATURE_DEB_TAR_BZ2=y -CONFIG_FEATURE_DEB_TAR_LZMA=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_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 is not set -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 is not set -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_SETKEYCODES=y -# CONFIG_SETLOGCONS 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_SHADOW is not set -# CONFIG_USE_BB_PWD_GRP is not set -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_INSMOD 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_RMMOD is not set -# CONFIG_LSMOD is not set -# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set -# CONFIG_MODPROBE is not set -# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set -# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_2_6_MODULES is not set -# 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_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 is not set -# 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 is not set -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_READPROFILE=y -# CONFIG_RTCWAKE is not set -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=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_LAST=y -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_MICROCOM=y -CONFIG_MOUNTPOINT=y -# CONFIG_MT is not set -# CONFIG_RAIDAUTORUN is not set -# CONFIG_READAHEAD is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -CONFIG_SCRIPT=y -CONFIG_STRINGS=y -CONFIG_SETSID=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_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 is not set -# CONFIG_FEATURE_IP_ADDRESS is not set -# CONFIG_FEATURE_IP_LINK is not set -# CONFIG_FEATURE_IP_ROUTE is not set -# CONFIG_FEATURE_IP_TUNNEL is not set -# CONFIG_FEATURE_IP_RULE is not set -# CONFIG_FEATURE_IP_SHORT_FORMS is not set -# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -# CONFIG_IPADDR is not set -# CONFIG_IPLINK is not set -# CONFIG_IPROUTE is not set -# CONFIG_IPTUNNEL is not set -# CONFIG_IPRULE is not set -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_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_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_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_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_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_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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0-cpio-mkdir.u --- a/busybox/stuff/busybox-1.11.0-cpio-mkdir.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -busybox-1.10.3-cpio-mkdir.u \ No newline at end of file diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0-cpio-mtime.u --- a/busybox/stuff/busybox-1.11.0-cpio-mtime.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ ---- busybox-1.11.0/archival/cpio.c -+++ busybox-1.11.0/archival/cpio.c -@@ -204,7 +204,7 @@ - archive_handle = init_handle(); - archive_handle->src_fd = STDIN_FILENO; - archive_handle->seek = seek_by_read; -- archive_handle->flags = ARCHIVE_EXTRACT_NEWER | ARCHIVE_PRESERVE_DATE; -+ archive_handle->flags = ARCHIVE_EXTRACT_NEWER; - - #if ENABLE_FEATURE_CPIO_O - opt = getopt32(argv, "ituvF:dmoH:", &cpio_filename, &cpio_fmt); -@@ -258,6 +258,9 @@ - if (opt & CPIO_OPT_CREATE_LEADING_DIR) { - archive_handle->flags |= ARCHIVE_CREATE_LEADING_DIRS; - } -+ if (opt & CPIO_OPT_PRESERVE_MTIME) { -+ archive_handle->flags |= ARCHIVE_PRESERVE_DATE; -+ } - - while (*argv) { - archive_handle->filter = filter_accept_list; diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0-stat.u --- a/busybox/stuff/busybox-1.11.0-stat.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -Add stat -m ---- busybox-1.11.0/coreutils/stat.c -+++ busybox-1.11.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 @@ - - /* 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 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.11.0/include/usage.h -+++ busybox-1.11.0/include/usage.h -@@ -3711,6 +3711,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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0-unlzma.u --- a/busybox/stuff/busybox-1.11.0-unlzma.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ ---- busybox-1.11.0/archival/libunarchive/decompress_unlzma.c -+++ busybox-1.11.0/archival/libunarchive/decompress_unlzma.c -@@ -78,7 +78,7 @@ - } - - /* Called once */ --static ALWAYS_INLINE void rc_free(rc_t * rc) -+static ALWAYS_INLINE void rc_free(void * rc) - { - if (ENABLE_FEATURE_CLEAN_UP) - free(rc); -@@ -491,10 +491,14 @@ - - if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) { - bad: -- rc_free(rc); -- return -1; -+ len = -1; -+ } -+ else { -+ USE_DESKTOP(total_written += buffer_pos;) -+ len = USE_DESKTOP(total_written) + 0; - } - rc_free(rc); -- USE_DESKTOP(total_written += buffer_pos;) -- return USE_DESKTOP(total_written) + 0; -+ rc_free(buffer); -+ rc_free(p); -+ return len; - } diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0-vcsa2txt.u --- a/busybox/stuff/busybox-1.11.0-vcsa2txt.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ ---- busybox-1.11.0/include/applets.h -+++ busybox-1.11.0/include/applets.h -@@ -380,6 +380,7 @@ - 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.11.0/include/usage.h -+++ busybox-1.11.0/include/usage.h -@@ -4455,6 +4455,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.11.0/miscutils/Config.in -+++ busybox-1.11.0/miscutils/Config.in -@@ -506,6 +506,12 @@ - only height, or both, in any order. It also does not complain on 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.11.0/util-linux/Kbuild -+++ busybox-1.11.0/util-linux/Kbuild -@@ -33,3 +33,4 @@ - lib-$(CONFIG_SWAPONOFF) += swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) += switch_root.o - lib-$(CONFIG_UMOUNT) += umount.o -+lib-$(CONFIG_VCSA2TXT) += vcsa2txt.o - ---- busybox-1.11.0/util-linux/vcsa2txt.c -+++ busybox-1.11.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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.11.0.config --- a/busybox/stuff/busybox-1.11.0.config Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,853 +0,0 @@ -# TODO: add RESET CLEAR RMMOD LSMOD MODPROBE DEPMOD (+gz/lzma) -# -# Automatically generated make config: don't edit -# Busybox version: 1.11.0 -# Thu Jun 26 11:34:13 2008 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -CONFIG_DESKTOP=y -# 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 - -# -# 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_AR is not set -# 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_FEATURE_GUNZIP_UNCOMPRESS=y -CONFIG_GZIP=y -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_FEATURE_RPM_BZ2=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -CONFIG_FEATURE_TAR_GZIP=y -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -CONFIG_FEATURE_TAR_COMPRESS=y -CONFIG_FEATURE_TAR_AUTODETECT=y -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 - -# -# Common options for cpio and tar -# - -# -# Common options for dpkg and dpkg_deb -# -CONFIG_FEATURE_DEB_TAR_GZ=y -CONFIG_FEATURE_DEB_TAR_BZ2=y -CONFIG_FEATURE_DEB_TAR_LZMA=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_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 is not set -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_SETKEYCODES=y -# CONFIG_SETLOGCONS 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=y -CONFIG_FSCK=y -CONFIG_LSATTR=y - -# -# Linux Module Utilities -# -# CONFIG_DEPMOD is not set -# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set -# CONFIG_FEATURE_DEPMOD_ALIAS is not set -# CONFIG_INSMOD 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_RMMOD is not set -# CONFIG_LSMOD is not set -# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set -# CONFIG_MODPROBE is not set -# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set -# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set -# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_2_6_MODULES is not set -CONFIG_DEFAULT_MODULES_DIR="" -CONFIG_DEFAULT_DEPMOD_FILE="" -# 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=y -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 is not set -# CONFIG_FEATURE_VOLUMEID_JFS is not set -# CONFIG_FEATURE_VOLUMEID_XFS is not set -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 is not set -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_READPROFILE=y -# CONFIG_RTCWAKE is not set -CONFIG_SCRIPT=y -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=y -# CONFIG_FEATURE_SWAPON_PRI is not set -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_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 is not set -# 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 is not set -# CONFIG_FEATURE_IP_ADDRESS is not set -# CONFIG_FEATURE_IP_LINK is not set -# CONFIG_FEATURE_IP_ROUTE is not set -# CONFIG_FEATURE_IP_TUNNEL is not set -# CONFIG_FEATURE_IP_RULE is not set -# CONFIG_FEATURE_IP_SHORT_FORMS is not set -# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -# CONFIG_IPADDR is not set -# CONFIG_IPLINK is not set -# CONFIG_IPROUTE is not set -# CONFIG_IPTUNNEL is not set -# CONFIG_IPRULE is not set -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_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_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_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 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.12.0-su.u --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/busybox/stuff/busybox-1.12.0-su.u Wed May 27 18:15:16 2009 +0200 @@ -0,0 +1,11 @@ +--- busybox-1.12.0/libbb/setup_environment.c ++++ busybox-1.12.0/libbb/setup_environment.c +@@ -59,7 +59,7 @@ + else if (change_env) { + /* Set HOME, SHELL, and if not becoming a super-user, + USER and LOGNAME. */ +- if (pw->pw_uid) { ++ if (!pw->pw_uid) { + shortcut: + xsetenv("USER", pw->pw_name); + xsetenv("LOGNAME", pw->pw_name); diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.12.0.config --- a/busybox/stuff/busybox-1.12.0.config Wed May 27 11:52:33 2009 +0200 +++ b/busybox/stuff/busybox-1.12.0.config Wed May 27 18:15:16 2009 +0200 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.12.0 -# Thu Aug 21 15:12:51 2008 +# Wed May 27 18:07:33 2009 # CONFIG_HAVE_DOT_CONFIG=y @@ -684,7 +684,7 @@ # CONFIG_NC_EXTRA is not set CONFIG_NETSTAT=y CONFIG_FEATURE_NETSTAT_WIDE=y -# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_FEATURE_NETSTAT_PRG=y CONFIG_NSLOOKUP=y CONFIG_PING=y CONFIG_PING6=y diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-df.u --- a/busybox/stuff/busybox-1.7.3-df.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ ---- busybox-1.7.3/coreutils/df.c -+++ busybox-1.7.3/coreutils/df.c -@@ -47,7 +47,7 @@ - - #if ENABLE_FEATURE_HUMAN_READABLE - opt_complementary = "h-km:k-hm:m-hk"; -- opt = getopt32(argv, "hmk"); -+ opt = getopt32(argv, "hmik"); - if (opt & 1) { - df_disp_hr = 0; - disp_units_hdr = " Size"; -@@ -56,9 +56,14 @@ - df_disp_hr = 1024*1024; - disp_units_hdr = "1M-blocks"; - } -+#define OPT_INODE 4 - #else -+#define OPT_INODE 1 - opt = getopt32(argv, "k"); - #endif -+ if (opt & OPT_INODE) { -+ disp_units_hdr = " Inodes"; -+ } - - printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n", - "", disp_units_hdr); -@@ -105,6 +110,15 @@ - } - - if ((s.f_blocks > 0) || !mount_table){ -+ if (opt & OPT_INODE) { -+ s.f_blocks = s.f_files; -+ s.f_bavail = s.f_bfree = s.f_ffree; -+ s.f_bsize = 1; -+#if ENABLE_FEATURE_HUMAN_READABLE -+ if (df_disp_hr) -+ df_disp_hr = 1; -+#endif -+ } - blocks_used = s.f_blocks - s.f_bfree; - blocks_percent_used = 0; - if (blocks_used + s.f_bavail) { diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-hexdump.u --- a/busybox/stuff/busybox-1.7.3-hexdump.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ ---- busybox-1.7.3/util-linux/hexdump.c -+++ busybox-1.7.3/util-linux/hexdump.c -@@ -45,7 +45,7 @@ - - static const char add_first[] ALIGN1 = "\"%07.7_Ax\n\""; - --static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:v"; -+static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:vR"; - - static const struct suffix_mult suffixes[] = { - { "b", 512 }, -@@ -59,6 +59,8 @@ - { - const char *p; - int ch; -+ FILE *fp; -+ smallint rdump = 0; - - bb_dump_vflag = FIRST; - bb_dump_length = -1; -@@ -70,7 +72,7 @@ - if ((p - hexdump_opts) < 5) { - bb_dump_add(add_first); - bb_dump_add(add_strings[(int)(p - hexdump_opts)]); -- } else if (ch == 'C') { -+ } if (ch == 'C') { - bb_dump_add("\"%08.8_Ax\n\""); - bb_dump_add("\"%08.8_ax \" 8/1 \"%02x \" \" \" 8/1 \"%02x \" "); - bb_dump_add("\" |\" 16/1 \"%_p\" \"|\\n\""); -@@ -90,6 +92,9 @@ - } /* else */ - if (ch == 'v') { - bb_dump_vflag = ALL; -+ } /* else */ -+ if (ch == 'R') { -+ rdump = 1; - } - } - } -@@ -101,5 +106,36 @@ - - argv += optind; - -- return bb_dump_dump(argv); -+ if (!rdump) { -+ return bb_dump_dump(argv); -+ } -+ -+ /* -R: reverse of 'hexdump -Cv' */ -+ fp = stdin; -+ if (!*argv) { -+ argv--; -+ goto jump_in; -+ } -+ -+ do { -+ char *buf; -+ fp = xfopen(*argv, "r"); -+ jump_in: -+ while ((buf = xmalloc_getline(fp)) != NULL) { -+ p = buf; -+ while (1) { -+ /* skip address or previous byte */ -+ while (isxdigit(*p)) p++; -+ while (*p == ' ') p++; -+ /* '|' char will break the line */ -+ if (!isxdigit(*p) || sscanf(p, "%x ", &ch) != 1) -+ break; -+ putchar(ch); -+ } -+ free(buf); -+ } -+ fclose(fp); -+ } while (*++argv); -+ -+ fflush_stdout_and_exit(EXIT_SUCCESS); - } diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-patch.u --- a/busybox/stuff/busybox-1.7.3-patch.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,258 +0,0 @@ ---- busybox-1.7.3/editors/patch.c -+++ busybox-1.7.3/editors/patch.c -@@ -23,11 +23,9 @@ - - #include "libbb.h" - --static unsigned int copy_lines(FILE *src_stream, FILE *dest_stream, const unsigned int lines_count) -+static unsigned int copy_lines(FILE *src_stream, FILE *dest_stream, unsigned int lines_count) - { -- unsigned int i = 0; -- -- while (src_stream && (i < lines_count)) { -+ while (src_stream && lines_count) { - char *line; - line = xmalloc_fgets(src_stream); - if (line == NULL) { -@@ -37,10 +35,9 @@ - bb_perror_msg_and_die("error writing to new file"); - } - free(line); -- -- i++; -+ lines_count--; - } -- return i; -+ return lines_count; - } - - /* If patch_level is -1 it will remove all directory names -@@ -49,26 +46,24 @@ - * returns malloc'ed filename - */ - --static char *extract_filename(char *line, int patch_level) -+static char *extract_filename(char *line, unsigned int patch_level) - { - char *temp, *filename_start_ptr = line + 4; -- int i; - - /* Terminate string at end of source filename */ -- temp = strchrnul(filename_start_ptr, '\t'); -- *temp = '\0'; -+ line[strcspn(line,"\t\n")] = '\0'; - - /* Skip over (patch_level) number of leading directories */ -- if (patch_level == -1) -- patch_level = INT_MAX; -- for (i = 0; i < patch_level; i++) { -+ while (patch_level--) { - temp = strchr(filename_start_ptr, '/'); - if (!temp) - break; - filename_start_ptr = temp + 1; - } - -- return xstrdup(filename_start_ptr); -+ temp = xstrdup(filename_start_ptr); -+ free(line); -+ return temp; - } - - static int file_doesnt_exist(const char *filename) -@@ -82,22 +77,19 @@ - { - int patch_level = -1; - char *patch_line; -- int ret; -- FILE *patch_file = NULL; -+ FILE *patch_file = stdin; - - { - char *p, *i; -- ret = getopt32(argv, "p:i:", &p, &i); -+ int ret = getopt32(argv, "p:i:", &p, &i); - if (ret & 1) - patch_level = xatol_range(p, -1, USHRT_MAX); - if (ret & 2) { - patch_file = xfopen(i, "r"); -- } else { -- patch_file = stdin; - } -- ret = 0; - } - -+ xfunc_error_retval = 2; - patch_line = xmalloc_getline(patch_file); - while (patch_line) { - FILE *src_stream; -@@ -122,18 +114,14 @@ - /* FIXME: patch_line NULL check?? */ - - /* Extract the filename used before the patch was generated */ -- original_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -+ original_filename = extract_filename(patch_line, (unsigned int) patch_level); - - patch_line = xmalloc_getline(patch_file); - /* FIXME: NULL check?? */ - if (strncmp(patch_line, "+++ ", 4) != 0) { -- ret = 2; -- bb_error_msg("invalid patch"); -- continue; -+ bb_error_msg_and_die("invalid patch: %s\n",patch_line); - } -- new_filename = extract_filename(patch_line, patch_level); -- free(patch_line); -+ new_filename = extract_filename(patch_line, (unsigned int) patch_level); - - if (file_doesnt_exist(new_filename)) { - char *line_ptr; -@@ -144,7 +132,6 @@ - bb_make_directory(new_filename, -1, FILEUTILS_RECUR); - *line_ptr = '/'; - } -- dst_stream = xfopen(new_filename, "w+"); - backup_filename = NULL; - } else { - backup_filename = xmalloc(strlen(new_filename) + 6); -@@ -154,12 +141,11 @@ - bb_perror_msg_and_die("cannot create file %s", - backup_filename); - } -- dst_stream = xfopen(new_filename, "w"); - } - -- if ((backup_filename == NULL) || file_doesnt_exist(original_filename)) { -- src_stream = NULL; -- } else { -+ dst_stream = xfopen(new_filename, "w"); -+ src_stream = NULL; -+ if (!file_doesnt_exist(original_filename) && backup_filename) { - if (strcmp(original_filename, new_filename) == 0) { - src_stream = xfopen(backup_filename, "r"); - } else { -@@ -174,54 +160,59 @@ - while (patch_line) { - unsigned int count; - unsigned int src_beg_line; -+ unsigned int src_last_line = 1; - unsigned int unused; - unsigned int hunk_offset_start = 0; -- int hunk_error = 0; - - /* This bit should be improved */ -- if ((sscanf(patch_line, "@@ -%d,%d +%d,%d @@", &src_beg_line, &unused, &dest_beg_line, &unused) != 4) && -- (sscanf(patch_line, "@@ -%d,%d +%d @@", &src_beg_line, &unused, &dest_beg_line) != 3) && -- (sscanf(patch_line, "@@ -%d +%d,%d @@", &src_beg_line, &dest_beg_line, &unused) != 3)) { -+ if ((sscanf(patch_line, "@@ -%d,%d +%d,%d @@", &src_beg_line, -+ &src_last_line, &dest_beg_line, &unused) != 4) && -+ (sscanf(patch_line, "@@ -%d,%d +%d @@", &src_beg_line, -+ &src_last_line, &dest_beg_line) != 3) && -+ (sscanf(patch_line, "@@ -%d +%d,%d @@", &src_beg_line, -+ &dest_beg_line, &unused) != 3) && -+ (sscanf(patch_line, "@@ -%d +%d @@", &src_beg_line, -+ &dest_beg_line) != 2)) { - /* No more hunks for this file */ - break; - } -- free(patch_line); - hunk_count++; - - if (src_beg_line && dest_beg_line) { - /* Copy unmodified lines upto start of hunk */ - /* src_beg_line will be 0 if its a new file */ - count = src_beg_line - src_cur_line; -- if (copy_lines(src_stream, dst_stream, count) != count) { -+ if (copy_lines(src_stream, dst_stream, count)) { - bb_error_msg_and_die("bad src file"); - } - src_cur_line += count; - dest_cur_line += count; - copy_trailing_lines_flag = 1; - } -- hunk_offset_start = src_cur_line; -+ src_last_line += hunk_offset_start = src_cur_line; - -- while ((patch_line = xmalloc_fgets(patch_file)) != NULL) { -+ for (free(patch_line); -+ (patch_line = xmalloc_fgets(patch_file)) != NULL; -+ free(patch_line)) { - if ((*patch_line == '-') || (*patch_line == ' ')) { - char *src_line = NULL; -+ if (src_cur_line == src_last_line) break; - if (src_stream) { - src_line = xmalloc_fgets(src_stream); -- if (!src_line) { -- hunk_error++; -- break; -- } else { -+ if (src_line) { -+ int diff = strcmp(src_line, patch_line + 1); - src_cur_line++; -+ free(src_line); -+ if (diff) { -+ src_line = NULL; -+ } - } -- if (strcmp(src_line, patch_line + 1) != 0) { -- bb_error_msg("hunk #%d FAILED at %d", hunk_count, hunk_offset_start); -- hunk_error++; -- free(patch_line); -- /* Probably need to find next hunk, etc... */ -- /* but for now we just bail out */ -- patch_line = NULL; -+ if (!src_line) { -+ bb_error_msg("hunk #%d FAILED at %d", -+ hunk_count, hunk_offset_start); -+ bad_hunk_count++; - break; - } -- free(src_line); - } - if (*patch_line == ' ') { - fputs(patch_line + 1, dst_stream); -@@ -233,16 +224,12 @@ - } else { - break; - } -- free(patch_line); -- } -- if (hunk_error) { -- bad_hunk_count++; - } - } - - /* Cleanup last patched file */ - if (copy_trailing_lines_flag) { -- copy_lines(src_stream, dst_stream, -1); -+ copy_lines(src_stream, dst_stream, (unsigned int) -1); - } - if (src_stream) { - fclose(src_stream); -@@ -251,16 +238,14 @@ - fclose(dst_stream); - } - if (bad_hunk_count) { -- if (!ret) { -- ret = 1; -- } - bb_error_msg("%d out of %d hunk FAILED", bad_hunk_count, hunk_count); -+ return 1; - } else { - /* It worked, we can remove the backup */ - if (backup_filename) { - unlink(backup_filename); - } -- if ((dest_cur_line == 0) || (dest_beg_line == 0)) { -+ if (dest_cur_line == 0) { - /* The new patched file is empty, remove it */ - xunlink(new_filename); - if (strcmp(new_filename, original_filename) != 0) -@@ -273,5 +258,5 @@ - * 1 = Some hunks failed - * 2 = More serious problems - */ -- return ret; -+ return 0; - } diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-script.u --- a/busybox/stuff/busybox-1.7.3-script.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ ---- busybox-1.7.3/include/applets.h -+++ busybox-1.7.3/include/applets.h -@@ -284,6 +284,7 @@ - USE_RUNSV(APPLET(runsv, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_RUNSVDIR(APPLET(runsvdir, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_RX(APPLET(rx, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) -+USE_SCRIPT(APPLET(script, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) - USE_SED(APPLET(sed, _BB_DIR_BIN, _BB_SUID_NEVER)) - USE_SELINUXENABLED(APPLET(selinuxenabled, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)) - USE_SEQ(APPLET_NOFORK(seq, seq, _BB_DIR_USR_BIN, _BB_SUID_NEVER, seq)) - ---- busybox-1.7.3/include/libbb.h -+++ busybox-1.7.3/include/libbb.h -@@ -225,6 +225,7 @@ - int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData, int depth), - void* userData, unsigned depth); - extern int device_open(const char *device, int mode); -+extern int getpty(char *line, int size); - extern int get_console_fd(void); - extern char *find_block_device(const char *path); - /* bb_copyfd_XX print read/write errors and return -1 if they occur */ - ---- busybox-1.7.3/libbb/Kbuild -+++ busybox-1.7.3/libbb/Kbuild -@@ -38,6 +38,7 @@ - lib-y += get_last_path_component.o - lib-y += get_line_from_file.o - lib-y += getopt32.o -+lib-y += getpty.o - lib-y += herror_msg.o - lib-y += herror_msg_and_die.o - lib-y += human_readable.o - ---- busybox-1.7.3/libbb/getpty.c -+++ busybox-1.7.3/libbb/getpty.c -@@ -0,0 +1,56 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * Mini getpty implementation for busybox -+ * Bjorn Wesen, Axis Communications AB (bjornw@axis.com) -+ * -+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. -+ */ -+ -+#include "libbb.h" -+ -+int getpty(char *line, int size) -+{ -+ int p; -+#if ENABLE_FEATURE_DEVPTS -+ p = open("/dev/ptmx", O_RDWR); -+ if (p > 0) { -+ const char *name; -+ grantpt(p); -+ unlockpt(p); -+ name = ptsname(p); -+ if (!name) { -+ bb_perror_msg("ptsname error (is /dev/pts mounted?)"); -+ return -1; -+ } -+ safe_strncpy(line, name, size); -+ return p; -+ } -+#else -+ struct stat stb; -+ int i; -+ int j; -+ -+ strcpy(line, "/dev/ptyXX"); -+ -+ for (i = 0; i < 16; i++) { -+ line[8] = "pqrstuvwxyzabcde"[i]; -+ line[9] = '0'; -+ if (stat(line, &stb) < 0) { -+ continue; -+ } -+ for (j = 0; j < 16; j++) { -+ line[9] = j < 10 ? j + '0' : j - 10 + 'a'; -+ if (DEBUG) -+ fprintf(stderr, "Trying to open device: %s\n", line); -+ p = open(line, O_RDWR | O_NOCTTY); -+ if (p >= 0) { -+ line[5] = 't'; -+ return p; -+ } -+ } -+ } -+#endif /* FEATURE_DEVPTS */ -+ return -1; -+} -+ -+ - ---- busybox-1.7.3/miscutils/Config.in -+++ busybox-1.7.3/miscutils/Config.in -@@ -329,6 +329,12 @@ - help - Receive files using the Xmodem protocol. - -+config SCRIPT -+ bool "script" -+ default n -+ help -+ The script makes typescript of terminal session. -+ - config STRINGS - bool "strings" - default n - ---- busybox-1.7.3/networking/telnetd.c -+++ busybox-1.7.3/networking/telnetd.c -@@ -162,54 +162,6 @@ - return memmove(ptr - num_totty, ptr0, num_totty); - } - -- --static int --getpty(char *line, int size) --{ -- int p; --#if ENABLE_FEATURE_DEVPTS -- p = open("/dev/ptmx", O_RDWR); -- if (p > 0) { -- const char *name; -- grantpt(p); -- unlockpt(p); -- name = ptsname(p); -- if (!name) { -- bb_perror_msg("ptsname error (is /dev/pts mounted?)"); -- return -1; -- } -- safe_strncpy(line, name, size); -- return p; -- } --#else -- struct stat stb; -- int i; -- int j; -- -- strcpy(line, "/dev/ptyXX"); -- -- for (i = 0; i < 16; i++) { -- line[8] = "pqrstuvwxyzabcde"[i]; -- line[9] = '0'; -- if (stat(line, &stb) < 0) { -- continue; -- } -- for (j = 0; j < 16; j++) { -- line[9] = j < 10 ? j + '0' : j - 10 + 'a'; -- if (DEBUG) -- fprintf(stderr, "Trying to open device: %s\n", line); -- p = open(line, O_RDWR | O_NOCTTY); -- if (p >= 0) { -- line[5] = 't'; -- return p; -- } -- } -- } --#endif /* FEATURE_DEVPTS */ -- return -1; --} -- -- - static void - send_iac(struct tsession *ts, unsigned char command, int option) - { - ---- busybox-1.7.3/util-linux/script.c -+++ busybox-1.7.3/util-linux/script.c -@@ -0,0 +1,157 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * script implementation for busybox -+ * -+ * pascal.bellard@ads-lu.com -+ * -+ * Based on code from util-linux v 2.12r -+ * Copyright (c) 1980 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Licensed under GPLv2 or later, see file License in this tarball for details. -+ */ -+ -+#include -+#include "libbb.h" -+ -+struct globals { -+ int parent, qflg; -+ struct termios tt; -+ const char *fname; -+}; -+#define G (*ptr_to_globals) -+#define parent (G.parent ) -+#define qflg (G.qflg ) -+#define tt (G.tt ) -+#define fname (G.fname ) -+#define INIT_G() do { \ -+ PTR_TO_GLOBALS = xzalloc(sizeof(G)); \ -+ fname = "typescript"; \ -+} while (0) -+ -+static void done(void) -+{ -+ if (parent) { -+ tcsetattr(0, TCSAFLUSH, &tt); -+ if (qflg == 0) printf("Script done, file is %s\n", fname); -+ } -+ exit(0); -+} -+ -+static void finish(int sig) -+{ -+ (void) sig; -+ done(); -+} -+ -+#if ENABLE_GETOPT_LONG -+static const char getopt_longopts[] ALIGN1 = -+ "append\0" No_argument "a" -+ "command\0" Required_argument "c" -+ "flush\0" No_argument "f" -+ "quiet\0" No_argument "q" -+ ; -+#endif -+ -+int script_main(int argc, char *argv[]); -+int script_main(int argc, char *argv[]) -+{ -+ int opt, child, pty; -+ int mode = O_CREAT|O_TRUNC|O_WRONLY; -+ struct termios rtt; -+ const char *shell; -+ struct winsize win; -+ char line[32]; -+ char *cflg = NULL, shell_arg[] = "-i"; -+ -+ INIT_G(); -+#if ENABLE_GETOPT_LONG -+ applet_long_options = getopt_longopts; -+#endif -+ opt = getopt32(argv, "ac:fq", &cflg); -+ if (opt & 1) { -+ mode = O_CREAT|O_APPEND|O_WRONLY; -+ } -+ if (opt & 2) { -+ shell_arg[1] = 'c'; -+ } -+#define fflg (opt & 4) -+ if (opt & 8) { -+ qflg++; -+ } -+ argc -= optind; -+ argv += optind; -+ if (argc > 0) { -+ if (--argc > 0) { -+ bb_show_usage(); -+ } -+ fname = argv[0]; -+ } -+ shell = getenv("SHELL"); -+ if (shell == NULL) { -+ shell = _PATH_BSHELL; -+ } -+ pty = getpty(line,sizeof(line)); -+ if (pty < 0) { -+ bb_perror_msg_and_die("Out of pty's"); -+ } -+ tcgetattr(0, &tt); -+ ioctl(0, TIOCGWINSZ, (char *)&win); -+ if (qflg == 0) { -+ printf("Script started, file is %s\n", fname); -+ } -+ -+ rtt = tt; -+ cfmakeraw(&rtt); -+ rtt.c_lflag &= ~ECHO; -+ tcsetattr(0, TCSAFLUSH, &rtt); -+ -+ signal(SIGCHLD, finish); /* catch SIGTERM of children */ -+ parent = fork(); /* use pid as flag meaning 'I am the parent process' */ -+ if (parent < 0) { -+ bb_perror_msg_and_die("fork"); -+ } -+ if (parent) { /* parent: link mainshell stdin to pty master input */ -+ /* endless copy: stdin will not be closed */ -+ bb_copyfd_eof(0, pty); -+ /* not reached, but maybe bb_copyfd_eof behaviour will change ? */ -+ done(); -+ } -+ else { -+ child = fork(); -+ if (child < 0) { -+ bb_perror_msg_and_die("fork"); -+ } -+ if (child) { -+ /* child1: link pty master output to mainshell stdout and file */ -+ int count, fdscript; -+ char buf[256]; -+ close(0); -+ fdscript = xopen(fname, mode); -+ /* copy until pty is close, i.e. child2 exits */ -+ while ((count = read(pty, buf, sizeof(buf))) > 0) { -+ write(1, buf, count); -+ write(fdscript, buf, count); -+ if (fflg) { -+ fsync(fdscript); -+ } -+ } -+ done(); -+ } -+ else { /* child2: link subshell input, output, error to pty slave */ -+ close(pty); /* close master */ -+ pty = xopen(line, O_RDWR); /* open slave */ -+ tcsetattr(pty, TCSAFLUSH, &tt); -+ ioctl(pty, TIOCSWINSZ, (char *)&win); -+ setsid(); -+ ioctl(pty, TIOCSCTTY, 0); -+ xmove_fd(pty, 0); -+ xdup2(0, 1); -+ xdup2(0, 2); -+ execl(shell, strrchr(shell, '/') + 1, shell_arg, cflg, NULL); -+ bb_perror_msg_and_die(shell); -+ } -+ } -+ /* not reached */ -+ return 0; -+} - ---- busybox-1.7.3/util-linux/Kbuild -+++ busybox-1.7.3/util-linux/Kbuild -@@ -26,6 +26,7 @@ - lib-$(CONFIG_PIVOT_ROOT) +=pivot_root.o - lib-$(CONFIG_RDATE) +=rdate.o - lib-$(CONFIG_READPROFILE) +=readprofile.o -+lib-$(CONFIG_SCRIPT) +=script.o - lib-$(CONFIG_SETARCH) +=setarch.o - lib-$(CONFIG_SWAPONOFF) +=swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) +=switch_root.o -patch bug... ---- busybox-1.7.3/include/usage.h -+++ busybox-1.7.3/include/usage.h -@@ -2931,5 +2931,15 @@ - #define rx_example_usage \ - "$ rx /tmp/foo\n" - -+#define script_trivial_usage \ -+ "[-afq] [-c COMMAND] [file]" -+#define script_full_usage \ -+ "Options:\n" \ -+ " -a append the output to file or typescript\n" \ -+ " -c COMMAND run the COMMAND rather than an interactive shell.\n" \ -+ " -f flush output after each write\n" \ -+ " -q quiet." -+ -+ - #define sed_trivial_usage \ - "[-efinr] pattern [files...]" diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-usage-df.u --- a/busybox/stuff/busybox-1.7.3-usage-df.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ ---- busybox-1.7.3/include/usage.h Fri Feb 29 18:06:12 2008 -+++ busybox-1.7.3/include/usage.h Fri Feb 29 18:05:38 2008 -@@ -611,7 +611,8 @@ - "\n\nOptions control size display:" \ - "\n -h Human readable (e.g. 1K 243M 2G)" \ - "\n -m 1024*1024 blocks" \ -- "\n -k 1024 blocks") \ -+ "\n -k 1024 blocks" \ -+ "\n -i Inodes") \ - SKIP_FEATURE_HUMAN_READABLE( \ - "\n\nOptions:" \ - "\n -k Ignored") diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3-vcsa2txt.u --- a/busybox/stuff/busybox-1.7.3-vcsa2txt.u Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ ---- busybox-1.7.3/include/applets.h 2008-03-01 11:20:49.000000000 +0100 -+++ busybox-1.7.3/include/applets.h 2008-03-01 11:24:45.000000000 +0100 -@@ -357,6 +357,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.7.3/include/usage.h 2008-03-01 11:22:06.000000000 +0100 -+++ busybox-1.7.3/include/usage.h 2008-03-01 11:32:48.000000000 +0100 -@@ -3835,6 +3835,13 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Print - " 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 \ - ---- busybox-1.7.3/miscutils/Config.in 2008-03-01 11:21:44.000000000 +0100 -+++ busybox-1.7.3/miscutils/Config.in 2008-03-01 11:32:32.000000000 +0100 -@@ -380,6 +380,12 @@ config TTYSIZE - only height, or both, in any order. It also does not complain on 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.7.3/util-linux/Kbuild 2008-03-01 11:21:57.000000000 +0100 -+++ busybox-1.7.3/util-linux/Kbuild 2008-03-01 11:32:37.000000000 +0100 -@@ -30,4 +30,5 @@ lib-$(CONFIG_SCRIPT) +=script.o - lib-$(CONFIG_SETARCH) +=setarch.o - lib-$(CONFIG_SWAPONOFF) +=swaponoff.o - lib-$(CONFIG_SWITCH_ROOT) +=switch_root.o -+lib-$(CONFIG_VCSA2TXT) +=vcsa2txt.o - lib-$(CONFIG_UMOUNT) +=umount.o - ---- busybox-1.7.3/util-linux/vcsa2txt.c 1970-01-01 01:00:00.000000000 +0100 -+++ busybox-1.7.3/util-linux/vcsa2txt.c 2008-03-01 11:36:13.000000000 +0100 -@@ -0,0 +1,48 @@ -+#include "libbb.h" -+ -+static void writechar(int c) { (void)write(1,&c,1); } -+ -+int vcsa2txt_main(int argc, char *argv[]); -+int vcsa2txt_main(int argc, char *argv[]) -+{ -+ struct {unsigned char l, c, x, y;} scrn; // man 4 console_codes BLGCRMOW -+ static unsigned char last, ch[2], end[5] = "\e[0m\n", color[8] = "04261537"; -+ int sp, lf, x; -+ if (read(0, &scrn, 4) < 0) return 1; -+ for (lf = 0; scrn.l; lf++, scrn.l--) for (sp = x = 0; ++x <= scrn.c;) { -+ if (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;) writechar('\n'); while (--sp) writechar(' '); -+#define PACKED -+#ifdef 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 = '\e'+256*'['; -+ 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; -+ (void)write(1,esc,s-esc); -+ } -+ 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]; -+ (void)write(1,esc,sizeof(esc)); -+ } -+#endif -+ writechar(ch[0]); -+ } -+ (void)write(1,end,sizeof(end)); -+ return 0; -+} diff -r 77070ef5bae8 -r 1da58af0028a busybox/stuff/busybox-1.7.3.config --- a/busybox/stuff/busybox-1.7.3.config Wed May 27 11:52:33 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,751 +0,0 @@ -# -# Automatically generated make config: don't edit -# Busybox version: 1.7.3 -# Sat Mar 1 11:50:42 2008 -# -CONFIG_HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -# CONFIG_NITPICK is not set -CONFIG_DESKTOP=y -# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -# 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_BUILD_LIBBUSYBOX is not set -# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set -# CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y -# CONFIG_BUILD_AT_ONCE is not set - -# -# Debugging Options -# -# CONFIG_DEBUG 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 - -# -# Installation Options -# -# CONFIG_INSTALL_NO_USR is not set -CONFIG_INSTALL_APPLET_SYMLINKS=y -# CONFIG_INSTALL_APPLET_HARDLINKS is not set -# CONFIG_INSTALL_APPLET_DONT 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_FANCY_KEYS=y -# 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_MONOTONIC_SYSCALL=y -CONFIG_IOCTL_HEX2STR_ERROR=y - -# -# Applets -# - -# -# Archival Utilities -# -# CONFIG_AR is not set -# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -CONFIG_BUNZIP2=y -# CONFIG_CPIO is not set -CONFIG_DPKG=y -CONFIG_DPKG_DEB=y -CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y -CONFIG_GUNZIP=y -CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y -CONFIG_GZIP=y -CONFIG_RPM2CPIO=y -CONFIG_RPM=y -CONFIG_FEATURE_RPM_BZ2=y -CONFIG_TAR=y -CONFIG_FEATURE_TAR_CREATE=y -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -CONFIG_FEATURE_TAR_FROM=y -CONFIG_FEATURE_TAR_GZIP=y -CONFIG_FEATURE_TAR_COMPRESS=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_UNCOMPRESS=y -CONFIG_UNLZMA=y -# CONFIG_FEATURE_LZMA_FAST is not set -CONFIG_UNZIP=y - -# -# Common options for cpio and tar -# -# CONFIG_FEATURE_UNARCHIVE_TAPE is not set - -# -# Common options for dpkg and dpkg_deb -# -CONFIG_FEATURE_DEB_TAR_GZ=y -CONFIG_FEATURE_DEB_TAR_BZ2=y -CONFIG_FEATURE_DEB_TAR_LZMA=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_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_SEQ=y -CONFIG_SHA1SUM=y -CONFIG_SLEEP=y -CONFIG_FEATURE_FANCY_SLEEP=y -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_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_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_SETKEYCODES=y -# CONFIG_SETLOGCONS is not set - -# -# Debian Utilities -# -CONFIG_MKTEMP=y -# CONFIG_PIPE_PROGRESS is not set -# 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_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_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_SHADOW is not set -# CONFIG_USE_BB_PWD_GRP is not set -CONFIG_ADDGROUP=y -CONFIG_FEATURE_ADDUSER_TO_GROUP=y -CONFIG_DELGROUP=y -CONFIG_FEATURE_DEL_USER_FROM_GROUP=y -CONFIG_ADDUSER=y -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 is not set -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=y -CONFIG_FSCK=y -CONFIG_LSATTR=y - -# -# Linux Module Utilities -# -# CONFIG_INSMOD 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_RMMOD is not set -# CONFIG_LSMOD is not set -# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set -# CONFIG_MODPROBE is not set -# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set -# CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_2_6_MODULES is not set -# 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_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_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_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_MOUNT=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_READPROFILE=y -CONFIG_SETARCH=y -CONFIG_SWAPONOFF=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_CHRT is not set -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_LAST=y -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_MOUNTPOINT=y -# CONFIG_MT is not set -# CONFIG_RAIDAUTORUN is not set -# CONFIG_READAHEAD is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -CONFIG_SCRIPT=y -CONFIG_STRINGS=y -CONFIG_SETSID=y -# CONFIG_TASKSET is not set -# CONFIG_FEATURE_TASKSET_FANCY is not set -CONFIG_TIME=y -# CONFIG_TTYSIZE is not set -CONFIG_VCSA2TXT=y -CONFIG_WATCHDOG=y - -# -# Networking Utilities -# -CONFIG_FEATURE_IPV6=y -# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set -CONFIG_ARP=y -CONFIG_ARPING=y -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_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_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_IFUPDOWN is not set -CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" -# 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 is not set -# CONFIG_FEATURE_IP_ADDRESS is not set -# CONFIG_FEATURE_IP_LINK is not set -# CONFIG_FEATURE_IP_ROUTE is not set -# CONFIG_FEATURE_IP_TUNNEL is not set -# CONFIG_FEATURE_IP_RULE is not set -# CONFIG_FEATURE_IP_SHORT_FORMS is not set -# CONFIG_IPADDR is not set -# CONFIG_IPLINK is not set -# CONFIG_IPROUTE is not set -# CONFIG_IPTUNNEL is not set -# CONFIG_IPRULE is not set -CONFIG_IPCALC=y -CONFIG_FEATURE_IPCALC_FANCY=y -CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y -CONFIG_NAMEIF=y -CONFIG_NC=y -CONFIG_NC_SERVER=y -# CONFIG_NC_EXTRA is not set -CONFIG_NETSTAT=y -CONFIG_FEATURE_NETSTAT_WIDE=y -CONFIG_NSLOOKUP=y -CONFIG_PING=y -CONFIG_PING6=y -CONFIG_PSCAN=y -CONFIG_FEATURE_FANCY_PING=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_TFTP=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 is not set -# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set -CONFIG_APP_UDHCPC=y -# CONFIG_FEATURE_UDHCP_DEBUG is not set -# CONFIG_FEATURE_RFC3397 is not set -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 - -# -# Process Utilities -# -CONFIG_FREE=y -CONFIG_FUSER=y -CONFIG_KILL=y -CONFIG_KILLALL=y -CONFIG_KILLALL5=y -CONFIG_NMETER=y -CONFIG_PIDOF=y -CONFIG_FEATURE_PIDOF_SINGLE=y -CONFIG_FEATURE_PIDOF_OMIT=y -CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y -CONFIG_RENICE=y -CONFIG_BB_SYSCTL=y -# CONFIG_TOP is not set -# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set -# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set -# CONFIG_FEATURE_TOP_DECIMALS is not set -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_LASH 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_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_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_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_CTTYHACK is not set - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -CONFIG_FEATURE_ROTATE_LOGFILE=y -CONFIG_FEATURE_REMOTE_LOG=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 - -# -# ipsvd utilities -# -# CONFIG_TCPSVD is not set -# CONFIG_UDPSVD is not set