]> git.pond.sub.org Git - empserver/blobdiff - src/client/getpass.c
client: Make get_password() not echo with POSIX && !HAVE_GETPASS
[empserver] / src / client / getpass.c
index 6e151f41e023551d748cbeb7ccb13df7862f41d5..b04ec7e504cf66b6e3b81de123e162347bc8d46f 100644 (file)
@@ -38,6 +38,8 @@
 #include <string.h>
 #ifdef _WIN32
 #include <windows.h>
 #include <string.h>
 #ifdef _WIN32
 #include <windows.h>
+#else
+#include <termios.h>
 #endif
 #endif
 #include "misc.h"
 #endif
 #endif
 #include "misc.h"
@@ -62,7 +64,19 @@ set_echo_if_tty(int on)
        return -1;
     return 1;
 #else
        return -1;
     return 1;
 #else
-    return 0;
+    struct termios tcattr;
+
+    if (tcgetattr(0, &tcattr) < 0)
+       return 0;
+
+    if (on)
+       tcattr.c_lflag |= ECHO;
+    else
+       tcattr.c_lflag &= ~ECHO;
+
+    if (tcsetattr(0, TCSAFLUSH, &tcattr) < 0)
+       return -1;
+    return 1;
 #endif
 }
 #endif /* !HAVE_GETPASS */
 #endif
 }
 #endif /* !HAVE_GETPASS */