]> git.webhop.me Git - bs-cst-neutrino-hd.git/commitdiff
update links, busybox and vsftpd
authorwittinobi <wittinobi@wittinobi.de>
Mon, 24 Sep 2012 14:27:47 +0000 (16:27 +0200)
committerwittinobi <wittinobi@wittinobi.de>
Mon, 24 Sep 2012 14:27:47 +0000 (16:27 +0200)
archive-patches/busybox-1.20.2-coolstream.diff [new file with mode: 0644]
archive-patches/busybox-1.20.2-hd1.config [new file with mode: 0644]
archive-patches/links-2.7.diff [new file with mode: 0644]
make/applications.mk
make/archives.mk

diff --git a/archive-patches/busybox-1.20.2-coolstream.diff b/archive-patches/busybox-1.20.2-coolstream.diff
new file mode 100644 (file)
index 0000000..c9735a9
--- /dev/null
@@ -0,0 +1,277 @@
+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)
diff --git a/archive-patches/busybox-1.20.2-hd1.config b/archive-patches/busybox-1.20.2-hd1.config
new file mode 100644 (file)
index 0000000..0ffaace
--- /dev/null
@@ -0,0 +1,1018 @@
+#
+# 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
diff --git a/archive-patches/links-2.7.diff b/archive-patches/links-2.7.diff
new file mode 100644 (file)
index 0000000..fed547c
--- /dev/null
@@ -0,0 +1,1551 @@
+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 *)&param, 10);
++              if (*param == ',') param++;
++      }
++      if (*param) {
++              if (*param < '0' || *param > '9') goto bad_p;
++              yres = strtoul(param, (char **)(void *)&param, 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;
index 2d81bd4292261f2bf4a9523ad776a1a295d0fb79..888bf266ebfa64e1d9363259f7b055bf5983badd 100755 (executable)
@@ -47,10 +47,10 @@ $(D)/links: | $(TARGETPREFIX)
        $(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 \
@@ -92,7 +92,7 @@ $(D)/links-new: $(ARCHIVE)/links-2.6.tar.bz2 | $(TARGETPREFIX)
        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)
@@ -146,15 +146,15 @@ $(D)/busybox: $(ARCHIVE)/busybox-1.17.1.tar.bz2 | $(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)
@@ -277,11 +277,11 @@ $(D)/vsftpd: $(ARCHIVE)/vsftpd-2.2.2.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" && \
@@ -289,7 +289,7 @@ $(D)/vsftpd-new: $(ARCHIVE)/vsftpd-3.0.0.tar.gz | $(TARGETPREFIX)
                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)
index c1c21ae98a5a63792743d53ea3ef9e40b67bb69e..e860a1380aa3496f018158bf02b73ec605822d25 100755 (executable)
@@ -117,8 +117,8 @@ $(ARCHIVE)/busybox-1.15.2.tar.bz2:
 $(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
@@ -150,8 +150,8 @@ $(ARCHIVE)/DirectFB-examples-1.2.0.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
@@ -159,8 +159,8 @@ $(ARCHIVE)/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