version 1.15.2.1, 2001/09/27 19:03:55 |
version 1.15.2.2, 2001/11/15 22:51:15 |
|
|
{ |
{ |
pid_t pid; |
pid_t pid; |
size_t len; |
size_t len; |
char *nl, *pass; |
char *pass; |
int p[2], status; |
int p[2], status; |
char buf[1024]; |
char buf[1024]; |
|
|
|
|
fatal("ssh_askpass: exec(%s): %s", askpass, strerror(errno)); |
fatal("ssh_askpass: exec(%s): %s", askpass, strerror(errno)); |
} |
} |
close(p[1]); |
close(p[1]); |
len = read(p[0], buf, sizeof buf); |
len = read(p[0], buf, sizeof buf -1); |
close(p[0]); |
close(p[0]); |
while (waitpid(pid, &status, 0) < 0) |
while (waitpid(pid, &status, 0) < 0) |
if (errno != EINTR) |
if (errno != EINTR) |
break; |
break; |
if (len <= 1) |
if (len <= 1) |
return xstrdup(""); |
return xstrdup(""); |
nl = strchr(buf, '\n'); |
buf[len] = '\0'; |
if (nl) |
buf[strcspn(buf, "\r\n")] = '\0'; |
*nl = '\0'; |
|
pass = xstrdup(buf); |
pass = xstrdup(buf); |
memset(buf, 0, sizeof(buf)); |
memset(buf, 0, sizeof(buf)); |
return pass; |
return pass; |