[SCM] Samba Shared Repository - branch master updated

Alexander Bokovoy ab at samba.org
Thu Apr 4 23:35:02 MDT 2013


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 <stefw at gnome.org>
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 <jra at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>
    
    Autobuild-User(master): Alexander Bokovoy <ab at samba.org>
    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


More information about the samba-cvs mailing list