|
@@ -22,7 +22,7 @@
|
|
|
|
|
|
/* OPENBSD ORIGINAL: lib/libc/gen/readpassphrase.c */
|
|
|
|
|
|
-#include "includes.h"
|
|
|
+#include "orconfig.h"
|
|
|
|
|
|
#ifndef HAVE_READPASSPHRASE
|
|
|
|
|
@@ -35,6 +35,10 @@
|
|
|
#include <string.h>
|
|
|
#include <unistd.h>
|
|
|
|
|
|
+#ifndef _PATH_TTY
|
|
|
+# define _PATH_TTY "/dev/tty"
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef TCSASOFT
|
|
|
# define _T_FLUSH (TCSAFLUSH|TCSASOFT)
|
|
|
#else
|
|
@@ -61,6 +65,7 @@ static void handler(int);
|
|
|
char *
|
|
|
readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags)
|
|
|
{
|
|
|
+ ssize_t bytes_written = 0;
|
|
|
ssize_t nr;
|
|
|
int input, output, save_errno, i, need_restart;
|
|
|
char ch, *p, *end;
|
|
@@ -132,7 +137,7 @@ restart:
|
|
|
/* No I/O if we are already backgrounded. */
|
|
|
if (signo[SIGTTOU] != 1 && signo[SIGTTIN] != 1) {
|
|
|
if (!(flags & RPP_STDIN))
|
|
|
- (void)write(output, prompt, strlen(prompt));
|
|
|
+ bytes_written = write(output, prompt, strlen(prompt));
|
|
|
end = buf + bufsiz - 1;
|
|
|
p = buf;
|
|
|
while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') {
|
|
@@ -151,9 +156,11 @@ restart:
|
|
|
*p = '\0';
|
|
|
save_errno = errno;
|
|
|
if (!(term.c_lflag & ECHO))
|
|
|
- (void)write(output, "\n", 1);
|
|
|
+ bytes_written = write(output, "\n", 1);
|
|
|
}
|
|
|
|
|
|
+ (void) bytes_written;
|
|
|
+
|
|
|
/* Restore old terminal settings and signals. */
|
|
|
if (memcmp(&term, &oterm, sizeof(term)) != 0) {
|
|
|
while (tcsetattr(input, _T_FLUSH, &oterm) == -1 &&
|