--- /dev/null
+diff -Naur busybox-1.20.2/init/init.c busybox-1.20.2/init/init.c
+--- busybox-1.20.2/init/init.c 2011-09-06 04:35:17.000000000 +0200
++++ busybox-1.20.2/init/init.c 2011-11-14 14:39:06.000000000 +0100
+@@ -262,6 +262,11 @@
+ }
+ }
+
++#ifdef VT_OPENQRY
++/* don't want that "vt102" stuff... */
++#undef VT_OPENQRY
++#endif
++
+ static void console_init(void)
+ {
+ #ifdef VT_OPENQRY
+@@ -269,16 +274,23 @@
+ #endif
+ char *s;
+
++# if 0
+ s = getenv("CONSOLE");
+ if (!s)
+ s = getenv("console");
++#endif
++ s = "/dev/console";
++ mknod(s, (S_IFCHR | 0600), 0x0501);
++
+ if (s) {
++ close(STDIN_FILENO);
++ /* we'll get STDIN_FILENO from open... */
+ int fd = open(s, O_RDWR | O_NONBLOCK | O_NOCTTY);
+ if (fd >= 0) {
+- dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+- xmove_fd(fd, STDERR_FILENO);
++ dup2(fd, STDERR_FILENO);
+ }
++ ndelay_off(STDIN_FILENO);
+ dbg_message(L_LOG, "console='%s'", s);
+ } else {
+ /* Make sure fd 0,1,2 are not closed
+@@ -295,8 +307,8 @@
+ /* Not a linux terminal, probably serial console.
+ * Force the TERM setting to vt102
+ * if TERM is set to linux (the default) */
+- if (!s || strcmp(s, "linux") == 0)
+- putenv((char*)"TERM=vt102");
++/* if (!s || strcmp(s, "linux") == 0)
++ putenv((char*)"TERM=vt102"); */
+ if (!ENABLE_FEATURE_INIT_SYSLOG)
+ log_console = NULL;
+ } else
+diff -Naur busybox-1.20.2/modutils/Config.src busybox-1.20.2/modutils/Config.src
+--- busybox-1.20.2/modutils/Config.src 2011-09-06 04:35:17.000000000 +0200
++++ busybox-1.20.2/modutils/Config.src 2011-11-14 14:39:06.000000000 +0100
+@@ -247,7 +247,7 @@
+ config DEFAULT_MODULES_DIR
+ string "Default directory containing modules"
+ default "/lib/modules"
+- depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO
++ depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO || INSMOD
+ help
+ Directory that contains kernel modules.
+ Defaults to "/lib/modules"
+diff -Naur busybox-1.20.2/modutils/insmod.c busybox-1.20.2/modutils/insmod.c
+--- busybox-1.20.2/modutils/insmod.c 2011-09-06 04:35:17.000000000 +0200
++++ busybox-1.20.2/modutils/insmod.c 2011-11-14 14:50:30.000000000 +0100
+@@ -35,11 +35,42 @@
+ //usage: )
+ //usage:#endif
+
++#include <sys/utsname.h>
++static char *m_filename;
++static char *m_fullName;
++
++static int FAST_FUNC check_module_name_match(const char *filename,
++ struct stat *statbuf UNUSED_PARAM,
++ void *userdata, int depth UNUSED_PARAM)
++{
++ char *fullname = (char *) userdata;
++ char *tmp;
++
++ if (fullname[0] == '\0')
++ return FALSE;
++
++ tmp = bb_get_last_path_component_nostrip(filename);
++ if (strcmp(tmp, fullname) == 0) {
++ /* Stop searching if we find a match */
++ m_filename = xstrdup(filename);
++ return FALSE;
++ }
++ return TRUE;
++}
++
+ int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int insmod_main(int argc UNUSED_PARAM, char **argv)
+ {
+ char *filename;
+ int rc;
++int len;
++char *tmp;
++char *tmp2;
++int k_version = 0;
++struct stat st;
++struct utsname uts;
++char *m_name;
++FILE *fp;
+
+ /* Compat note:
+ * 2.6 style insmod has no options and required filename
+@@ -58,9 +89,99 @@
+ if (!filename)
+ bb_show_usage();
+
+- rc = bb_init_module(filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
++ /* Grab the module name */
++ tmp = xstrdup(filename);
++ len = strlen(filename);
++
++ if (uname(&uts) == 0) {
++ if (uts.release[0] == '2') {
++ k_version = uts.release[2] - '0';
++ }
++ }
++
++ if (k_version > 4 && len > 3 && tmp[len - 3] == '.'
++ && tmp[len - 2] == 'k' && tmp[len - 1] == 'o'
++ ) {
++ len -= 3;
++ tmp[len] = '\0';
++ } else
++ if (len > 2 && tmp[len - 2] == '.' && tmp[len - 1] == 'o') {
++ len -= 2;
++ tmp[len] = '\0';
++ }
++
++ if (k_version > 4)
++ m_fullName = xasprintf("%s.ko", tmp);
++ else
++ m_fullName = xasprintf("%s.o", tmp);
++
++ if (!m_name) {
++ m_name = tmp;
++ }
++ free(tmp);
++
++ /* first look in /var/lib/modules */
++ tmp2 = alloca(strlen(m_fullName) + sizeof("/var/lib/modules/"));
++ strcpy(tmp2, "/var/lib/modules/");
++ strcat(tmp2, m_fullName);
++ if (stat(tmp2, &st) >= 0 && S_ISREG(st.st_mode) && (fp = fopen(tmp2, "r")) != NULL) {
++ m_filename = xstrdup(tmp2);
++ printf("insmod: preferring module %s\n", m_filename);
++ } else
++ /* Get a filedesc for the module. Check that we have a complete path */
++ if (stat(filename, &st) < 0 || !S_ISREG(st.st_mode)
++ || (fp = fopen_for_read(filename)) == NULL
++ ) {
++ /* Hmm. Could not open it. First search under /lib/modules/`uname -r`,
++ * but do not error out yet if we fail to find it... */
++ if (k_version) { /* uname succeedd */
++ char *module_dir;
++ char *tmdn;
++
++ tmdn = concat_path_file(CONFIG_DEFAULT_MODULES_DIR, uts.release);
++ /* Jump through hoops in case /lib/modules/`uname -r`
++ * is a symlink. We do not want recursive_action to
++ * follow symlinks, but we do want to follow the
++ * /lib/modules/`uname -r` dir, So resolve it ourselves
++ * if it is a link... */
++ module_dir = xmalloc_readlink(tmdn);
++ if (!module_dir)
++ module_dir = xstrdup(tmdn);
++ recursive_action(module_dir, ACTION_RECURSE,
++ check_module_name_match, NULL, m_fullName, 0);
++ free(module_dir);
++ free(tmdn);
++ }
++
++ /* Check if we have found anything yet */
++ if (!m_filename || ((fp = fopen_for_read(m_filename)) == NULL)) {
++ int r;
++ char *module_dir;
++
++ free(m_filename);
++ m_filename = NULL;
++ module_dir = xmalloc_readlink(CONFIG_DEFAULT_MODULES_DIR);
++ if (!module_dir)
++ module_dir = xstrdup(CONFIG_DEFAULT_MODULES_DIR);
++ /* No module found under /lib/modules/`uname -r`, this
++ * time cast the net a bit wider. Search /lib/modules/ */
++ r = recursive_action(module_dir, ACTION_RECURSE,
++ check_module_name_match, NULL, m_fullName, 0);
++ if (r)
++ bb_error_msg_and_die("%s: module not found", m_fullName);
++ free(module_dir);
++ if (m_filename == NULL
++ || ((fp = fopen_for_read(m_filename)) == NULL)
++ ) {
++ bb_error_msg_and_die("%s: module not found", m_fullName);
++ }
++ }
++ } else
++ m_filename = xstrdup(filename);
++
++ rc = bb_init_module(m_filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
+ if (rc)
+- bb_error_msg("can't insert '%s': %s", filename, moderror(rc));
++ bb_error_msg("can't insert '%s': %s", m_filename, moderror(rc));
+
+ return rc;
+ }
+diff -Naur busybox-1.20.2/networking/Config.src busybox-1.20.2/networking/Config.src
+--- busybox-1.20.2/networking/Config.src 2011-09-06 04:35:17.000000000 +0200
++++ busybox-1.20.2/networking/Config.src 2011-11-14 14:39:06.000000000 +0100
+@@ -446,6 +446,20 @@
+ Otherwise, if udhcpc applet is enabled, it is used.
+ Otherwise, ifup/ifdown will have no support for DHCP.
+
++config FEATURE_IFUPDOWN_CNXT_NORUNPARTS
++ bool "Cnxt dissable run-parts"
++ default n
++ depends on IFUPDOWN
++ help
++ CNXT: This stops ifup/down executing runparts
++
++config FEATURE_IFUPDOWN_CNXT_UDHCPCLOC
++ bool "Cnxt location for udhcpc"
++ default n
++ depends on IFUPDOWN
++ help
++ This searched for udhcpc script in /etc/network
++
+ config INETD
+ bool "inetd"
+ default y
+diff -Naur busybox-1.20.2/networking/ifupdown.c busybox-1.20.2/networking/ifupdown.c
+--- busybox-1.20.2/networking/ifupdown.c 2011-09-06 04:35:17.000000000 +0200
++++ busybox-1.20.2/networking/ifupdown.c 2011-11-14 14:39:06.000000000 +0100
+@@ -534,8 +534,13 @@
+ "pump -i %iface% -k",
+ },
+ { "udhcpc",
++#ifdef CONFIG_FEATURE_IFUPDOWN_CNXT_UDHCPCLOC
++ "udhcpc -n -p /var/run/udhcpc.%iface%.pid -t 5 -s /etc/network/udhcpc.sh "
++ "-i %iface% [[-H %hostname%]] [[-c %clientid%]]",
++#else
+ "udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid -i %iface%[[ -H %hostname%]][[ -c %client%]]"
+ "[[ -s %script%]][[ %udhcpc_opts%]]",
++#endif
+ "kill `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null",
+ },
+ };
+@@ -1030,7 +1035,9 @@
+ static int execute_all(struct interface_defn_t *ifd, const char *opt)
+ {
+ int i;
++#ifndef CONFIG_FEATURE_IFUPDOWN_CNXT_NORUNPARTS
+ char *buf;
++#endif
+ for (i = 0; i < ifd->n_options; i++) {
+ if (strcmp(ifd->option[i].name, opt) == 0) {
+ if (!doit(ifd->option[i].value)) {
+@@ -1039,9 +1046,13 @@
+ }
+ }
+
++#ifndef CONFIG_FEATURE_IFUPDOWN_CNXT_NORUNPARTS
+ buf = xasprintf("run-parts /etc/network/if-%s.d", opt);
+ /* heh, we don't bother free'ing it */
+ return doit(buf);
++#else
++ return 1;
++#endif
+ }
+
+ static int check(char *str)
--- /dev/null
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.20.2
+# Mon Sep 24 16:16:01 2012
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_PLATFORM_LINUX=y
+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_INSTALL_NO_USR=y
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+CONFIG_LONG_OPTS=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+# CONFIG_FEATURE_UTMP is not set
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Installation Options ("make install" behavior)
+#
+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="/home/wittinobi/coolstream/bs-cst-neutrino-hd-wc/root"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_FEATURE_SYSTEMD=y
+CONFIG_FEATURE_RTMINMAX=y
+CONFIG_PASSWORD_MINLEN=5
+CONFIG_MD5_SMALL=1
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=15
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+# CONFIG_FEATURE_REVERSE_SEARCH is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_EDITING_ASK_TERMINAL=y
+CONFIG_FEATURE_NON_POSIX_CP=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_XZ is not set
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+# CONFIG_FEATURE_SEAMLESS_BZ2 is not set
+CONFIG_FEATURE_SEAMLESS_GZ=y
+# CONFIG_FEATURE_SEAMLESS_Z is not set
+# CONFIG_AR is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+# CONFIG_BUNZIP2 is not set
+# CONFIG_BZIP2 is not set
+# CONFIG_CPIO is not set
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+CONFIG_GZIP_FAST=0
+# CONFIG_LZOP is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=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_TO_COMMAND=y
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
+# CONFIG_FEATURE_TAR_SELINUX is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+# CONFIG_LZMA is not set
+# CONFIG_UNXZ is not set
+# CONFIG_XZ is not set
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+# CONFIG_FEATURE_DATE_NANO is not set
+CONFIG_FEATURE_DATE_COMPAT=y
+# CONFIG_HOSTID is not set
+# CONFIG_ID is not set
+CONFIG_GROUPS=y
+CONFIG_TEST=y
+# CONFIG_FEATURE_TEST_64 is not set
+CONFIG_TOUCH=y
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_BASE64=y
+# CONFIG_WHO is not set
+# CONFIG_USERS is not set
+# CONFIG_CAL is not set
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_FEATURE_CP_LONG_OPTIONS=y
+CONFIG_CUT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+# CONFIG_FEATURE_DF_FANCY is not set
+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 is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+# CONFIG_FSYNC is not set
+CONFIG_HEAD=y
+# CONFIG_FEATURE_FANCY_HEAD is not set
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LN=y
+# CONFIG_LOGNAME is not set
+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 is not set
+# CONFIG_PRINTENV is not set
+# CONFIG_PRINTF is not set
+CONFIG_PWD=y
+# CONFIG_READLINK is not set
+# CONFIG_FEATURE_READLINK_FOLLOW is not set
+# CONFIG_REALPATH is not set
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y
+CONFIG_SEQ=y
+# CONFIG_SHA1SUM is not set
+# CONFIG_SHA256SUM is not set
+# CONFIG_SHA512SUM is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+# CONFIG_TAC is not set
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+# CONFIG_TEE is not set
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+# CONFIG_UNAME is not set
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+# CONFIG_WHOAMI is not set
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum
+#
+# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set
+
+#
+# Console Utilities
+#
+# CONFIG_CHVT is not set
+# CONFIG_FGCONSOLE is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+# CONFIG_DUMPKMAP is not set
+# CONFIG_KBD_MODE is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+# CONFIG_SHOWKEY is not set
+# CONFIG_FEATURE_LOADFONT_PSF2 is not set
+# CONFIG_FEATURE_LOADFONT_RAW 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_PATCH is not set
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+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_ASK_TERMINAL is not set
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_AWK=y
+# CONFIG_FEATURE_AWK_LIBM is not set
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_ED is not set
+CONFIG_SED=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 is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_FEATURE_FIND_LINKS=y
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT=y
+CONFIG_FEATURE_USE_INITTAB=y
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_INIT_TERMINAL_TYPE="linux"
+CONFIG_MESG=y
+CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+CONFIG_USE_BB_PWD_GRP=y
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+# CONFIG_USE_BB_CRYPT_SHA is not set
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_FIRST_SYSTEM_ID=0
+CONFIG_LAST_SYSTEM_ID=0
+# CONFIG_ADDGROUP is not set
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+CONFIG_DELUSER=y
+# CONFIG_DELGROUP is not set
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+# CONFIG_GETTY is not set
+CONFIG_LOGIN=y
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_PAM is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+# CONFIG_CRYPTPW is not set
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+CONFIG_TUNE2FS=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODINFO is not set
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_INSMOD=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+# CONFIG_DEPMOD is not set
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_2_4_MODULES is not set
+CONFIG_FEATURE_INSMOD_TRY_MMAP=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+CONFIG_BLOCKDEV=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_REV is not set
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKID is not set
+# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+# CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+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_GPT_LABEL is not set
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FINDFS=y
+# CONFIG_FLOCK is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+# CONFIG_MKFS_VFAT is not set
+# CONFIG_GETOPT is not set
+# CONFIG_FEATURE_GETOPT_LONG is not set
+# CONFIG_HEXDUMP is not set
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+# CONFIG_LSPCI is not set
+CONFIG_LSUSB=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_UUID=y
+CONFIG_MORE=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+# CONFIG_RDATE is not set
+# CONFIG_RDEV is not set
+CONFIG_READPROFILE=y
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+# CONFIG_FEATURE_SWAPON_PRI is not set
+# CONFIG_SWITCH_ROOT is not set
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+CONFIG_VOLUMEID=y
+
+#
+# Filesystem/Volume identification
+#
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# 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 is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# 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 is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_CONSPY is not set
+# CONFIG_LESS is not set
+CONFIG_FEATURE_LESS_MAXLINES=0
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+CONFIG_SETSERIAL=y
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+CONFIG_UBIMKVOL=y
+CONFIG_UBIRMVOL=y
+CONFIG_UBIRSVOL=y
+CONFIG_UBIUPDATEVOL=y
+# CONFIG_ADJTIMEX is not set
+CONFIG_BBCONFIG=y
+CONFIG_FEATURE_COMPRESS_BBCONFIG=y
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# 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 is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR=""
+# CONFIG_CRONTAB is not set
+# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_EJECT is not set
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_IONICE is not set
+# CONFIG_INOTIFYD is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_SMALL is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RFKILL is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+# CONFIG_TIMEOUT is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WALL is not set
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NBDCLIENT=y
+# CONFIG_NC is not set
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+# CONFIG_NC_110_COMPAT is not set
+CONFIG_PING=y
+# CONFIG_PING6 is not set
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_WHOIS=y
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+# CONFIG_DNSD is not set
+CONFIG_ETHER_WAKE=y
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTP_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+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_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 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_FEATURE_HTTPD_GZIP is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_FEATURE_IFUPDOWN_CNXT_NORUNPARTS=y
+CONFIG_FEATURE_IFUPDOWN_CNXT_UDHCPCLOC=y
+CONFIG_INETD=y
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+# 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 is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+# CONFIG_FEATURE_NETSTAT_PRG is not set
+CONFIG_NSLOOKUP=y
+CONFIG_NTPD=y
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_PSCAN is not set
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+# CONFIG_TCPSVD is not set
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+# CONFIG_TFTP is not set
+# CONFIG_TFTPD is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+# CONFIG_TFTP_DEBUG is not set
+# CONFIG_TRACEROUTE is not set
+# CONFIG_TRACEROUTE6 is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_TUNCTL is not set
+# CONFIG_FEATURE_TUNCTL_UG is not set
+# CONFIG_UDHCPC6 is not set
+# CONFIG_UDHCPD is not set
+# CONFIG_DHCPRELAY is not set
+# CONFIG_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+CONFIG_DHCPD_LEASES_FILE=""
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_FEATURE_UDHCP_8021Q=y
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/etc/network/udhcpc.sh"
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+# CONFIG_UDPSVD is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+# CONFIG_FEATURE_WGET_STATUSBAR is not set
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+# CONFIG_ZCIP is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+
+#
+# Process Utilities
+#
+CONFIG_IOSTAT=y
+CONFIG_LSOF=y
+CONFIG_MPSTAT=y
+# CONFIG_NMETER is not set
+CONFIG_PMAP=y
+CONFIG_POWERTOP=y
+CONFIG_PSTREE=y
+CONFIG_PWDX=y
+# CONFIG_SMEMCAP is not set
+CONFIG_UPTIME=y
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_KILLALL5 is not set
+# CONFIG_PGREP is not set
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PKILL is not set
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_LONG=y
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+# CONFIG_BB_SYSCTL is not set
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+# CONFIG_FEATURE_SHOW_THREADS is not set
+CONFIG_WATCH=y
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Shells
+#
+CONFIG_ASH=y
+CONFIG_ASH_BASH_COMPAT=y
+# CONFIG_ASH_IDLE_TIMEOUT is not set
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+# CONFIG_ASH_GETOPTS is not set
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_CTTYHACK=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_MSH is not set
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+# CONFIG_FEATURE_BASH_IS_ASH is not set
+# CONFIG_FEATURE_BASH_IS_HUSH is not set
+CONFIG_FEATURE_BASH_IS_NONE=y
+CONFIG_SH_MATH_SUPPORT=y
+# CONFIG_SH_MATH_SUPPORT_64 is not set
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_FEATURE_SH_HISTFILESIZE=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+# CONFIG_FEATURE_ROTATE_LOGFILE is not set
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_SYSLOGD_CFG=y
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_KLOGD=y
+CONFIG_FEATURE_KLOGD_KLOGCTL=y
+CONFIG_LOGGER=y
--- /dev/null
+diff -Naur links-2.7/Makefile.am links-2.7/Makefile.am
+--- links-2.7/Makefile.am 2012-06-06 21:49:35.000000000 +0200
++++ links-2.7/Makefile.am 2012-08-08 10:44:05.394251684 +0200
+@@ -13,7 +13,7 @@
+ else
+ endif
+
+-links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c compress.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c fn_impl.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c beos.h bits.h cfg.h codepage.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc codepage.inc entity.inc fbcommon.inc language.inc uni_7b.inc upcase.inc
++links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c compress.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c fn_impl.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c beos.h bits.h cfg.h codepage.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc codepage.inc entity.inc fbcommon.inc language.inc uni_7b.inc upcase.inc rc.c rcinput.c rcinput.h
+
+ dist-hook:
+ #remove the symlinka:
+diff -Naur links-2.7/Makefile.in links-2.7/Makefile.in
+--- links-2.7/Makefile.in 2012-06-25 22:33:04.000000000 +0200
++++ links-2.7/Makefile.in 2012-08-08 10:45:03.304256905 +0200
+@@ -78,7 +78,7 @@
+
+ @ATHEOS_GR_TRUE@links_LDADD = atheos.o
+
+-links_SOURCES = af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c compress.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c fn_impl.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c beos.h bits.h cfg.h codepage.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc codepage.inc entity.inc fbcommon.inc language.inc uni_7b.inc upcase.inc
++links_SOURCES = af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c compress.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c fn_impl.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c beos.h bits.h cfg.h codepage.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc codepage.inc entity.inc fbcommon.inc language.inc uni_7b.inc upcase.inc rc.c rcinput.c rcinput.h
+
+ CXXFLAGS = @CXXFLAGS@
+
+@@ -102,7 +102,7 @@
+ language.o links_icon.o listedit.o lru.o mailto.o main.o memory.o \
+ menu.o objreq.o os_dep.o pmshell.o png.o sched.o select.o session.o \
+ smb.o svgalib.o terminal.o tiff.o types.o url.o view.o view_gr.o x.o \
+-xbm.o
++xbm.o rc.o rcinput.o rcmouse.o
+ @ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.o
+ links_LDFLAGS =
+ CFLAGS = @CFLAGS@
+diff -Naur links-2.7/bfu.c links-2.7/bfu.c
+--- links-2.7/bfu.c 2012-06-25 21:29:20.000000000 +0200
++++ links-2.7/bfu.c 2012-08-08 10:41:05.584236472 +0200
+@@ -1411,7 +1411,7 @@
+ x_display_dlg_item(dlg, di, 1);
+ break;
+ }
+- if ((ev->x == KBD_ENTER && di->item->type == D_BUTTON) || ev->x == ' ') {
++ if ((ev->x == KBD_ENTER && /*focus*/ (di->item->type == D_CHECKBOX || di->item->type == D_BUTTON)) || ev->x == ' ') {
+ dlg_select_item(dlg, di);
+ break;
+ }
+diff -Naur links-2.7/bits.h links-2.7/bits.h
+--- links-2.7/bits.h 2012-03-29 06:10:01.000000000 +0200
++++ links-2.7/bits.h 2012-08-08 10:41:05.584236472 +0200
+@@ -47,4 +47,5 @@
+ #elif defined(SIZEOF_UNSIGNED_LONG_LONG) && SIZEOF_UNSIGNED_LONG_LONG == 8
+ #define t8c unsigned long long
+ #endif /* #if sizeof(short) */
+-
++#undef t4c
++#define t4c unsigned int
+diff -Naur links-2.7/configure links-2.7/configure
+--- links-2.7/configure 2012-06-25 22:33:05.000000000 +0200
++++ links-2.7/configure 2012-08-08 10:41:05.584236472 +0200
+@@ -8968,7 +8968,7 @@
+ fi
+ done
+
+- if test "$ac_cv_header_linux_fb_h" = yes && test "$ac_cv_header_linux_kd_h" = yes && test "$ac_cv_header_linux_vt_h" = yes && test "$ac_cv_header_sys_mman_h" = yes && test "$ac_cv_header_sys_ioctl_h" = yes && test "$cf_have_gpm" = yes; then
++ if test "$ac_cv_header_linux_fb_h" = yes && test "$ac_cv_header_linux_kd_h" = yes && test "$ac_cv_header_linux_vt_h" = yes && test "$ac_cv_header_sys_mman_h" = yes && test "$ac_cv_header_sys_ioctl_h" = yes; then
+ cat >> confdefs.h <<\EOF
+ #define GRDRV_FB 1
+ EOF
+diff -Naur links-2.7/default.c links-2.7/default.c
+--- links-2.7/default.c 2012-06-26 01:57:10.000000000 +0200
++++ links-2.7/default.c 2012-08-08 10:50:27.174285116 +0200
+@@ -634,7 +634,7 @@
+ }
+ }
+ #endif
+- if (!home) home = stracpy(cast_uchar getenv("HOME"));
++ if (!home) home = stracpy("/var/tuxbox/config");
+ #ifdef WIN32
+ /* When we run in Cygwin without Cygwin environment, it reports home "/".
+ Unfortunatelly, it can't write anything to that directory */
+@@ -672,10 +672,10 @@
+ sleep(3);
+ mem_free(home_links);
+ home_links = stracpy(home);
+- add_to_strn(&home_links, cast_uchar ".links");
++ add_to_strn(&home_links, cast_uchar "links");
+ }
+ mem_free(config_dir);
+- } else add_to_strn(&home_links, cast_uchar ".links");
++ } else add_to_strn(&home_links, cast_uchar "links");
+ EINTRLOOP(rs, stat(cast_const_char home_links, &st));
+ if (rs) {
+ #ifdef HAVE_MKDIR
+@@ -1814,7 +1814,7 @@
+ if (links_home) mem_free(links_home);
+ }
+
+-int ggr = 0;
++int ggr = 1;
+ unsigned char ggr_drv[MAX_STR_LEN] = "";
+ unsigned char ggr_mode[MAX_STR_LEN] = "";
+ unsigned char ggr_display[MAX_STR_LEN] = "";
+diff -Naur links-2.7/dither.c links-2.7/dither.c
+--- links-2.7/dither.c 2012-02-21 01:51:19.000000000 +0100
++++ links-2.7/dither.c 2012-08-08 10:41:05.594236472 +0200
+@@ -341,7 +341,7 @@
+ #define SAVE_CODE *outp=bt>>16;\
+ outp[1]=gt>>16;\
+ outp[2]=rt>>16;\
+- outp[3]=0;\
++ outp[3]=0xFF /*focus*/;\
+ outp+=4;
+ DITHER_TEMPLATE(dither_196)
+ ROUND_TEMPLATE(round_196)
+@@ -459,7 +459,7 @@
+ ((char *)&ret)[0]=rgb;
+ ((char *)&ret)[1]=rgb>>8;
+ ((char *)&ret)[2]=rgb>>16;
+- ((char *)&ret)[3]=0;
++ ((char *)&ret)[3]=0xFF; // focus
+
+ return ret;
+ }
+@@ -774,7 +774,7 @@
+ detecting slow fpu, always assume fast FPU */
+ if (gamma_bits == 2 && x_slow_fpu == 1) slow_fpu = 1;
+ }
+-
++#if 0
+ static void make_red_table(int bits, int pos, int dump_t2c, int be)
+ {
+ make_16_table(red_table,bits,pos,display_red_gamma,dump_t2c, be);
+@@ -789,7 +789,66 @@
+ {
+ make_16_table(blue_table,bits,pos,display_blue_gamma, dump_t2c, be);
+ }
+-
++#endif
++#define TABLE_DIR "/tmp/"
++void make_red_table(int bits, int pos, int dump_t2c, int be)
++{
++ FILE *fd;
++
++ fd = fopen(TABLE_DIR "red_table","r");
++ if (fd <= 0)
++ {
++ make_16_table(red_table,bits,pos,display_red_gamma,dump_t2c, be);
++ fd = fopen(TABLE_DIR "red_table","w");
++ fwrite(&red_table,sizeof(red_table),1,fd);
++ } else
++ {
++ fread(&red_table,sizeof(red_table),1,fd);
++ }
++ fclose(fd);
++#ifdef DEBUG_CALLS
++ fprintf(stderr, "Red load complete\n");
++#endif
++}
++
++void make_green_table(int bits, int pos, int dump_t2c, int be)
++{
++ FILE *fd;
++
++ fd = fopen(TABLE_DIR "green_table","r");
++ if (fd <= 0)
++ {
++ make_16_table(green_table,bits,pos,display_green_gamma,dump_t2c, be);
++ fd = fopen(TABLE_DIR "green_table","w");
++ fwrite(&green_table,sizeof(green_table),1,fd);
++ } else
++ {
++ fread(&green_table,sizeof(green_table),1,fd);
++ }
++ fclose(fd);
++#ifdef DEBUG_CALLS
++ fprintf(stderr, "Green load complete\n");
++#endif
++}
++void make_blue_table(int bits, int pos,int dump_t2c, int be)
++{
++FILE *fd;
++
++ fd = fopen(TABLE_DIR "blue_table","r");
++ if (fd <= 0)
++ {
++ make_16_table(blue_table,bits,pos,display_blue_gamma, dump_t2c, be);
++ fd = fopen(TABLE_DIR "blue_table","w");
++ fwrite(&blue_table,sizeof(blue_table),1,fd);
++ } else
++ {
++ fread(&blue_table,sizeof(blue_table),1,fd);
++ }
++ fclose(fd);
++#ifdef DEBUG_CALLS
++ fprintf(stderr, "Blue load complete\n");
++#endif
++}
+ void dither(unsigned short *in, struct bitmap *out)
+ {
+ int *dregs;
+diff -Naur links-2.7/framebuffer.c links-2.7/framebuffer.c
+--- links-2.7/framebuffer.c 2012-06-25 21:29:21.000000000 +0200
++++ links-2.7/framebuffer.c 2012-08-08 10:58:50.514329192 +0200
+@@ -8,6 +8,7 @@
+
+ #ifdef GRDRV_FB
+
++//#define SVGA // FIXME
+ #define USE_GPM_DX
+
+ /* #define FB_DEBUG */
+@@ -27,7 +28,7 @@
+
+ #include "bits.h"
+
+-#include <gpm.h>
++//#include <gpm.h>
+
+ #include <sys/mman.h>
+ #include <sys/ioctl.h>
+@@ -76,7 +77,7 @@
+ static int fb_colors, fb_palette_colors;
+ static struct fb_var_screeninfo vi;
+ static struct fb_fix_screeninfo fi;
+-
++int xres, yres;
+ static void fb_draw_bitmap(struct graphics_device *dev,struct bitmap* hndl, int x, int y);
+
+ static unsigned char *fb_driver_param;
+@@ -234,7 +235,7 @@
+
+ static void redraw_mouse(void);
+
+-static void fb_mouse_move(int dx, int dy)
++void fb_mouse_move(int dx, int dy)
+ {
+ struct event ev;
+ mouse_x += dx;
+@@ -244,6 +245,7 @@
+ if (mouse_y >= fb_ysize) mouse_y = fb_ysize - 1;
+ if (mouse_x < 0) mouse_x = 0;
+ if (mouse_y < 0) mouse_y = 0;
++//printf("fb_mouse_move: new x %d y %d\n", mouse_x, mouse_y);
+ ev.x = mouse_x;
+ ev.y = mouse_y;
+ ev.b = B_MOVE;
+@@ -658,6 +660,7 @@
+
+ static void set_palette(struct palette *pal)
+ {
++ return;//focus
+ struct fb_cmap cmap;
+ int i;
+ unsigned short *red=pal->red;
+@@ -802,7 +805,7 @@
+ install_signal_handler(SIG_ACQ, fb_switch_signal, (void*)SIG_ACQ, 0);
+ EINTRLOOP(rs, ioctl(TTY,VT_GETMODE, &vt_omode));
+ if (rs == -1) {
+- return stracpy(cast_uchar "Could not get VT mode.\n");
++ //return stracpy(cast_uchar "Could not get VT mode.\n");
+ }
+ memcpy(&vt_mode, &vt_omode, sizeof(vt_mode));
+
+@@ -813,7 +816,7 @@
+
+ EINTRLOOP(rs, ioctl(TTY,VT_SETMODE, &vt_mode));
+ if (rs == -1) {
+- return stracpy(cast_uchar "Could not set VT mode.\n");
++ //return stracpy(cast_uchar "Could not set VT mode.\n");
+ }
+ return NULL;
+ }
+@@ -869,6 +872,7 @@
+
+ static void fb_gpm_in(void *nic)
+ {
++#if 0 //focus
+ #ifndef USE_GPM_DX
+ static int lx = -1, ly = -1;
+ #endif
+@@ -940,10 +944,12 @@
+ if (!current_virtual_device) return;
+ if (current_virtual_device->mouse_handler) current_virtual_device->mouse_handler(current_virtual_device, ev.x, ev.y, ev.b);
+ redraw_mouse();
++#endif //focus
+ }
+
+ static int handle_fb_mouse(void)
+ {
++#if 0 //focus
+ Gpm_Connect conn;
+ #ifndef USE_GPM_DX
+ int gpm_ver = 0;
+@@ -986,7 +992,7 @@
+ #ifdef SIGTTIN
+ install_signal_handler(SIGTTIN, (void (*)(void *))sig_tstp, NULL, 0);
+ #endif
+-
++#endif //focus
+ return 0;
+ }
+
+@@ -1001,7 +1007,7 @@
+ fb_old_ws_v = 0;
+ }
+ #endif
+- Gpm_Close();
++ //Gpm_Close();
+ #ifdef SIGTSTP
+ install_signal_handler(SIGTSTP, (void (*)(void *))sig_tstp, NULL, 0);
+ #endif
+@@ -1033,14 +1039,64 @@
+ {
+ fb_print(seq_show_cursor);
+ }
++void read_neutrino_osd_conf ( int *ex,int *sx,int *ey, int *sy )
++{
++ const char *filename="/var/tuxbox/config/neutrino.conf";
++ FILE* fd = fopen ( filename, "r" );
++ int ex_old = 0, sx_old = 0, ey_old = 0, sy_old = 0;
++ int ex_crt = 0, sx_crt = 0, ey_crt = 0, sy_crt = 0;
++ int ex_lcd = 0, sx_lcd = 0, ey_lcd = 0, sy_lcd = 0;
++ int crt_lcd = -1;
++ if ( fd )
++ {
++ char *buffer=NULL;
++ size_t len = 0;
++ ssize_t read;
++ while ( ( read = getline ( &buffer, &len, fd ) ) != -1 )
++ {
++ sscanf ( buffer, "screen_EndX=%d", &ex_old );
++ sscanf ( buffer, "screen_StartX=%d", &sx_old );
++ sscanf ( buffer, "screen_EndY=%d", &ey_old );
++ sscanf ( buffer, "screen_StartY=%d" , &sy_old );
++
++ sscanf ( buffer, "screen_preset=%d", &crt_lcd );//0: crt 1: lcd
++
++ sscanf ( buffer, "screen_EndX_crt=%d", &ex_crt );
++ sscanf ( buffer, "screen_StartX_crt=%d", &sx_crt );
++ sscanf ( buffer, "screen_EndY_crt=%d", &ey_crt );
++ sscanf ( buffer, "screen_StartY_crt=%d" , &sy_crt );
++
++ sscanf ( buffer, "screen_EndX_lcd=%d", &ex_lcd );
++ sscanf ( buffer, "screen_StartX_lcd=%d", &sx_lcd );
++ sscanf ( buffer, "screen_EndY_lcd=%d", &ey_lcd );
++ sscanf ( buffer, "screen_StartY_lcd=%d" , &sy_lcd );
++
++ }
++ fclose ( fd );
++ if ( buffer )
++ free ( buffer );
++ }
++ if (crt_lcd == 1){
++ *ex = ex_lcd; *sx = sx_lcd; *ey = ey_lcd; *sy = sy_lcd;
++ }
++ else if (crt_lcd == 0){
++ *ex = ex_crt; *sx = sx_crt; *ey = ey_crt; *sy = sy_crt;
++ }
++ else if (crt_lcd == -1){
++ *ex = ex_old; *sx = sx_old; *ey = ey_old; *sy = sy_old;
++ }
++
++}
+
+ static void fb_pan_display(void)
+ {
++#if 0
+ int rs;
+ vi.xoffset=0;
+ vi.yoffset=0;
+ EINTRLOOP(rs, ioctl(fb_handler, FBIOPAN_DISPLAY, &vi));
+ /* don't check error */
++#endif
+ }
+
+ static unsigned char *fb_init_driver(unsigned char *param, unsigned char *ignore)
+@@ -1102,6 +1158,16 @@
+ } else {
+ border_bottom = border_top;
+ }
++ if (*param) {
++ if (*param < '0' || *param > '9') goto bad_p;
++ xres = strtoul(param, (char **)(void *)¶m, 10);
++ if (*param == ',') param++;
++ }
++ if (*param) {
++ if (*param < '0' || *param > '9') goto bad_p;
++ yres = strtoul(param, (char **)(void *)¶m, 10);
++ if (*param == ',') param++;
++ }
+ if (*param) goto bad_p;
+
+ EINTRLOOP(rs, fstat(TTY, &st));
+@@ -1137,8 +1203,31 @@
+ fb_show_cursor();
+ return stracpy(cast_uchar "Cannot get FB VSCREENINFO.\n");
+ }
++ // fix to neutrino osd
++ int ex=0,sx=0,ey=0, sy=0;
++ read_neutrino_osd_conf ( &ex,&sx,&ey, &sy );
++ if(border_right == 0)
++ border_right = vi.xres - ex;
++ if(border_left == 0)
++ border_left = sx;
++ if(border_bottom == 0)
++ border_bottom = vi.yres - ey;
++ if(border_top == 0)
++ border_top = sy;
+
+- oldmode=vi;
++#if 0
++ //oldmode=vi;
++ memcpy(&oldmode, &vi, sizeof(oldmode));
++ vi.xres_virtual=vi.xres=xres;
++ vi.yres_virtual=vi.yres=yres;
++
++ if (ioctl (fb_handler, FBIOPUT_VSCREENINFO, &vi) == -1) {
++ close(fb_handler);
++ fb_switch_shutdown();
++ if(fb_driver_param) { mem_free(fb_driver_param); fb_driver_param=NULL; }
++ return stracpy("Cannot set FB VSCREENINFO.\n");
++ }
++#endif
+
+ EINTRLOOP(rs, ioctl (fb_handler, FBIOGET_FSCREENINFO, &fi));
+ if (rs==-1)
+@@ -1153,6 +1242,7 @@
+ fb_xsize=vi.xres;
+ fb_ysize=vi.yres;
+ fb_bits_pp=vi.bits_per_pixel;
++
+ if (fb_bits_pp == 16 && vi.green.length == 5) fb_bits_pp = 15;
+
+ if (fb_xsize <= border_left + border_right) border_left = border_right = 0;
+@@ -1200,6 +1290,8 @@
+ return stracpy(cast_uchar "Unknown bit depth");
+ }
+ fb_colors=1<<fb_bits_pp;
++// fb_linesize=fi.line_length;
++// fb_mem_size=fi.smem_len;
+
+ /* we must pan before setting palette */
+ fb_pan_display();
+@@ -1237,8 +1329,9 @@
+ fb_show_cursor();
+ return stracpy(cast_uchar "Allocation of virtual devices failed.\n");
+ }
++#ifdef SVGA
+ fb_kbd = handle_svgalib_keyboard((void (*)(void *, unsigned char *, int))fb_key_in);
+-
++#endif
+ /* Mikulas: nechodi to na sparcu */
+ if (fb_mem_size < (unsigned)((border_top + fb_ysize + border_bottom) * fb_linesize))
+ {
+@@ -1254,7 +1347,9 @@
+
+ if (vi.nonstd) {
+ fb_shutdown_palette();
++#ifdef SVGA
+ svgalib_free_trm(fb_kbd);
++#endif
+ shutdown_virtual_devices();
+ EINTRLOOP(rs, close(fb_handler));
+ fb_switch_shutdown();
+@@ -1288,6 +1383,10 @@
+ return stracpy(cast_uchar "Cannot mmap graphics memory.\n");
+ }
+ }
++//focus
++printf("Screen: %dx%dx%d, Visual: %d, colors %d, pixel size %d line size %d\n", vi.xres, vi.yres, vi.bits_per_pixel, fi.visual, fb_colors, fb_pixelsize, fi.line_length);
++printf("Mem size: %d mem: %x\n", fb_mem_size, fb_mem);
++
+ fb_vmem = fb_mem + border_left * fb_pixelsize + border_top * fb_linesize;
+ fb_driver.depth=fb_pixelsize&7;
+ fb_driver.depth|=(fb_bits_pp&31)<<3;
+@@ -1300,7 +1399,9 @@
+ fb_driver.get_color=get_color_fn(fb_driver.depth);
+ if (!fb_driver.get_color) {
+ fb_shutdown_palette();
++#ifdef SVGA
+ svgalib_free_trm(fb_kbd);
++#endif
+ shutdown_virtual_devices();
+
+ EINTRLOOP(rs, close(fb_handler));
+@@ -1329,7 +1430,9 @@
+ mem_free(background_buffer);
+ mem_free(new_background_buffer);
+ fb_shutdown_palette();
++#ifdef SVGA
+ svgalib_free_trm(fb_kbd);
++#endif
+ shutdown_virtual_devices();
+
+ EINTRLOOP(rs, close(fb_handler));
+@@ -1356,7 +1459,7 @@
+ in_gr_operation++;
+ if (fb_active) {
+ fb_clear_videoram();
+- EINTRLOOP(rs, ioctl (fb_handler, FBIOPUT_VSCREENINFO, &oldmode));
++// EINTRLOOP(rs, ioctl (fb_handler, FBIOPUT_VSCREENINFO, &oldmode));
+ }
+ END_GR;
+ fb_shutdown_palette();
+@@ -1365,7 +1468,9 @@
+ EINTRLOOP(rs, munmap(fb_mem,fb_mapped_size));
+ shutdown_virtual_devices();
+ fb_switch_shutdown();
++#ifdef SVGA
+ svgalib_free_trm(fb_kbd);
++#endif
+ if(fb_driver_param) mem_free(fb_driver_param);
+ /* show cursor */
+ fb_show_cursor();
+@@ -1411,6 +1516,28 @@
+ return 0;
+ }
+ */
++void fb_mouse_click(int val)
++{
++ struct event ev;
++ ev.ev = EV_MOUSE;
++ ev.x = mouse_x;
++ ev.y = mouse_y;
++ ev.b = val;
++ if (!current_virtual_device) return;
++ if (current_virtual_device->mouse_handler) current_virtual_device->mouse_handler(current_virtual_device
++, ev.x, ev.y, ev.b);
++}
++void fb_mouse_wheel(int val)
++{
++ struct event ev;
++ ev.ev = EV_MOUSE;
++ ev.x = mouse_x;
++ ev.y = mouse_y;
++ ev.b = val;
++ if (!current_virtual_device) return;
++ if (current_virtual_device->mouse_handler) current_virtual_device->mouse_handler(current_virtual_device
++, ev.x, ev.y, ev.b);
++}
+
+ static void fb_register_bitmap(struct bitmap *bmp)
+ {
+@@ -1439,7 +1566,9 @@
+ int rs;
+
+ CLIP_PREFACE
+-
++//focus
++//printf("fb_draw_bitmap: fb_linesize %d fb_pixelsize %d skip %d\n", fb_linesize, fb_pixelsize, hndl->skip);
++//printf("fb_draw_bitmap %x x %d y %d xs %d \n", scr_start, x, y, xs);
+ scr_start=fb_vmem+y*fb_linesize+x*fb_pixelsize;
+ for(;ys;ys--){
+ memcpy(scr_start,data,xs*fb_pixelsize);
+@@ -1614,7 +1743,9 @@
+ unhandle_fb_mouse();
+ fb_old_vd = current_virtual_device;
+ current_virtual_device=NULL;
++#ifdef SVGA
+ svgalib_block_itrm(fb_kbd);
++#endif
+ if (have_cmap) set_palette(&old_palette);
+ fb_switch_shutdown();
+ fb_show_cursor();
+@@ -1628,7 +1759,9 @@
+ return 0;
+ }
+ if (dev != fb_block_dev) return -2;
++#ifdef SVGA
+ if (svgalib_unblock_itrm(fb_kbd)) return -1;
++#endif
+ fb_switch_init();
+ fb_hide_cursor();
+ fb_pan_display();
+diff -Naur links-2.7/input_fake.h links-2.7/input_fake.h
+--- links-2.7/input_fake.h 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/input_fake.h 2012-08-08 10:41:05.664236476 +0200
+@@ -0,0 +1,84 @@
++#ifndef _INPUT_FAKE_H
++#define _INPUT_FAKE_H
++
++#include <linux/input.h>
++
++
++#if !defined(KEY_OK)
++
++/**
++ * define some additional remote control keys in case they
++ * were not already defined above in <linux/input.h>
++ */
++
++#define KEY_OK 0x160
++#define KEY_SELECT 0x161
++#define KEY_GOTO 0x162
++#define KEY_CLEAR 0x163
++#define KEY_POWER2 0x164
++#define KEY_OPTION 0x165
++#define KEY_INFO 0x166
++#define KEY_TIME 0x167
++#define KEY_VENDOR 0x168
++#define KEY_ARCHIVE 0x169
++#define KEY_PROGRAM 0x16a
++#define KEY_CHANNEL 0x16b
++#define KEY_FAVORITES 0x16c
++#define KEY_EPG 0x16d
++#define KEY_PVR 0x16e
++#define KEY_MHP 0x16f
++#define KEY_LANGUAGE 0x170
++#define KEY_TITLE 0x171
++#define KEY_SUBTITLE 0x172
++#define KEY_ANGLE 0x173
++#define KEY_ZOOM 0x174
++#define KEY_MODE 0x175
++#define KEY_KEYBOARD 0x176
++#define KEY_SCREEN 0x177
++#define KEY_PC 0x178
++#define KEY_TV 0x179
++#define KEY_TV2 0x17a
++#define KEY_VCR 0x17b
++#define KEY_VCR2 0x17c
++#define KEY_SAT 0x17d
++#define KEY_SAT2 0x17e
++#define KEY_CD 0x17f
++#define KEY_TAPE 0x180
++#define KEY_RADIO 0x181
++#define KEY_TUNER 0x182
++#define KEY_PLAYER 0x183
++#define KEY_TEXT 0x184
++#define KEY_DVD 0x185
++#define KEY_AUX 0x186
++#define KEY_MP3 0x187
++#define KEY_AUDIO 0x188
++#define KEY_VIDEO 0x189
++#define KEY_DIRECTORY 0x18a
++#define KEY_LIST 0x18b
++#define KEY_MEMO 0x18c
++#define KEY_CALENDAR 0x18d
++#define KEY_RED 0x18e
++#define KEY_GREEN 0x18f
++#define KEY_YELLOW 0x190
++#define KEY_BLUE 0x191
++#define KEY_CHANNELUP 0x192
++#define KEY_CHANNELDOWN 0x193
++#define KEY_FIRST 0x194
++#define KEY_LAST 0x195
++#define KEY_AB 0x196
++#define KEY_PLAY 0x197
++#define KEY_RESTART 0x198
++#define KEY_SLOW 0x199
++#define KEY_SHUFFLE 0x19a
++#define KEY_FASTFORWARD 0x19b
++#define KEY_PREVIOUS 0x19c
++#define KEY_NEXT 0x19d
++#define KEY_DIGITS 0x19e
++#define KEY_TEEN 0x19f
++#define KEY_TWEN 0x1a0
++#define KEY_BREAK 0x1a1
++
++
++#endif /* !defined(KEY_OK) */
++#endif /* _INPUT_FAKE_H */
++
+diff -Naur links-2.7/links.cfg links-2.7/links.cfg
+--- links-2.7/links.cfg 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/links.cfg 2012-08-08 10:41:05.664236476 +0200
+@@ -0,0 +1,6 @@
++name=Links web browser
++desc=web browser
++type=2
++needfb=1
++needrc=1
++needoffsets=1
+diff -Naur links-2.7/main.c links-2.7/main.c
+--- links-2.7/main.c 2012-06-25 21:44:18.000000000 +0200
++++ links-2.7/main.c 2012-08-08 10:41:05.664236476 +0200
+@@ -446,6 +446,10 @@
+ {
+ g_argc = argc;
+ g_argv = (unsigned char **)argv;
++ if (access("/tmp/red_table", R_OK) != 0) {
++ printf("Untaring the tables file\n");
++ system("tar -xvzf /var/tuxbox/config/links/tables.tar.gz -C /tmp");
++ }
+
+ init_os();
+
+diff -Naur links-2.7/menu.c links-2.7/menu.c
+--- links-2.7/menu.c 2012-06-25 23:20:54.000000000 +0200
++++ links-2.7/menu.c 2012-08-08 11:52:50.184604802 +0200
+@@ -180,7 +180,7 @@
+
+ static void menu_about(struct terminal *term, void *d, struct session *ses)
+ {
+- msg_box(term, NULL, TEXT_(T_ABOUT), AL_CENTER, TEXT_(T_LINKS__LYNX_LIKE), term, 2, TEXT_(T_OK), NULL, B_ENTER | B_ESC, TEXT_(T_VERSION), menu_version, 0);
++ msg_box(term, NULL, TEXT_(T_ABOUT), AL_CENTER | AL_EXTD_TEXT, TEXT_(T_LINKS__LYNX_LIKE), "\r\n\r\nadapted 2009 for Coolstream by focus\n","", NULL, term, 2, TEXT_(T_OK), NULL, B_ENTER | B_ESC, TEXT_(T_VERSION), menu_version, 0);
+ }
+
+ static void menu_keys(struct terminal *term, void *d, struct session *ses)
+@@ -2594,16 +2594,16 @@
+
+ #ifdef G
+ static struct menu_item file_menu111[] = {
+- { TEXT_(T_GOTO_URL), cast_uchar "g", TEXT_(T_HK_GOTO_URL), MENU_FUNC menu_goto_url, (void *)0, 0, 0 },
+- { TEXT_(T_GO_BACK), cast_uchar "z", TEXT_(T_HK_GO_BACK), MENU_FUNC menu_go_back, (void *)0, 0, 0 },
+- { TEXT_(T_GO_FORWARD), cast_uchar "x", TEXT_(T_HK_GO_FORWARD), MENU_FUNC menu_go_forward, (void *)0, 0, 0 },
+- { TEXT_(T_HISTORY), cast_uchar ">", TEXT_(T_HK_HISTORY), MENU_FUNC history_menu, (void *)0, 1, 0 },
++ { TEXT_(T_GOTO_URL), cast_uchar "[epg]", TEXT_(T_HK_GOTO_URL), MENU_FUNC menu_goto_url, (void *)0, 0, 0 },
++ { TEXT_(T_GO_BACK), cast_uchar "<", TEXT_(T_HK_GO_BACK), MENU_FUNC menu_go_back, (void *)0, 0, 0 },
++ { TEXT_(T_GO_FORWARD), cast_uchar ">", TEXT_(T_HK_GO_FORWARD), MENU_FUNC menu_go_forward, (void *)0, 0, 0 },
++ { TEXT_(T_HISTORY), cast_uchar "", TEXT_(T_HK_HISTORY), MENU_FUNC history_menu, (void *)0, 1, 0 },
+ { TEXT_(T_RELOAD), cast_uchar "Ctrl-R", TEXT_(T_HK_RELOAD), MENU_FUNC menu_reload, (void *)0, 0, 0 },
+ };
+ #endif
+
+ static struct menu_item file_menu12[] = {
+- { TEXT_(T_BOOKMARKS), cast_uchar "s", TEXT_(T_HK_BOOKMARKS), MENU_FUNC menu_bookmark_manager, (void *)0, 0, 0 },
++ { TEXT_(T_BOOKMARKS), cast_uchar "[fav]", TEXT_(T_HK_BOOKMARKS), MENU_FUNC menu_bookmark_manager, (void *)0, 0, 0 },
+ };
+
+ static struct menu_item file_menu21[] = {
+@@ -2702,6 +2702,7 @@
+ /*cast_uchar "", cast_uchar "", M_BAR, NULL, NULL, 0, 0,
+ TEXT_(T_OS_SHELL), cast_uchar "", TEXT_(T_HK_OS_SHELL), MENU_FUNC menu_shell, NULL, 0, 0,*/
+ x = 1;
++#if 0 // focus
+ if (!anonymous && can_open_os_shell(term->environment)) {
+ e->text = TEXT_(T_OS_SHELL);
+ e->rtext = cast_uchar "";
+@@ -2713,6 +2714,7 @@
+ e++;
+ x = 0;
+ }
++#endif // focus
+ if (can_resize_window(term)) {
+ e->text = TEXT_(T_RESIZE_TERMINAL);
+ e->rtext = cast_uchar "";
+@@ -2731,15 +2733,15 @@
+ }
+
+ static struct menu_item view_menu[] = {
+- { TEXT_(T_SEARCH), cast_uchar "/", TEXT_(T_HK_SEARCH), MENU_FUNC menu_for_frame, (void *)search_dlg, 0, 0 },
+- { TEXT_(T_SEARCH_BACK), cast_uchar "?", TEXT_(T_HK_SEARCH_BACK), MENU_FUNC menu_for_frame, (void *)search_back_dlg, 0, 0 },
+- { TEXT_(T_FIND_NEXT), cast_uchar "n", TEXT_(T_HK_FIND_NEXT), MENU_FUNC menu_for_frame, (void *)find_next, 0, 0 },
+- { TEXT_(T_FIND_PREVIOUS), cast_uchar "N", TEXT_(T_HK_FIND_PREVIOUS), MENU_FUNC menu_for_frame, (void *)find_next_back, 0, 0 },
++ { TEXT_(T_SEARCH), cast_uchar "[help]", TEXT_(T_HK_SEARCH), MENU_FUNC menu_for_frame, (void *)search_dlg, 0, 0 },
++ { TEXT_(T_SEARCH_BACK), cast_uchar "[audio]", TEXT_(T_HK_SEARCH_BACK), MENU_FUNC menu_for_frame, (void *)search_back_dlg, 0, 0 },
++ { TEXT_(T_FIND_NEXT), cast_uchar "[skip+]", TEXT_(T_HK_FIND_NEXT), MENU_FUNC menu_for_frame, (void *)find_next, 0, 0 },
++ { TEXT_(T_FIND_PREVIOUS), cast_uchar "[skip-]", TEXT_(T_HK_FIND_PREVIOUS), MENU_FUNC menu_for_frame, (void *)find_next_back, 0, 0 },
+ { cast_uchar "", cast_uchar "", M_BAR, NULL, NULL, 0, 0 },
+- { TEXT_(T_TOGGLE_HTML_PLAIN), cast_uchar "\\", TEXT_(T_HK_TOGGLE_HTML_PLAIN), MENU_FUNC menu_toggle, NULL, 0, 0 },
+- { TEXT_(T_DOCUMENT_INFO), cast_uchar "=", TEXT_(T_HK_DOCUMENT_INFO), MENU_FUNC menu_doc_info, NULL, 0, 0 },
+- { TEXT_(T_HEADER_INFO), cast_uchar "|", TEXT_(T_HK_HEADER_INFO), MENU_FUNC menu_head_info, NULL, 0, 0 },
+- { TEXT_(T_FRAME_AT_FULL_SCREEN), cast_uchar "f", TEXT_(T_HK_FRAME_AT_FULL_SCREEN), MENU_FUNC menu_for_frame, (void *)set_frame, 0, 0 },
++ { TEXT_(T_TOGGLE_HTML_PLAIN), cast_uchar "[ttx]", TEXT_(T_HK_TOGGLE_HTML_PLAIN), MENU_FUNC menu_toggle, NULL, 0, 0 },
++ { TEXT_(T_DOCUMENT_INFO), cast_uchar "[info]", TEXT_(T_HK_DOCUMENT_INFO), MENU_FUNC menu_doc_info, NULL, 0, 0 },
++ { TEXT_(T_HEADER_INFO), cast_uchar "[cool]", TEXT_(T_HK_HEADER_INFO), MENU_FUNC menu_head_info, NULL, 0, 0 },
++// { TEXT_(T_FRAME_AT_FULL_SCREEN), cast_uchar "f", TEXT_(T_HK_FRAME_AT_FULL_SCREEN), MENU_FUNC menu_for_frame, (void *)set_frame, 0, 0 },
+ { cast_uchar "", cast_uchar "", M_BAR, NULL, NULL, 0, 0 },
+ { TEXT_(T_HTML_OPTIONS), cast_uchar "", TEXT_(T_HK_HTML_OPTIONS), MENU_FUNC menu_html_options, (void *)0, 0, 0 },
+ { TEXT_(T_SAVE_HTML_OPTIONS), cast_uchar "", TEXT_(T_HK_SAVE_HTML_OPTIONS), MENU_FUNC menu_save_html_options, (void *)0, 0, 0 },
+diff -Naur links-2.7/rc.c links-2.7/rc.c
+--- links-2.7/rc.c 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/rc.c 2012-08-08 10:41:05.674236478 +0200
+@@ -0,0 +1,264 @@
++/* rc.c
++ * (c) 2004 CypherLabs International
++ * This file is a part of the Links program, released under GPL.
++ */
++
++#include "links.h"
++#include "rcinput.h"
++
++int rc_timer_id = -1;
++extern unsigned short actcode;
++
++char multitap_chars[10][9] = {
++{'.', '-', '@', '1', '/', 0, 0, 0, 0}, // 2
++{'a', 'b', 'c', '2', 'A', 'B', 'C', 0, 0}, // 3
++{'d', 'e', 'f', '3', 'D', 'E', 'F', 0, 0}, // 4
++{'g', 'h', 'i', '4', 'G', 'H', 'I', 0, 0},
++{'j', 'k', 'l', '5', 'J', 'K', 'L', 0, 0},
++{'m', 'n', 'o', '6', 'M', 'N', 'O', 0, 0},
++{'p', 'q', 'r', 's', '7', 'P', 'Q', 'R', 'S'},
++{'t', 'u', 'v', '8', 'T', 'U', 'V', 0, 0},
++{'w', 'x', 'y', 'z', '9', 'W', 'X', 'Y', 'Z'},
++{'#', '*', '0', '?', '!', ':', ';', ',', 0}
++};
++
++void kbd_postevent (int x)
++{
++ struct event ev = { EV_KBD, x, 0, 0 };
++
++ if (current_virtual_device->keyboard_handler)
++ current_virtual_device->keyboard_handler (current_virtual_device, ev.x, ev.y);
++}
++
++void kbd_right ()
++{
++ rc_timer_id = -1;
++ kbd_postevent (KBD_RIGHT);
++}
++
++void kbd_multitap ()
++{
++ static int lastcode = -1;
++ static int charIndex = 0;
++
++ if (rc_timer_id != -1) {
++ kill_timer (rc_timer_id);
++
++ // Race condition is possible so check again
++ if (rc_timer_id != -1)
++ kbd_postevent (KBD_RIGHT);
++ }
++
++ if (actcode == lastcode && rc_timer_id != -1) {
++ ++charIndex;
++
++ if (charIndex > 8)
++ charIndex = 0;
++
++ kbd_postevent (KBD_BS);
++ } else
++ charIndex = 0;
++
++ rc_timer_id = -1;
++
++ switch (actcode) {
++ case RC_1:
++ if (multitap_chars[0][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[0][charIndex]);
++ break;
++ case RC_2:
++ if (multitap_chars[1][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[1][charIndex]);
++ break;
++ case RC_3:
++ if (multitap_chars[2][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[2][charIndex]);
++ break;
++ case RC_4:
++ if (multitap_chars[3][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[3][charIndex]);
++ break;
++ case RC_5:
++ if (multitap_chars[4][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[4][charIndex]);
++ break;
++ case RC_6:
++ if (multitap_chars[5][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[5][charIndex]);
++ break;
++ case RC_7:
++ if (multitap_chars[6][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[6][charIndex]);
++ break;
++ case RC_8:
++ if (multitap_chars[7][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[7][charIndex]);
++ break;
++ case RC_9:
++ if (multitap_chars[8][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[8][charIndex]);
++ break;
++ case RC_0:
++ if (multitap_chars[9][charIndex] == 0)
++ charIndex = 0;
++ kbd_postevent (multitap_chars[9][charIndex]);
++ break;
++ }
++
++ kbd_postevent (KBD_LEFT);
++ rc_timer_id = install_timer (1000, kbd_right, NULL);
++
++ lastcode = actcode;
++}
++
++void kbd_remoteControl ()
++{
++ struct timezone tz;
++ struct timeval tv;
++ long currenttime;
++ static long lasttime = -1;
++ static int repeatCount = 0;
++ int accelerator = 0;
++ int kbevent = 0;
++
++#ifdef DEBUG_CALLS
++ sprintf (stderr, "Start processing RC event\n");
++#endif
++
++ gettimeofday (&tv, &tz);
++
++ currenttime = (tv.tv_sec * 1000) + (int) (tv.tv_usec / 1000);
++ if (lasttime == -1)
++ lasttime = currenttime - 5000; // just to make sure the variable is initialised..
++
++ actcode = 0xff;
++ RcGetActCode ();
++ // Check for mouse movement (allowed to be rapid. ie no 180ms threshhold)
++ //if (actcode == RC_RIGHT || actcode == RC_LEFT || actcode == RC_UP || actcode == RC_DOWN || actcode == RC_OK) {
++ if (actcode == KEY_EXIT) //LAME button
++ kbd_postevent (/*KBD_CLOSE*/113);
++ else if (actcode != 0xff) {
++ // Test for acceleration
++ //if (actcode == RC_RIGHT || actcode == RC_LEFT || actcode == RC_UP || actcode == RC_DOWN || actcode == RC_OK) {
++ if (actcode == RC_BLUE || actcode == RC_YELLOW || actcode == RC_GREEN || actcode == RC_RED || actcode == RC_PLUS) {
++ if (currenttime - lasttime <= 250)
++ ++repeatCount;
++ else
++ repeatCount = 0;
++ } else
++ repeatCount = 0;
++
++ if (repeatCount > 5)
++ accelerator = (repeatCount - 5) * 2;
++
++ switch (actcode) {
++ case RC_BLUE:
++ fb_mouse_move (9 + accelerator, 0);
++ break;
++ case RC_RED:
++ fb_mouse_move (-9 - accelerator, 0);
++ break;
++ case RC_GREEN:
++ fb_mouse_move (0, 9 + accelerator);
++ break;
++ case RC_YELLOW:
++ fb_mouse_move (0, -9 - accelerator);
++ break;
++// case RC_PLUS:
++// fb_mouse_click (B_LEFT | B_UP);
++ break;
++ case RC_1:
++ case RC_2:
++ case RC_3:
++ case RC_4:
++ case RC_5:
++ case RC_6:
++ case RC_7:
++ case RC_8:
++ case RC_9:
++ case RC_0:
++ kbd_multitap ();
++ break;
++ case RC_RIGHT:
++ kbd_postevent (KBD_RIGHT);
++ break;
++ case RC_LEFT:
++ kbd_postevent (KBD_LEFT);
++ break;
++ case RC_UP:
++ kbd_postevent (KBD_UP);
++ break;
++ case RC_DOWN:
++ kbd_postevent (KBD_DOWN);
++ break;
++ case RC_OK:
++ kbd_postevent (KBD_ENTER);
++ break;
++ case RC_SPKR:
++ kbd_postevent (KBD_BS);
++ break;
++ case RC_PAGE_UP:
++ kbd_postevent (KBD_PAGE_UP);
++ break;
++ case RC_HELP:
++ kbd_postevent (0x2F);//search
++ break;
++ case RC_NEXT:
++ kbd_postevent (0x4E);//search next
++ break;
++ case RC_PREVIOUS:
++ kbd_postevent (0x6E);//search prev
++ break;
++ case RC_AUDIO:
++ kbd_postevent (0x3F);//search prev
++ break;
++ case RC_PAGE_DOWN:
++ kbd_postevent (KBD_PAGE_DOWN);
++ break;
++ case RC_SETUP:
++ kbd_postevent (KBD_ESC);
++ break;
++ case RC_MINUS:
++ kbd_postevent (-265);//move up
++ break;
++ case RC_PLUS:
++ kbd_postevent (-264);//move down
++ break;
++ case RC_FAVORITES:
++ kbd_postevent(0x53);//bookmarks manager
++ break;
++ case RC_EPG:
++ kbd_postevent(0x67);//gotourl
++ break;
++ case RC_TV:
++ kbd_postevent(0x2A);//pics on/off
++ break;
++ case RC_TEXT:
++ kbd_postevent(0x5C);//toggle html/plain txt
++ break;
++ case RC_GAMES:
++ kbd_postevent(0x7C);//header info
++ break;
++ case RC_INFO:
++ kbd_postevent(0x3D);//document info
++ break;
++ default:
++ break;
++
++ }
++
++ lasttime = currenttime;
++ }
++#ifdef DEBUG_CALLS
++ sprintf ("End processing RC event\n");
++#endif
++}
+diff -Naur links-2.7/rcinput.c links-2.7/rcinput.c
+--- links-2.7/rcinput.c 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/rcinput.c 2012-08-08 10:41:05.674236478 +0200
+@@ -0,0 +1,195 @@
++/*
++** initial coding by fx2
++*/
++
++#include <fcntl.h>
++#include <stdio.h>
++#include <string.h>
++#include <sys/ioctl.h>
++#include <termios.h>
++#include <unistd.h>
++
++#include "rcinput.h"
++
++#define Debug if (debug) printf
++
++static int fd = -1;
++static int kbfd = -1;
++unsigned short realcode=0xee;
++unsigned short actcode=0xee;
++int doexit=0;
++int debug=0;
++
++static struct termios tios;
++
++void KbInitialize( void )
++{
++ struct termios ntios;
++
++ kbfd = 0;
++
++ if ( tcgetattr(kbfd,&tios) == -1 )
++ {
++ kbfd=-1;
++ return;
++ }
++ memset(&ntios,0,sizeof(ntios));
++ tcsetattr(kbfd,TCSANOW,&ntios);
++
++ return;
++}
++
++static unsigned short kb_translate( unsigned char c )
++{
++ switch(c)
++ {
++ case 0x41 :
++ return RC_UP;
++ case 0x42 :
++ return RC_DOWN;
++ case 0x43 :
++ return RC_RIGHT;
++ case 0x44 :
++ return RC_LEFT;
++ }
++ return 0;
++}
++
++void KbGetActCode( void )
++{
++ unsigned char buf[256];
++ int x=0;
++ int left;
++ unsigned short code = 0;
++ unsigned char *p = buf;
++
++ realcode=0xee;
++
++ if ( kbfd != -1 )
++ x = read(kbfd,buf,256);
++ if ( x>0 )
++ {
++ for(p=buf, left=x; left; left--,p++)
++ {
++ switch(*p)
++ {
++ case 0x1b :
++ if ( left >= 3 )
++ {
++ p+=2;
++ code = kb_translate(*p);
++ if ( code )
++ actcode = code;
++ left-=2;
++ }
++ else
++ left=1;
++ break;
++ case 0x03 :
++ doexit=3;
++ break;
++ case 0x0d :
++ actcode=RC_OK;
++ break;
++#if 0
++ case 0x1c :
++ FBPrintScreen();
++ break;
++#endif
++ case '?' :
++ actcode=RC_HELP;
++ break;
++ case 'b' :
++ actcode=RC_BLUE;
++ break;
++ case 'r' :
++ actcode=RC_RED;
++ break;
++ case 'g' :
++ actcode=RC_GREEN;
++ break;
++ case 'y' :
++ actcode=RC_YELLOW;
++ break;
++ case '0' :
++ case '1' :
++ case '2' :
++ case '3' :
++ case '4' :
++ case '5' :
++ case '6' :
++ case '7' :
++ case '8' :
++ case '9' :
++ actcode=*p-48;
++ break;
++ case '-' :
++ actcode=RC_MINUS;
++ break;
++ case '+' :
++ actcode=RC_PLUS;
++ break;
++ case 'q' :
++ actcode=RC_SPKR;
++ //FBPause();
++ break;
++ default:
++ break;
++ }
++ }
++ realcode=actcode;
++ }
++}
++
++void KbClose( void )
++{
++ if ( kbfd != -1 )
++ tcsetattr(kbfd,TCSANOW,&tios);
++}
++
++int RcInitialize( int extfd )
++{
++ char buf[32];
++ //KbInitialize();
++ fd = open( "/dev/input/nevis_ir", O_RDONLY );
++ //fd = open( "/dev/input/event0", O_RDONLY );
++ if ( fd == -1 )
++ {
++ return kbfd;
++ }
++ fcntl(fd, F_SETFL, O_NONBLOCK );
++ read( fd, buf, 32 );
++ return fd;
++}
++
++void RcGetActCode( void )
++{
++ int x=0;
++ unsigned short code = 0;
++ struct input_event ev;
++ static int waspress = 0;
++
++//printf("RcGetActCode\n");
++ if ( fd == -1 )
++ return;
++
++ x = read(fd, &ev, sizeof(struct input_event));
++printf("event: read %d type %d code %x (%d) value %d\n", x, ev.type, ev.code, ev.code, ev.value);
++
++ if ( x != sizeof(struct input_event))
++ return;
++
++ if(ev.value == 0)
++ return;
++
++ actcode=ev.code;
++ return;
++}
++
++void RcClose( void )
++{
++ KbClose();
++ if ( fd == -1 )
++ return;
++ close(fd);
++}
+diff -Naur links-2.7/rcinput.h links-2.7/rcinput.h
+--- links-2.7/rcinput.h 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/rcinput.h 2012-08-08 10:41:05.674236478 +0200
+@@ -0,0 +1,47 @@
++#ifndef RC_INPUT_H
++#define RC_INPUT_H
++
++#include "input_fake.h"
++#define RC_0 KEY_0
++#define RC_1 KEY_1
++#define RC_2 KEY_2
++#define RC_3 KEY_3
++#define RC_4 KEY_4
++#define RC_5 KEY_5
++#define RC_6 KEY_6
++#define RC_7 KEY_7
++#define RC_8 KEY_8
++#define RC_9 KEY_9
++#define RC_RIGHT KEY_RIGHT
++#define RC_LEFT KEY_LEFT
++#define RC_UP KEY_UP
++#define RC_DOWN KEY_DOWN
++#define RC_OK KEY_OK
++#define RC_SPKR KEY_MUTE
++#define RC_STANDBY KEY_POWER
++#define RC_GREEN KEY_GREEN
++#define RC_YELLOW KEY_YELLOW
++#define RC_RED KEY_RED
++#define RC_BLUE KEY_BLUE
++#define RC_PLUS KEY_VOLUMEUP
++#define RC_MINUS KEY_VOLUMEDOWN
++#define RC_HELP KEY_HELP
++#define RC_SETUP KEY_MENU
++#define RC_HOME KEY_EXIT
++#define RC_PAGE_DOWN KEY_PAGEDOWN
++#define RC_PAGE_UP KEY_PAGEUP
++#define RC_FAVORITES KEY_FAVORITES
++#define RC_EPG KEY_EPG
++#define RC_TV KEY_TV
++#define RC_NEXT KEY_NEXT
++#define RC_PREVIOUS KEY_PREVIOUS
++#define RC_AUDIO KEY_AUDIO
++#define RC_TEXT KEY_TEXT
++#define RC_GAMES KEY_GAMES
++#define RC_INFO KEY_INFO
++
++void RcGetActCode( void );
++int RcInitialize( int extfd );
++void RcClose( void );
++
++#endif // RC_INPUT_H
+diff -Naur links-2.7/rcmouse.c links-2.7/rcmouse.c
+--- links-2.7/rcmouse.c 1970-01-01 01:00:00.000000000 +0100
++++ links-2.7/rcmouse.c 2012-08-08 10:41:05.674236478 +0200
+@@ -0,0 +1,151 @@
++/* rc.c
++ * (c) 2004 CypherLabs International
++ * This file is a part of the Links program, released under GPL.
++ */
++
++#include <fcntl.h>
++#include <stdio.h>
++#include <string.h>
++#include <sys/ioctl.h>
++#include <termios.h>
++#include <unistd.h>
++#include <sys/ioctl.h>
++#include <linux/input.h>
++
++#include "links.h"
++
++struct mouseinfo {
++ unsigned char status;
++ signed char xmotion;
++ signed char ymotion;
++};
++
++#define MXSCALE 1
++#define MYSCALE (MXSCALE * 1)
++
++#define BT_LEFT 0x9
++#define BT_RIGHT 0xa
++
++
++int mousefd = -1;
++
++int rc_mouse_init()
++{
++ mousefd = open("/dev/mouse", O_RDONLY);
++
++ if (mousefd == -1)
++ mousefd = open("/dev/input/mouse0", O_RDONLY);
++//printf("mousefd %d\n", mousefd);
++ return mousefd;
++}
++/*
++UP
++event: x 16 type 2 code 1 (1) value -1
++DOWN
++event: x 16 type 2 code 1 (1) value 1
++RIGHT
++event: x 16 type 2 code 0 (0) value 1
++LEFT
++event: x 16 type 2 code 0 (0) value -1
++*/
++void rc_mouse_event()
++{
++ struct mouseinfo m;
++ int i, x = 0;
++ int val;
++
++ struct input_event ev;
++
++ if (mousefd != -1) {
++ x = read(mousefd, &ev, sizeof(struct input_event));
++//printf("event: x %d type %d code %x (%d) value %d\n", x, ev.type, ev.code, ev.code, ev.value);
++ }
++ if(x <= 0)
++ return;
++ val = ev.value < 0 ? -1 : 1;
++ switch(ev.type) {
++ case EV_KEY:
++ switch(ev.code) {
++ case BTN_LEFT:
++ fb_mouse_click(B_LEFT | ev.value ? B_DOWN : B_UP);
++ break;
++ case BTN_RIGHT:
++ fb_mouse_click(B_RIGHT | ev.value ? B_DOWN : B_UP);
++ break;
++ case BTN_MIDDLE:
++ break;
++ default:
++ break;
++ }
++ break;
++ case EV_REL:
++ switch(ev.code) {
++ case REL_X:
++ for(i = 0; i < abs(ev.value)/MXSCALE; i++)
++ fb_mouse_move(val, 0);
++ break;
++ case REL_Y:
++ for(i = 0; i < abs(ev.value)/MYSCALE; i++)
++ fb_mouse_move(0, val);
++ break;
++ case REL_WHEEL:
++ fb_mouse_wheel((val > 0) ? B_WHEELUP : B_WHEELDOWN);
++ break;
++ default:
++ break;
++ }
++ default:
++ break;
++ }
++#if 0
++// writeLogEntry("End Mouse Event\n");
++ memset(&m, 0, sizeof(m));
++
++// writeLogEntry("Mouse Event\n");
++
++ if (mousefd != -1)
++ x = read(mousefd, &m, sizeof(m));
++
++// char yo[255];
++
++// sprintf(yo, "status=%x\n", m.status);
++//printf("x %d status=%x\n", x, m.status);
++// writeLogEntry(yo);
++
++ if (m.xmotion < 0)
++ for (i = 0; i < -(((int) m.xmotion) / MXSCALE); i++)
++ fb_mouse_move(-1, 0);
++
++ if (m.xmotion > 0)
++ for (i = 0; i < (m.xmotion / MXSCALE); i++)
++ fb_mouse_move(1, 0);
++
++ if (m.ymotion < 0)
++ for (i = 0; i < -(m.ymotion / MYSCALE); i++)
++ fb_mouse_move(0, -1);
++
++ if (m.ymotion > 0)
++ for (i = 0; i < (m.ymotion / MYSCALE); i++)
++ fb_mouse_move(0, 1);
++
++ // Driver is not 100% so we must post down followed by up
++ // Side effect of this is the buttons cant remain down pressed
++ if ((m.status & BT_LEFT) == BT_LEFT) {
++ fb_mouse_click(B_LEFT | B_DOWN);
++ fb_mouse_click(B_LEFT | B_UP);
++ }
++
++ if ((m.status & BT_RIGHT) == BT_RIGHT) {
++ fb_mouse_click(B_RIGHT | B_DOWN);
++ fb_mouse_click(B_RIGHT | B_UP);
++ }
++
++// writeLogEntry("End Mouse Event\n");
++#endif
++}
++
++void rc_mouse_close()
++{
++ if (mousefd != -1 )
++ close(mousefd);
++}
+diff -Naur links-2.7/select.c links-2.7/select.c
+--- links-2.7/select.c 2012-06-06 21:49:37.000000000 +0200
++++ links-2.7/select.c 2012-08-08 10:41:05.674236478 +0200
+@@ -9,6 +9,7 @@
+ /*
+ #define DEBUG_CALLS
+ */
++//#define DEBUG_CALLS
+
+ struct thread {
+ void (*read_func)(void *);
+@@ -247,8 +248,12 @@
+ threads[fd].write_func = write_func;
+ threads[fd].error_func = error_func;
+ threads[fd].data = data;
+- if (read_func) FD_SET(fd, &w_read);
+- else {
++ if (read_func) {
++ FD_SET(fd, &w_read);
++#ifdef DEBUG_CALLS
++printf("set_handlers: add read fd %d\n", fd);
++#endif
++ } else {
+ FD_CLR(fd, &w_read);
+ FD_CLR(fd, &x_read);
+ }
+@@ -423,13 +428,22 @@
+
+ int terminate_loop = 0;
+
++//focus
++void kbd_remoteControl();
++void rc_mouse_event();
++#include "rcinput.h"
++
+ void select_loop(void (*init)(void))
+ {
++//focus
++ int rcfd=-1;
++ int mousefd=-1;
++//
+ struct stat st;
+ int rs;
+ EINTRLOOP(rs, stat(".", &st));
+- if (rs && getenv("HOME"))
+- EINTRLOOP(rs, chdir(getenv("HOME")));
++// if (rs && getenv("HOME"))
++// EINTRLOOP(rs, chdir(getenv("HOME")));
+ memset(&sa_zero, 0, sizeof sa_zero);
+ memset(signal_mask, 0, sizeof signal_mask);
+ memset(signal_handlers, 0, sizeof signal_handlers);
+@@ -447,6 +461,16 @@
+ set_handlers(signal_pipe[0], signal_break, NULL, NULL, NULL);
+ init();
+ CHK_BH;
++//focus
++ rcfd = RcInitialize(rcfd);
++printf("rcfd: %d\n", rcfd);
++
++ set_handlers(rcfd, (void (*)(void *))kbd_remoteControl, NULL, NULL, NULL);
++ mousefd = rc_mouse_init();
++
++ if (mousefd != -1)
++ set_handlers(mousefd, (void (*)(void *))rc_mouse_event, NULL, NULL, NULL);
++//
+ while (!terminate_loop) {
+ volatile int n; /* volatile because of setjmp */
+ int i;
+@@ -518,8 +542,10 @@
+ i = -1;
+ while (n > 0 && ++i < w_max) {
+ int k = 0;
+- /*printf("C %d : %d,%d,%d\n",i,FD_ISSET(i, &w_read),FD_ISSET(i, &w_write),FD_ISSET(i, &w_error));
+- printf("A %d : %d,%d,%d\n",i,FD_ISSET(i, &x_read),FD_ISSET(i, &x_write),FD_ISSET(i, &x_error));*/
++#ifdef DEBUG_CALLS
++ printf("C %d : %d,%d,%d\n",i,FD_ISSET(i, &w_read),FD_ISSET(i, &w_write),FD_ISSET(i, &w_error));
++ printf("A %d : %d,%d,%d\n",i,FD_ISSET(i, &x_read),FD_ISSET(i, &x_write),FD_ISSET(i, &x_error));
++#endif
+ if (FD_ISSET(i, &x_read)) {
+ if (threads[i].read_func) {
+ #ifdef DEBUG_CALLS
+diff -Naur links-2.7/view_gr.c links-2.7/view_gr.c
+--- links-2.7/view_gr.c 2012-06-25 21:29:22.000000000 +0200
++++ links-2.7/view_gr.c 2012-08-08 10:41:05.674236478 +0200
+@@ -1026,7 +1026,7 @@
+ redraw_link(fd, n);
+ }
+ }
+-
++extern int mousefd;
+ int g_frame_ev(struct session *ses, struct f_data_c *fd, struct event *ev)
+ {
+ if (!fd->f_data) return 0;
+@@ -1068,6 +1068,25 @@
+ process_sb_event(fd, ev->x, 1);
+ break;
+ }
++ if(mousefd == -1) {
++ if (fd->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw))
++ {
++ ses->scrolltype=0;
++ process_sb_move(fd, ses->scrolltype ? ev->x : ev->y);
++
++ break;
++ //return 0;
++ }
++ if (fd->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw, fd->yw))
++ {
++ ses->scrolltype=1;
++ process_sb_move(fd, ses->scrolltype ? ev->x : ev->y);
++ break;
++
++ // return 0;
++ }
++ }
++
+ if (fd->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw)) return 0;
+ if (fd->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw, fd->yw)) return 0;
+
$(REMOVE)/links
touch $@
-$(D)/links-new: $(ARCHIVE)/links-2.6.tar.bz2 | $(TARGETPREFIX)
- $(UNTAR)/links-2.6.tar.bz2
- pushd $(BUILD_TMP)/links-2.6 && \
- $(PATCH)/links-2.6.diff && \
+$(D)/links-new: $(ARCHIVE)/links-2.7.tar.bz2 | $(TARGETPREFIX)
+ $(UNTAR)/links-2.7.tar.bz2
+ pushd $(BUILD_TMP)/links-2.7 && \
+ $(PATCH)/links-2.7.diff && \
PKG_CONFIG_PATH=$(TARGETPREFIX)/lib/pkgconfig \
LD_LIBRARY_PATH=$(TARGETPREFIX)/lib \
CC=$(TARGET)-gcc \
echo "bookmarkcount=0" > $(TARGETPREFIX)/var/tuxbox/config/bookmarks
cp -rf $(BASE_DIR)/archive-sources/links $(TARGETPREFIX)/var/tuxbox/config
rm -rf $(BUILD_TMP)/.remove
- $(REMOVE)/links-2.6
+ $(REMOVE)/links-2.7
touch $@
$(D)/procps: $(D)/libncurses $(ARCHIVE)/procps-3.2.7.tar.gz | $(TARGETPREFIX)
$(REMOVE)/busybox-1.17.1
touch $@
-$(D)/busybox-new: $(ARCHIVE)/busybox-1.19.4.tar.bz2 | $(TARGETPREFIX)
- $(UNTAR)/busybox-1.19.4.tar.bz2
- pushd $(BUILD_TMP)/busybox-1.19.4 && \
- $(PATCH)/busybox-1.19.4-coolstream.diff && \
- cp $(PATCHES)/busybox-1.19.4-hd1.config .config && \
+$(D)/busybox-new: $(ARCHIVE)/busybox-1.20.2.tar.bz2 | $(TARGETPREFIX)
+ $(UNTAR)/busybox-1.20.2.tar.bz2
+ pushd $(BUILD_TMP)/busybox-1.20.2 && \
+ $(PATCH)/busybox-1.20.2-coolstream.diff && \
+ cp $(PATCHES)/busybox-1.20.2-hd1.config .config && \
sed -i -e 's#^CONFIG_PREFIX.*#CONFIG_PREFIX="$(TARGETPREFIX)"#' .config && \
$(MAKE) all CROSS_COMPILE=$(TARGET)- CFLAGS_EXTRA="$(TARGET_CFLAGS)" && \
$(MAKE) install CROSS_COMPILE=$(TARGET)- CFLAGS_EXTRA="$(TARGET_CFLAGS)"
- $(REMOVE)/busybox-1.19.4
+ $(REMOVE)/busybox-1.20.2
touch $@
$(D)/e2fsprogs: $(ARCHIVE)/e2fsprogs-1.41.9.tar.gz | $(TARGETPREFIX)
$(REMOVE)/vsftpd-2.2.2
touch $@
-$(D)/vsftpd-new: $(ARCHIVE)/vsftpd-3.0.0.tar.gz | $(TARGETPREFIX)
- $(UNTAR)/vsftpd-3.0.0.tar.gz
- pushd $(BUILD_TMP)/vsftpd-3.0.0 && \
- mv $(BUILD_TMP)/vsftpd-3.0.0/parseconf.c $(BUILD_TMP)/vsftpd-3.0.0/parseconf.tmp && \
- sed -e 's/die("config file not owned by correct user, or not a file");/\/\/die("config file not owned by correct user, or not a file");/g' $(BUILD_TMP)/vsftpd-3.0.0/parseconf.tmp > $(BUILD_TMP)/vsftpd-3.0.0/parseconf.c && \
+$(D)/vsftpd-new: $(ARCHIVE)/vsftpd-3.0.2.tar.gz | $(TARGETPREFIX)
+ $(UNTAR)/vsftpd-3.0.2.tar.gz
+ pushd $(BUILD_TMP)/vsftpd-3.0.2 && \
+ mv $(BUILD_TMP)/vsftpd-3.0.2/parseconf.c $(BUILD_TMP)/vsftpd-3.0.2/parseconf.tmp && \
+ sed -e 's/die("config file not owned by correct user, or not a file");/\/\/die("config file not owned by correct user, or not a file");/g' $(BUILD_TMP)/vsftpd-3.0.2/parseconf.tmp > $(BUILD_TMP)/vsftpd-3.0.2/parseconf.c && \
cp $(PATCHES)/vsftpd-new.conf vsftpd.conf && \
$(PATCH)/vsftpd-new.diff && \
TARGETPREFIX=$(TARGETPREFIX) $(MAKE) CC=$(TARGET)-gcc CFLAGS="$(TARGET_CFLAGS)" LIBS="-lcrypt" && \
install -m755 vsftpd $(TARGETPREFIX)/sbin/vsftpd && \
install -m 644 vsftpd.conf $(TARGETPREFIX)/etc/vsftpd.conf && \
install -d $(TARGETPREFIX)/share/empty && \
- $(REMOVE)/vsftpd-3.0.0
+ $(REMOVE)/vsftpd-3.0.2
touch $@
$(D)/lbreakout2: $(D)/libsdl $(D)/libsdl-mixer | $(TARGETPREFIX)
$(ARCHIVE)/busybox-1.17.1.tar.bz2:
$(WGET) http://www.fhloston-paradise.de/busybox-1.17.1.tar.bz2
-$(ARCHIVE)/busybox-1.19.4.tar.bz2:
- $(WGET) http://www.fhloston-paradise.de/busybox-1.19.4.tar.bz2
+$(ARCHIVE)/busybox-1.20.2.tar.bz2:
+ $(WGET) http://www.fhloston-paradise.de/busybox-1.20.2.tar.bz2
$(ARCHIVE)/samba-3.3.9.tar.gz:
$(WGET) http://www.fhloston-paradise.de/samba-3.3.9.tar.gz
$(ARCHIVE)/vsftpd-2.2.2.tar.gz:
$(WGET) http://www.fhloston-paradise.de/vsftpd-2.2.2.tar.gz
-$(ARCHIVE)/vsftpd-3.0.0.tar.gz:
- $(WGET) http://www.fhloston-paradise.de/vsftpd-3.0.0.tar.gz
+$(ARCHIVE)/vsftpd-3.0.2.tar.gz:
+ $(WGET) http://www.fhloston-paradise.de/vsftpd-3.0.2.tar.gz
$(ARCHIVE)/linux-$(CST_KERNEL_VERSION).tar.bz2:
$(WGET) http://www.kernel.org/pub/linux/kernel/v2.6/linux-$(CST_KERNEL_VERSION).tar.bz2
$(ARCHIVE)/util-linux-2.20.tar.bz2:
$(WGET) http://www.fhloston-paradise.de/util-linux-2.20.tar.bz2
-$(ARCHIVE)/links-2.6.tar.bz2:
- $(WGET) http://www.fhloston-paradise.de/links-2.6.tar.bz2
+$(ARCHIVE)/links-2.7.tar.bz2:
+ $(WGET) http://www.fhloston-paradise.de/links-2.7.tar.bz2
$(ARCHIVE)/hddtemp-0.3-beta15.tar.bz2:
$(WGET) http://www.fhloston-paradise.de/hddtemp-0.3-beta15.tar.bz2