author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 16 Apr 2009 12:49:11 +0200 | |
changeset 39 | 46d7ec9d63bd |
parent 23 | 7acfc5eda7ed |
child 65 | 76514757b0d6 |
permissions | -rw-r--r-- |
/** * test/demos/db_bridge/console.cpp * Copyright (C) Markus Broeker */ #include <console.h> #include <cstdio> #ifdef WIN32 #include <conio.h> int Console::getch () { int ch = -1; while (!kbhit ()) { ch =::getch (); } return ch; } #else #include <termios.h> int Console::getch () { int ch = -1, fd = 0; struct termios neu, alt; fd = fileno (stdin); tcgetattr (fd, &alt); neu = alt; neu.c_lflag &= ~(ICANON | ECHO); tcsetattr (fd, TCSANOW, &neu); ch = getchar (); tcsetattr (fd, TCSANOW, &alt); return ch; } #endif void Console::getpass (std::string & password) { int i = 0; int c; char buffer[17]; while (((c = Console::getch ()) != '\n') && i < 17) { if (c != BS) { buffer[i++] = c; std::cout << "*"; } else if (i > 0) { i--; std::cout << "\b \b"; } } buffer[i] = 0; std::cout << std::endl; password = std::string (buffer); }