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