diff options
Diffstat (limited to 'patches/busybox/1.7.4/1.7.4-ash-timeout.diff')
-rw-r--r-- | patches/busybox/1.7.4/1.7.4-ash-timeout.diff | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/patches/busybox/1.7.4/1.7.4-ash-timeout.diff b/patches/busybox/1.7.4/1.7.4-ash-timeout.diff deleted file mode 100644 index 25d5338..0000000 --- a/patches/busybox/1.7.4/1.7.4-ash-timeout.diff +++ /dev/null @@ -1,123 +0,0 @@ -'read -t' support, forward-ported from Gentoo Busybox 1.1.3. -Used during the LiveCD boot when prompting for a keymap. - -Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> - -diff -Nuar --exclude '*.orig' busybox-1.7.4/shell/ash.c busybox-1.7.4+gentoo/shell/ash.c ---- busybox-1.7.4/shell/ash.c 2007-11-03 16:06:35.000000000 -0700 -+++ busybox-1.7.4+gentoo/shell/ash.c 2008-03-11 10:21:28.000000000 -0700 -@@ -11485,11 +11485,13 @@ - int startword; - int status; - int i; -+#if ENABLE_ASH_READ_NCHARS || ENABLE_ASH_READ_TIMEOUT -+ struct termios tty, old_tty; -+#endif - #if ENABLE_ASH_READ_NCHARS - int nch_flag = 0; - int nchars = 0; - int silent = 0; -- struct termios tty, old_tty; - #endif - #if ENABLE_ASH_READ_TIMEOUT - fd_set set; -@@ -11566,44 +11568,74 @@ - ifs = bltinlookup("IFS"); - if (ifs == NULL) - ifs = defifs; --#if ENABLE_ASH_READ_NCHARS -+#if ENABLE_ASH_READ_NCHARS || ENABLE_ASH_READ_TIMEOUT -+#if ENABLE_ASH_READ_NCHARS && ENABLE_ASH_READ_TIMEOUT -+ if (nch_flag || silent || ts.tv_sec || ts.tv_usec) { -+#elif ENABLE_ASH_READ_TIMEOUT -+ if (ts.tv_sec || ts.tv_usec) { -+#elif ENABLE_ASH_READ_NCHARS - if (nch_flag || silent) { -+#endif - tcgetattr(0, &tty); - old_tty = tty; -- if (nch_flag) { -+#if ENABLE_ASH_READ_NCHARS && ENABLE_ASH_READ_TIMEOUT -+ if (nch_flag || ts.tv_sec || ts.tv_usec) -+#elif ENABLE_ASH_READ_TIMEOUT -+ if (ts.tv_sec || ts.tv_usec) -+#elif ENABLE_ASH_READ_NCHARS -+ if (nch_flag) -+#endif - tty.c_lflag &= ~ICANON; -- tty.c_cc[VMIN] = nchars; -- } -- if (silent) { -- tty.c_lflag &= ~(ECHO|ECHOK|ECHONL); - -- } -+ -+#if ENABLE_ASH_READ_NCHARS -+ if (silent) -+ tty.c_lflag &= ~(ECHO|ECHOK|ECHONL); -+#endif - tcsetattr(0, TCSANOW, &tty); - } - #endif -+ i = 1; -+ STARTSTACKSTR(p); - #if ENABLE_ASH_READ_TIMEOUT - if (ts.tv_sec || ts.tv_usec) { - FD_ZERO(&set); - FD_SET(0, &set); - - i = select(FD_SETSIZE, &set, NULL, NULL, &ts); -- if (!i) { -+ if (i == 1) -+ { -+ read(0, &c, 1); -+ if(c == '\n' || c == 4) /* Handle newlines and EOF */ -+ i = 0; /* Don't read further... */ -+ else -+ STPUTC(c, p); /* Ok, keep reading... */ -+ } - #if ENABLE_ASH_READ_NCHARS -- if (nch_flag) -- tcsetattr(0, TCSANOW, &old_tty); -+ if (!silent && !nch_flag) - #endif -- return 1; -+ tcsetattr(0, TCSANOW, &old_tty); -+ -+#if ENABLE_ASH_READ_NCHARS -+ if(i == 0) -+ { -+ nchars = 0; -+ nch_flag = 1; -+ } else -+ { -+ if (nch_flag) -+ nchars--; - } -+#endif - } - #endif - status = 0; - startword = 1; - backslash = 0; -- STARTSTACKSTR(p); - #if ENABLE_ASH_READ_NCHARS - while (!nch_flag || nchars--) - #else -- for (;;) -+ for (;i > 0;) - #endif - { - if (read(0, &c, 1) != 1) { -@@ -11640,8 +11672,10 @@ - } - } - #if ENABLE_ASH_READ_NCHARS -- if (nch_flag || silent) -+ if (silent || nch_flag) - tcsetattr(0, TCSANOW, &old_tty); -+ if (!silent && nch_flag) -+ printf("\n"); - #endif - - STACKSTRNUL(p); |