From c9218e6bcf71b15dda61bda8c20561e3763f696b Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 3 Mar 2006 23:54:52 +0000 Subject: [PATCH] Avoid trying to open /dev/tty on Win32. Some Win32 systems have /dev/tty, but it isn't a device file and doesn't work as expected. This fixes a known bug where psql does not prompt for a password on some Win32 systems. Backpatch to 8.0.X too. Robert Kinberg --- src/bin/psql/command.c | 4 ++++ src/port/sprompt.c | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 4bfcb70866..16f4107cde 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -654,7 +654,11 @@ exec_command(const char *cmd, expand_tilde(&fname); /* This scrolls off the screen when using /dev/tty */ +#ifndef WIN32 success = saveHistory(fname ? fname : "/dev/tty"); +#else + success = saveHistory(fname ? fname : stderr); +#endif if (success && !quiet && fname) printf(gettext("Wrote history to file \"%s\".\n"), fname); diff --git a/src/port/sprompt.c b/src/port/sprompt.c index 40e212f59d..3a9ed9fd10 100644 --- a/src/port/sprompt.c +++ b/src/port/sprompt.c @@ -40,8 +40,8 @@ simple_prompt(const char *prompt, int maxlen, bool echo) { int length; char *destination; - FILE *termin, - *termout; + FILE *termin = NULL, + *termout = NULL; #ifdef HAVE_TERMIOS_H struct termios t_orig, @@ -64,8 +64,14 @@ simple_prompt(const char *prompt, int maxlen, bool echo) * Do not try to collapse these into one "w+" mode file. Doesn't work * on some platforms (eg, HPUX 10.20). */ - termin = fopen("/dev/tty", "r"); - termout = fopen("/dev/tty", "w"); +#ifndef WIN32 + /* + * Some win32 platforms actually have a /dev/tty file, but it isn't + * a device file, and it doesn't work as expected, so we avoid trying. + */ + termin = fopen("/dev/tty", "r"); + termout = fopen("/dev/tty", "w"); +#endif if (!termin || !termout) { if (termin) -- 2.39.5