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 <[email protected]>
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 <[email protected]>
    Reviewed-by: Alexander Bokovoy <[email protected]>
    
    Autobuild-User(master): Alexander Bokovoy <[email protected]>
    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

Reply via email to