The branch, master has been updated
via ca0d385 getpass: Don't fail if stdin is not a tty
from 7f366d7 tevent: Only set poll_ev->delete=false if it was true
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -
commit ca0d38596d711e70a1d58657024aabd8c131512b
Author: Stef Walter
Date: Thu Apr 4 15:55:10 2013 +0200
getpass: Don't fail if stdin is not a tty
We don't need to manipulate the tty state (such as turning off
echo) when prompting for passwords if we're not reading from a tty.
Reviewed-by: Jeremy Allison
Reviewed-by: Alexander Bokovoy
Autobuild-User(master): Alexander Bokovoy
Autobuild-Date(master): Fri Apr 5 07:34:37 CEST 2013 on sn-devel-104
---
Summary of changes:
lib/util/getpass.c | 52 +---
1 files changed, 29 insertions(+), 23 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/util/getpass.c b/lib/util/getpass.c
index 480bd56..0cbc7dd 100644
--- a/lib/util/getpass.c
+++ b/lib/util/getpass.c
@@ -170,31 +170,34 @@ int samba_getpass(const char *prompt,
return -1;
}
- ZERO_STRUCT(attr);
- ZERO_STRUCT(old_attr);
+ if (isatty (STDIN_FILENO)) {
- /* get local terminal attributes */
- if (tcgetattr(STDIN_FILENO, &attr) < 0) {
- perror("tcgetattr");
- return -1;
- }
+ ZERO_STRUCT(attr);
+ ZERO_STRUCT(old_attr);
- /* save terminal attributes */
- memcpy(&old_attr, &attr, sizeof(attr));
- if((fd = fcntl(0, F_GETFL, 0)) < 0) {
- perror("fcntl");
- return -1;
- }
+ /* get local terminal attributes */
+ if (tcgetattr(STDIN_FILENO, &attr) < 0) {
+ perror("tcgetattr");
+ return -1;
+ }
- /* disable echo */
- if (!echo) {
- attr.c_lflag &= ~(ECHO);
- }
+ /* save terminal attributes */
+ memcpy(&old_attr, &attr, sizeof(attr));
+ if((fd = fcntl(0, F_GETFL, 0)) < 0) {
+ perror("fcntl");
+ return -1;
+ }
- /* write attributes to terminal */
- if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &attr) < 0) {
- perror("tcsetattr");
- return -1;
+ /* disable echo */
+ if (!echo) {
+ attr.c_lflag &= ~(ECHO);
+ }
+
+ /* write attributes to terminal */
+ if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &attr) < 0) {
+ perror("tcsetattr");
+ return -1;
+ }
}
/* disable nonblocking I/O */
@@ -204,8 +207,11 @@ int samba_getpass(const char *prompt,
ok = samba_gets(prompt, buf, len, verify);
- /* reset terminal */
- tcsetattr(STDIN_FILENO, TCSANOW, &old_attr);
+ if (isatty (STDIN_FILENO)) {
+
+ /* reset terminal */
+ tcsetattr(STDIN_FILENO, TCSANOW, &old_attr);
+ }
/* close fd */
if (fd & O_NDELAY) {
--
Samba Shared Repository