Better getpass patch.
This commit is contained in:
parent
cf5e76c36c
commit
7b0f97386e
@ -1,30 +1,37 @@
|
|||||||
--- cups-1.2.6/cups/usersys.c.getpass 2006-08-29 16:51:19.000000000 +0100
|
--- cups-1.2.6/cups/usersys.c.getpass 2006-08-29 16:51:19.000000000 +0100
|
||||||
+++ cups-1.2.6/cups/usersys.c 2006-11-13 15:57:18.000000000 +0000
|
+++ cups-1.2.6/cups/usersys.c 2006-11-13 16:19:32.000000000 +0000
|
||||||
@@ -46,6 +46,7 @@
|
@@ -46,6 +46,8 @@
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
+#include <termios.h>
|
+#include <termios.h>
|
||||||
|
+#include <signal.h>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#endif /* WIN32 */
|
#endif /* WIN32 */
|
||||||
@@ -455,7 +456,23 @@
|
@@ -455,7 +457,29 @@
|
||||||
const char * /* O - Password */
|
const char * /* O - Password */
|
||||||
_cupsGetPassword(const char *prompt) /* I - Prompt string */
|
_cupsGetPassword(const char *prompt) /* I - Prompt string */
|
||||||
{
|
{
|
||||||
- return (getpass(prompt));
|
- return (getpass(prompt));
|
||||||
+ static char password[100];
|
+ static char password[100];
|
||||||
+ struct termios old, new;
|
+ struct termios oldtio, newtio;
|
||||||
|
+ sigset_t oldset, newset;
|
||||||
+ int nread;
|
+ int nread;
|
||||||
+ tcgetattr (STDIN_FILENO, &old);
|
+ sigprocmask (SIG_BLOCK, NULL, &newset);
|
||||||
+ new = old;
|
+ sigaddset (&newset, SIGINT);
|
||||||
+ new.c_lflag &= ~ECHO;
|
+ sigaddset (&newset, SIGTSTP);
|
||||||
+ tcsetattr (STDIN_FILENO, TCSAFLUSH, &new);
|
+ sigprocmask (SIG_BLOCK, &newset, &oldset);
|
||||||
|
+ tcgetattr (STDIN_FILENO, &oldtio);
|
||||||
|
+ newtio = oldtio;
|
||||||
|
+ newtio.c_lflag &= ~ECHO;
|
||||||
|
+ tcsetattr (STDIN_FILENO, TCSAFLUSH, &newtio);
|
||||||
+ fputs (prompt, stdout);
|
+ fputs (prompt, stdout);
|
||||||
+ fflush (stdout);
|
+ fflush (stdout);
|
||||||
+ nread = read (STDIN_FILENO, password, sizeof (password));
|
+ nread = read (STDIN_FILENO, password, sizeof (password));
|
||||||
+ tcsetattr (STDIN_FILENO, TCSAFLUSH, &old);
|
+ tcsetattr (STDIN_FILENO, TCSAFLUSH, &oldtio);
|
||||||
+ fputc ('\n', stdout);
|
+ fputc ('\n', stdout);
|
||||||
|
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
|
||||||
+ if (nread > 0)
|
+ if (nread > 0)
|
||||||
+ password[nread - 1] = '\0';
|
+ password[nread - 1] = '\0';
|
||||||
+ else
|
+ else
|
||||||
|
Loading…
Reference in New Issue
Block a user