aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-22 10:52:06 +1000
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-22 10:52:06 +1000
commit87994ae30fbb6056ba90e274445b3190feb84f76 (patch)
tree0264515e537941ee449ce4cfec523947bb6491ca
parentab18cfce12a269390cabf7cac2673060f0609c46 (diff)
parent5c4eb803c62b9199eeab3bd2c72bd931eab10960 (diff)
downloadbusybox-w32-87994ae30fbb6056ba90e274445b3190feb84f76.tar.gz
busybox-w32-87994ae30fbb6056ba90e274445b3190feb84f76.tar.bz2
busybox-w32-87994ae30fbb6056ba90e274445b3190feb84f76.zip
Merge branch 'ash'
-rw-r--r--libbb/lineedit.c9
-rw-r--r--shell/ash.c2
-rw-r--r--win32/termios.c6
3 files changed, 15 insertions, 2 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 3af9f4e64..182dfac13 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1914,10 +1914,16 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
1914 1914
1915 INIT_S(); 1915 INIT_S();
1916 1916
1917#if !ENABLE_PLATFORM_MINGW32 1917#if ENABLE_PLATFORM_MINGW32
1918 memset(initial_settings.c_cc, sizeof(initial_settings.c_cc), 0);
1919 initial_settings.c_cc[VINTR] = CTRL('C');
1920 initial_settings.c_cc[VEOF] = CTRL('D');
1921 if (!isatty(0) || !isatty(1)) {
1922#else
1918 if (tcgetattr(STDIN_FILENO, &initial_settings) < 0 1923 if (tcgetattr(STDIN_FILENO, &initial_settings) < 0
1919 || !(initial_settings.c_lflag & ECHO) 1924 || !(initial_settings.c_lflag & ECHO)
1920 ) { 1925 ) {
1926#endif
1921 /* Happens when e.g. stty -echo was run before */ 1927 /* Happens when e.g. stty -echo was run before */
1922 parse_and_put_prompt(prompt); 1928 parse_and_put_prompt(prompt);
1923 /* fflush_all(); - done by parse_and_put_prompt */ 1929 /* fflush_all(); - done by parse_and_put_prompt */
@@ -1928,7 +1934,6 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
1928 DEINIT_S(); 1934 DEINIT_S();
1929 return len; 1935 return len;
1930 } 1936 }
1931#endif
1932 1937
1933 init_unicode(); 1938 init_unicode();
1934 1939
diff --git a/shell/ash.c b/shell/ash.c
index 0ff5adb04..c3b497938 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -4079,6 +4079,8 @@ waitpid_child(int *status)
4079 } 4079 }
4080 4080
4081 LOOP(pid_nr++); 4081 LOOP(pid_nr++);
4082 if (!pid_nr)
4083 return -1;
4082 pidp = pidlist = ckmalloc(sizeof(*pidlist)*pid_nr); 4084 pidp = pidlist = ckmalloc(sizeof(*pidlist)*pid_nr);
4083 LOOP(*pidp++ = (HANDLE)ps->ps_pid); 4085 LOOP(*pidp++ = (HANDLE)ps->ps_pid);
4084 #undef LOOP 4086 #undef LOOP
diff --git a/win32/termios.c b/win32/termios.c
index e2dc96361..34a17bbfd 100644
--- a/win32/termios.c
+++ b/win32/termios.c
@@ -31,6 +31,12 @@ int64_t FAST_FUNC read_key(int fd, char *buf, int timeout UNUSED_PARAM)
31 continue; 31 continue;
32 if (!record.Event.KeyEvent.uChar.AsciiChar) { 32 if (!record.Event.KeyEvent.uChar.AsciiChar) {
33 DWORD state = record.Event.KeyEvent.dwControlKeyState; 33 DWORD state = record.Event.KeyEvent.dwControlKeyState;
34
35 if (state & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED) &&
36 (record.Event.KeyEvent.wVirtualKeyCode >= 'A' &&
37 record.Event.KeyEvent.wVirtualKeyCode <= 'Z'))
38 return record.Event.KeyEvent.wVirtualKeyCode & ~0x40;
39
34 switch (record.Event.KeyEvent.wVirtualKeyCode) { 40 switch (record.Event.KeyEvent.wVirtualKeyCode) {
35 case VK_DELETE: return KEYCODE_DELETE; 41 case VK_DELETE: return KEYCODE_DELETE;
36 case VK_INSERT: return KEYCODE_INSERT; 42 case VK_INSERT: return KEYCODE_INSERT;