diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-03-03 23:49:12 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-03-03 23:49:12 +0000 |
commit | ef3f7c3f74961883c355a6e7ec9ee67d52d92eef (patch) | |
tree | af046f03cbbdd4fba176cccdc428415dc741b689 /src/port/sprompt.c | |
parent | decdaf3592dfa05642373a7bffcb431e45cc5aac (diff) |
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.1.X.
Robert Kinberg
Diffstat (limited to 'src/port/sprompt.c')
-rw-r--r-- | src/port/sprompt.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/port/sprompt.c b/src/port/sprompt.c index cb0c910afb5..46d3c627c86 100644 --- a/src/port/sprompt.c +++ b/src/port/sprompt.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/sprompt.c,v 1.12 2005/10/15 02:49:51 momjian Exp $ + * $PostgreSQL: pgsql/src/port/sprompt.c,v 1.13 2006/03/03 23:49:12 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -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, @@ -63,8 +63,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). */ +#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) |