summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2014-07-24 04:52:03 +0000
committerPavan Deolasee2014-09-01 14:20:29 +0000
commitd4b0c619cc26b70938d0e33948549907ed0ad9a1 (patch)
tree127fbfc57a21d3704e64ba754c041a4633201281
parent1e5fc17d626e194a0189678bdd78163c4e749f7e (diff)
Use pclose() instead of fclose() for closing fildes/pipe opened by popen().
While fclose() may work OK on some platforms, they are not so good on some other.
-rw-r--r--contrib/pgxc_ctl/bash_handler.c2
-rw-r--r--contrib/pgxc_ctl/coord_cmd.c24
-rw-r--r--contrib/pgxc_ctl/datanode_cmd.c22
-rw-r--r--contrib/pgxc_ctl/pgxc_ctl.c2
-rw-r--r--contrib/pgxc_ctl/utils.c5
5 files changed, 28 insertions, 27 deletions
diff --git a/contrib/pgxc_ctl/bash_handler.c b/contrib/pgxc_ctl/bash_handler.c
index 0c3a3187e6..1cae6b46b3 100644
--- a/contrib/pgxc_ctl/bash_handler.c
+++ b/contrib/pgxc_ctl/bash_handler.c
@@ -72,5 +72,5 @@ void read_config_file(char *path, char *conf)
sprintf(cmd, "bash %s/pgxc_ctl_bash print_values", path);
vars = popen(cmd, "r");
read_vars(vars);
- fclose(vars);
+ pclose(vars);
}
diff --git a/contrib/pgxc_ctl/coord_cmd.c b/contrib/pgxc_ctl/coord_cmd.c
index d1511cc5fa..f28245873c 100644
--- a/contrib/pgxc_ctl/coord_cmd.c
+++ b/contrib/pgxc_ctl/coord_cmd.c
@@ -1046,7 +1046,7 @@ int add_coordinatorMaster(char *name, char *host, int port, int pooler, char *di
"# End of Additon\n",
timeStampString(date, MAXTOKEN+1),
port, pooler, gtmHost, atoi(gtmPort));
- fclose(f);
+ pclose(f);
}
CleanArray(confFiles);
jj = coordIdx(name);
@@ -1062,7 +1062,7 @@ int add_coordinatorMaster(char *name, char *host, int port, int pooler, char *di
sval(VAR_pgxcOwner), aval(VAR_coordPgHbaEntries)[kk]);
}
fprintf(f, "# End of addition\n");
- fclose(f);
+ pclose(f);
}
/* Lock ddl */
@@ -1109,7 +1109,7 @@ int add_coordinatorMaster(char *name, char *host, int port, int pooler, char *di
}
fprintf(f, "CREATE NODE %s WITH (TYPE = 'coordinator', host='%s', PORT=%d);\n", name, host, port);
fprintf(f, "\\q\n");
- fclose(f);
+ pclose(f);
}
}
/* Issue CREATE NODE on datanodes */
@@ -1124,19 +1124,19 @@ int add_coordinatorMaster(char *name, char *host, int port, int pooler, char *di
}
fprintf(f, "EXECUTE DIRECT ON (%s) 'CREATE NODE %s WITH (TYPE = ''coordinator'', host=''%s'', PORT=%d)';\n", aval(VAR_datanodeNames)[ii], name, host, port);
fprintf(f, "\\q\n");
- fclose(f);
+ pclose(f);
}
}
/* Quit DDL lokkup session */
fprintf(lockf, "\\q\n");
- fclose(lockf);
+ pclose(lockf);
if ((f = pgxc_popen_wRaw("psql -h %s -p %d %s", host, port, sval(VAR_defaultDatabase))) == NULL)
elog(ERROR, "ERROR: cannot connect to the coordinator master %s.\n", name);
else
{
fprintf(f, "ALTER NODE %s WITH (host='%s', PORT=%d);\n", name, host, port);
fprintf(f, "\\q\n");
- fclose(f);
+ pclose(f);
}
return 0;
}
@@ -1206,7 +1206,7 @@ int add_coordinatorSlave(char *name, char *host, char *dir, char *archDir)
timeStampString(date, MAXPATH),
sval(VAR_pgxcUser), host, archDir,
getDefaultWalSender(TRUE));
- fclose(f);
+ pclose(f);
/* pg_hba.conf for replication */
if ((f = pgxc_popen_w(aval(VAR_coordMasterServers)[idx], "cat >> %s/pg_hba.conf", aval(VAR_coordMasterDirs)[idx])) == NULL)
{
@@ -1221,7 +1221,7 @@ int add_coordinatorSlave(char *name, char *host, char *dir, char *archDir)
"# End of addition ===============================\n",
timeStampString(date, MAXPATH),
sval(VAR_pgxcOwner), getIpAddress(host));
- fclose(f);
+ pclose(f);
/* Reconfigure pgxc_ctl configuration with the new slave */
/* Need an API to expand the array to desired size */
if ((extendVar(VAR_coordSlaveServers, idx, "none") != 0) ||
@@ -1292,7 +1292,7 @@ int add_coordinatorSlave(char *name, char *host, char *dir, char *archDir)
"max_wal_senders = 0\n" /* Minimum WAL senders */
"# End of Addition\n",
timeStampString(date, MAXTOKEN), atoi(aval(VAR_coordPorts)[idx]));
- fclose(f);
+ pclose(f);
/* Update the slave recovery.conf */
if ((f = pgxc_popen_w(host, "cat >> %s/recovery.conf", dir)) == NULL)
{
@@ -1311,7 +1311,7 @@ int add_coordinatorSlave(char *name, char *host, char *dir, char *archDir)
timeStampString(date, MAXTOKEN), aval(VAR_coordMasterServers)[idx], aval(VAR_coordPorts)[idx],
sval(VAR_pgxcOwner), aval(VAR_coordNames)[idx],
aval(VAR_coordArchLogDirs)[idx], aval(VAR_coordArchLogDirs)[idx]);
- fclose(f);
+ pclose(f);
/* Start the slave */
doImmediate(host, NULL, "pg_ctl start -Z coordinator -D %s", dir);
@@ -1532,7 +1532,7 @@ int remove_coordinatorSlave(char *name, int clean_opt)
"wal_level = minimal\n"
"# End of the update\n",
timeStampString(date, MAXTOKEN));
- fclose(f);
+ pclose(f);
}
doImmediate(aval(VAR_coordMasterServers)[idx], NULL, "pg_ctl restart -Z coordinator -D %s", aval(VAR_coordMasterDirs)[idx]);
if (clean_opt)
@@ -1964,7 +1964,7 @@ static int failover_oneCoordinator(int coordIdx)
"# End of addition\n",
timeStampString(timestamp, MAXTOKEN),
gtmHost, gtmPort);
- fclose(f);
+ pclose(f);
/* Restart coord Slave Server */
rc_local = doImmediate(aval(VAR_coordSlaveServers)[coordIdx], NULL,
diff --git a/contrib/pgxc_ctl/datanode_cmd.c b/contrib/pgxc_ctl/datanode_cmd.c
index 0b5da0204c..cef987641c 100644
--- a/contrib/pgxc_ctl/datanode_cmd.c
+++ b/contrib/pgxc_ctl/datanode_cmd.c
@@ -739,7 +739,7 @@ static int failover_oneDatanode(int datanodeIdx)
"# End of addition\n",
timeStampString(timestamp, MAXTOKEN),
gtmHost, gtmPort);
- fclose(f);
+ pclose(f);
/* Restart datanode slave (as the new master) */
rc_local = doImmediate(aval(VAR_datanodeSlaveServers)[datanodeIdx], NULL,
@@ -987,7 +987,7 @@ int add_datanodeMaster(char *name, char *host, int port, char *dir, char *restor
#else
port, gtmHost, gtmPort);
#endif
- fclose(f);
+ pclose(f);
}
CleanArray(confFiles);
jj = datanodeIdx(name);
@@ -1003,7 +1003,7 @@ int add_datanodeMaster(char *name, char *host, int port, char *dir, char *restor
sval(VAR_pgxcOwner), aval(VAR_datanodePgHbaEntries)[kk]);
}
fprintf(f, "# End of addition\n");
- fclose(f);
+ pclose(f);
}
restore_dnode_idx = -1;
@@ -1076,7 +1076,7 @@ int add_datanodeMaster(char *name, char *host, int port, char *dir, char *restor
}
fprintf(f, "CREATE NODE %s WITH (TYPE = 'datanode', host='%s', PORT=%d);\n", name, host, port);
fprintf(f, "\\q\n");
- fclose(f);
+ pclose(f);
}
}
@@ -1095,13 +1095,13 @@ int add_datanodeMaster(char *name, char *host, int port, char *dir, char *restor
else
fprintf(f, "EXECUTE DIRECT ON (%s) 'ALTER NODE %s WITH (TYPE = ''datanode'', host=''%s'', PORT=%d)';\n", aval(VAR_datanodeNames)[ii], name, host, port);
fprintf(f, "\\q\n");
- fclose(f);
+ pclose(f);
}
}
/* Quit DDL lokkup session */
fprintf(lockf, "\\q\n");
- fclose(lockf);
+ pclose(lockf);
return 0;
}
@@ -1172,7 +1172,7 @@ int add_datanodeSlave(char *name, char *host, char *dir, char *archDir)
timeStampString(date, MAXPATH),
sval(VAR_pgxcUser), host, archDir,
getDefaultWalSender(FALSE));
- fclose(f);
+ pclose(f);
/* pg_hba.conf for replication */
if ((f = pgxc_popen_w(aval(VAR_datanodeMasterServers)[idx], "cat >> %s/pg_hba.conf", aval(VAR_datanodeMasterDirs)[idx])) == NULL)
{
@@ -1187,7 +1187,7 @@ int add_datanodeSlave(char *name, char *host, char *dir, char *archDir)
"# End of addition ===============================\n",
timeStampString(date, MAXPATH),
sval(VAR_pgxcOwner), getIpAddress(host));
- fclose(f);
+ pclose(f);
/* Reconfigure pgxc_ctl configuration with the new slave */
#if 0
/* Need an API to expand the array to desired size */
@@ -1267,7 +1267,7 @@ int add_datanodeSlave(char *name, char *host, char *dir, char *archDir)
#else
timeStampString(date, MAXTOKEN), aval(VAR_datanodePorts)[idx]);
#endif
- fclose(f);
+ pclose(f);
/* Update the slave recovery.conf */
if ((f = pgxc_popen_w(host, "cat >> %s/recovery.conf", dir)) == NULL)
{
@@ -1286,7 +1286,7 @@ int add_datanodeSlave(char *name, char *host, char *dir, char *archDir)
timeStampString(date, MAXTOKEN), aval(VAR_datanodeMasterServers)[idx], aval(VAR_datanodePorts)[idx],
sval(VAR_pgxcOwner), aval(VAR_datanodeNames)[idx],
aval(VAR_datanodeArchLogDirs)[idx], aval(VAR_datanodeArchLogDirs)[idx]);
- fclose(f);
+ pclose(f);
/* Start the slave */
doImmediate(host, NULL, "pg_ctl start -Z datanode -D %s", dir);
return 0;
@@ -1510,7 +1510,7 @@ int remove_datanodeSlave(char *name, int clean_opt)
"wal_level = minimal\n"
"# End of the update\n",
timeStampString(date, MAXTOKEN));
- fclose(f);
+ pclose(f);
}
doImmediate(aval(VAR_datanodeMasterServers)[idx], NULL, "pg_ctl restart -Z datanode -D %s", aval(VAR_datanodeMasterDirs)[idx]);
diff --git a/contrib/pgxc_ctl/pgxc_ctl.c b/contrib/pgxc_ctl/pgxc_ctl.c
index 5e78f493f9..4f47c656b0 100644
--- a/contrib/pgxc_ctl/pgxc_ctl.c
+++ b/contrib/pgxc_ctl/pgxc_ctl.c
@@ -255,7 +255,7 @@ static void read_configuration(void)
return;
}
read_vars(conf);
- fclose(conf);
+ pclose(conf);
uninstall_pgxc_ctl_bash(pgxc_ctl_bash_path);
elog(INFO, "Finished to read configuration.\n");
}
diff --git a/contrib/pgxc_ctl/utils.c b/contrib/pgxc_ctl/utils.c
index 9d691f2ea9..18ebef03a6 100644
--- a/contrib/pgxc_ctl/utils.c
+++ b/contrib/pgxc_ctl/utils.c
@@ -289,7 +289,7 @@ pid_t get_prog_pid(char *host, char *progname, char *dir)
return(-1);
}
fgets(pid_s, MAXLINE, wkf);
- fclose(wkf);
+ pclose(wkf);
/* Get the second token */
line = pid_s;
if ((line = get_word(line, &token)) == NULL)
@@ -357,6 +357,7 @@ char *getChPidList(char *host, pid_t ppid)
strncat(rv, line, MAXLINE);
strncat(rv, " ", MAXLINE);
}
+ pclose(wkf);
return rv;
}
@@ -374,7 +375,7 @@ char *getIpAddress(char *hostName)
}
ipAddr = Malloc(MAXTOKEN+1);
fgets(ipAddr, MAXTOKEN, f);
- fclose(f);
+ pclose(f);
trimNl(ipAddr);
return ipAddr;
}