diff options
author | Pavan Deolasee | 2014-07-24 04:52:03 +0000 |
---|---|---|
committer | Pavan Deolasee | 2014-09-01 14:20:29 +0000 |
commit | d4b0c619cc26b70938d0e33948549907ed0ad9a1 (patch) | |
tree | 127fbfc57a21d3704e64ba754c041a4633201281 | |
parent | 1e5fc17d626e194a0189678bdd78163c4e749f7e (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.c | 2 | ||||
-rw-r--r-- | contrib/pgxc_ctl/coord_cmd.c | 24 | ||||
-rw-r--r-- | contrib/pgxc_ctl/datanode_cmd.c | 22 | ||||
-rw-r--r-- | contrib/pgxc_ctl/pgxc_ctl.c | 2 | ||||
-rw-r--r-- | contrib/pgxc_ctl/utils.c | 5 |
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; } |