mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Add fflush() before popen() calls; avoids any possible problem with
double or out-of-sequence output with child process.
This commit is contained in:
@ -42,7 +42,7 @@
|
||||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/initdb/initdb.c,v 1.8 2003/11/14 17:19:35 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/initdb/initdb.c,v 1.9 2003/11/14 17:30:41 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -204,22 +204,24 @@ static void *xmalloc(size_t);
|
||||
|
||||
#define PG_CMD_OPEN \
|
||||
do { \
|
||||
pg = popen(cmd,PG_BINARY_W); \
|
||||
if (pg == NULL) \
|
||||
exit_nicely(); \
|
||||
fflush(stdout); \
|
||||
fflush(stderr); \
|
||||
pg = popen(cmd, PG_BINARY_W); \
|
||||
if (pg == NULL) \
|
||||
exit_nicely(); \
|
||||
} while (0)
|
||||
|
||||
#define PG_CMD_CLOSE \
|
||||
do { \
|
||||
if ((pclose(pg) >> 8) & 0xff) \
|
||||
exit_nicely(); \
|
||||
if ((pclose(pg) >> 8) & 0xff) \
|
||||
exit_nicely(); \
|
||||
} while (0)
|
||||
|
||||
#define PG_CMD_PUTLINE \
|
||||
do { \
|
||||
if (fputs(*line, pg) < 0) \
|
||||
exit_nicely(); \
|
||||
fflush(pg); \
|
||||
if (fputs(*line, pg) < 0) \
|
||||
exit_nicely(); \
|
||||
fflush(pg); \
|
||||
} while (0)
|
||||
|
||||
#ifndef WIN32
|
||||
@ -862,6 +864,10 @@ find_postgres(char *path)
|
||||
|
||||
snprintf(cmd, sizeof(cmd), "\"%s/postgres\" -V 2>%s", path, DEVNULL);
|
||||
|
||||
/* flush output buffers in case popen does not... */
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
|
||||
if ((pgver = popen(cmd, "r")) == NULL)
|
||||
return FIND_EXEC_ERR;
|
||||
|
||||
|
Reference in New Issue
Block a user