1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-11 20:28:21 +03:00

In pg_upgrade, improve popen() failure detection by checking for fgets()

failures.
This commit is contained in:
Bruce Momjian
2011-10-06 19:37:29 -04:00
parent 981e5acd24
commit a3996754cc
2 changed files with 10 additions and 11 deletions

View File

@ -754,11 +754,11 @@ check_for_support_lib(ClusterInfo *cluster)
snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", cluster->bindir);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get pkglibdir data: %s\n",
getErrorText(errno));
if ((output = popen(cmd, "r")) == NULL ||
fgets(libdir, sizeof(libdir), output) == NULL)
pg_log(PG_FATAL, "Could not get pkglibdir data using %s: %s\n",
cmd, getErrorText(errno));
fgets(libdir, sizeof(libdir), output);
pclose(output);
@ -787,11 +787,10 @@ get_bin_version(ClusterInfo *cluster)
snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get pg_ctl version data: %s\n",
getErrorText(errno));
fgets(cmd_output, sizeof(cmd_output), output);
if ((output = popen(cmd, "r")) == NULL ||
fgets(cmd_output, sizeof(cmd_output), output) == NULL)
pg_log(PG_FATAL, "Could not get pg_ctl version data using %s: %s\n",
cmd, getErrorText(errno));
pclose(output);

View File

@ -109,8 +109,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
fflush(stderr);
if ((output = popen(cmd, "r")) == NULL)
pg_log(PG_FATAL, "Could not get control data: %s\n",
getErrorText(errno));
pg_log(PG_FATAL, "Could not get control data using %s: %s\n",
cmd, getErrorText(errno));
/* Only pre-8.4 has these so if they are not set below we will check later */
cluster->controldata.lc_collate = NULL;