Revision 13401ba0
b/include/qemu/osdep.h | ||
---|---|---|
240 | 240 |
void qemu_init_auxval(char **envp); |
241 | 241 |
#endif |
242 | 242 |
|
243 |
void qemu_set_tty_echo(int fd, bool echo); |
|
244 |
|
|
243 | 245 |
#endif |
b/util/oslib-posix.c | ||
---|---|---|
47 | 47 |
# define QEMU_VMALLOC_ALIGN getpagesize() |
48 | 48 |
#endif |
49 | 49 |
|
50 |
#include <termios.h> |
|
51 |
#include <unistd.h> |
|
52 |
|
|
50 | 53 |
#include <glib/gprintf.h> |
51 | 54 |
|
52 | 55 |
#include "config-host.h" |
... | ... | |
251 | 254 |
return g_strdup_printf("%s/%s", CONFIG_QEMU_LOCALSTATEDIR, |
252 | 255 |
relative_pathname); |
253 | 256 |
} |
257 |
|
|
258 |
void qemu_set_tty_echo(int fd, bool echo) |
|
259 |
{ |
|
260 |
struct termios tty; |
|
261 |
|
|
262 |
tcgetattr(fd, &tty); |
|
263 |
|
|
264 |
if (echo) { |
|
265 |
tty.c_lflag |= ECHO | ECHONL | ICANON | IEXTEN; |
|
266 |
} else { |
|
267 |
tty.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN); |
|
268 |
} |
|
269 |
|
|
270 |
tcsetattr(fd, TCSANOW, &tty); |
|
271 |
} |
b/util/oslib-win32.c | ||
---|---|---|
189 | 189 |
return g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", base_path, |
190 | 190 |
relative_pathname); |
191 | 191 |
} |
192 |
|
|
193 |
void qemu_set_tty_echo(int fd, bool echo) |
|
194 |
{ |
|
195 |
HANDLE handle = (HANDLE)_get_osfhandle(fd); |
|
196 |
DWORD dwMode = 0; |
|
197 |
|
|
198 |
if (handle == INVALID_HANDLE_VALUE) { |
|
199 |
return; |
|
200 |
} |
|
201 |
|
|
202 |
GetConsoleMode(handle, &dwMode); |
|
203 |
|
|
204 |
if (echo) { |
|
205 |
SetConsoleMode(handle, dwMode | ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT); |
|
206 |
} else { |
|
207 |
SetConsoleMode(handle, |
|
208 |
dwMode & ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT)); |
|
209 |
} |
|
210 |
} |
Also available in: Unified diff