Em sex., 9 de set. de 2022 às 10:45, Ranier Vilela <[email protected]>
escreveu:
> Based on work in [1].
> According to https://cplusplus.com/reference/cstdio/fprintf/
> The use of fprintf is related to the need to generate a string based on a
> format, which should be different from "%s".
> Since fprintf has overhead when parsing the "format" parameter, plus all
> the trouble of checking the va_arg parameters.
> I think this is one of the low fruits available and easy to reap.
> By replacing fprintf with its equivalents, fputs and fputc,
> we avoid overhead and increase security [2] and [3].
>
> The downside is a huge big churm, which unfortunately will occur.
> But, IHMO, I think the advantages are worth it.
> Note that behavior remains the same, since fputs and fputc do not change
> the expected behavior of fprintf.
>
> A small performance gain is expected, mainly for the client, since there
> are several occurrences in some critical places, such as
> (usr/src/fe_utils/print.c).
>
> Patch attached.
> This pass check-world.
>
Rechecked for the hundredth time.
One typo.
regards,
Ranier Vilela
diff --git a/contrib/oid2name/oid2name.c b/contrib/oid2name/oid2name.c
index 32d5444831..4672d8b2a4 100644
--- a/contrib/oid2name/oid2name.c
+++ b/contrib/oid2name/oid2name.c
@@ -422,7 +422,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet)
fprintf(stdout, "%*s", length[j] + 2, PQfname(res, j));
l += length[j] + 2;
}
- fprintf(stdout, "\n");
+ fputc('\n', stdout);
pad = (char *) pg_malloc(l + 1);
memset(pad, '-', l);
pad[l] = '\0';
@@ -435,7 +435,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet)
{
for (j = 0; j < nfields; j++)
fprintf(stdout, "%*s", length[j] + 2, PQgetvalue(res, i, j));
- fprintf(stdout, "\n");
+ fputc('\n', stdout);
}
/* cleanup */
diff --git a/contrib/pg_trgm/trgm_regexp.c b/contrib/pg_trgm/trgm_regexp.c
index 58d32ba946..ed1ab65940 100644
--- a/contrib/pg_trgm/trgm_regexp.c
+++ b/contrib/pg_trgm/trgm_regexp.c
@@ -2201,7 +2201,7 @@ printSourceNFA(regex_t *regex, TrgmColorInfo *colors, int ncolors)
/* dot -Tpng -o /tmp/source.png < /tmp/source.gv */
FILE *fp = fopen("/tmp/source.gv", "w");
- fprintf(fp, "%s", buf.data);
+ fputs(buf.data, fp);
fclose(fp);
}
@@ -2263,7 +2263,7 @@ printTrgmNFA(TrgmNFA *trgmNFA)
/* dot -Tpng -o /tmp/transformed.png < /tmp/transformed.gv */
FILE *fp = fopen("/tmp/transformed.gv", "w");
- fprintf(fp, "%s", buf.data);
+ fputs(buf.data, fp);
fclose(fp);
}
@@ -2354,7 +2354,7 @@ printTrgmPackedGraph(TrgmPackedGraph *packedGraph, TRGM *trigrams)
/* dot -Tpng -o /tmp/packed.png < /tmp/packed.gv */
FILE *fp = fopen("/tmp/packed.gv", "w");
- fprintf(fp, "%s", buf.data);
+ fputs(buf.data, fp);
fclose(fp);
}
diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c
index 264b879bd3..e51ce8df57 100644
--- a/contrib/vacuumlo/vacuumlo.c
+++ b/contrib/vacuumlo/vacuumlo.c
@@ -133,7 +133,7 @@ vacuumlo(const char *database, const struct _param *param)
{
fprintf(stdout, "Connected to database \"%s\"\n", database);
if (param->dry_run)
- fprintf(stdout, "Test run: no large objects will be removed!\n");
+ fputs("Test run: no large objects will be removed!\n", stdout);
}
res = PQexec(conn, ALWAYS_SECURE_SEARCH_PATH_SQL);
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 7a710e6490..343555e095 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -8641,7 +8641,7 @@ do_pg_backup_stop(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p)
* Transfer remaining lines including label and start timeline to
* history file.
*/
- fprintf(fp, "%s", remaining);
+ fputs(remaining, fp);
fprintf(fp, "STOP TIME: %s\n", strfbuf);
fprintf(fp, "STOP TIMELINE: %u\n", stoptli);
if (fflush(fp) || ferror(fp) || FreeFile(fp))
diff --git a/src/backend/optimizer/geqo/geqo_misc.c b/src/backend/optimizer/geqo/geqo_misc.c
index 890ac363e9..0d024f227f 100644
--- a/src/backend/optimizer/geqo/geqo_misc.c
+++ b/src/backend/optimizer/geqo/geqo_misc.c
@@ -114,17 +114,17 @@ print_edge_table(FILE *fp, Edge *edge_table, int num_gene)
int i,
j;
- fprintf(fp, "\nEDGE TABLE\n");
+ fputs("\nEDGE TABLE\n", fp);
for (i = 1; i <= num_gene; i++)
{
fprintf(fp, "%d :", i);
for (j = 0; j < edge_table[i].unused_edges; j++)
fprintf(fp, " %d", edge_table[i].edge_list[j]);
- fprintf(fp, "\n");
+ fputc('\n', fp);
}
- fprintf(fp, "\n");
+ fputc('\n', fp);
fflush(fp);
}
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index e75611fdd5..36808438c8 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -5601,10 +5601,10 @@ CreateOptsFile(int argc, char *argv[], char *fullprogname)
return false;
}
- fprintf(fp, "%s", fullprogname);
+ fputs(fullprogname, fp);
for (i = 1; i < argc; i++)
fprintf(fp, " \"%s\"", argv[i]);
- fputs("\n", fp);
+ fputc('\n', fp);
if (fclose(fp))
{
diff --git a/src/backend/regex/regc_color.c b/src/backend/regex/regc_color.c
index 30bda0e5ad..affeb099ee 100644
--- a/src/backend/regex/regc_color.c
+++ b/src/backend/regex/regc_color.c
@@ -1134,7 +1134,7 @@ dumpcolors(struct colormap *cm,
for (c = CHR_MIN; c <= MAX_SIMPLE_CHR; c++)
if (GETCOLOR(cm, c) == co)
dumpchr(c, f);
- fprintf(f, "\n");
+ fputc('\n', f);
}
}
/* dump the high colormap if it contains anything interesting */
@@ -1144,12 +1144,12 @@ dumpcolors(struct colormap *cm,
c;
const color *rowptr;
- fprintf(f, "other:\t");
+ fputs("other:\t", f);
for (c = 0; c < cm->hiarraycols; c++)
{
fprintf(f, "\t%ld", (long) cm->hicolormap[c]);
}
- fprintf(f, "\n");
+ fputc('\n', f);
for (r = 0; r < cm->numcmranges; r++)
{
dumpchr(cm->cmranges[r].cmin, f);
@@ -1161,7 +1161,7 @@ dumpcolors(struct colormap *cm,
{
fprintf(f, "\t%ld", (long) rowptr[c]);
}
- fprintf(f, "\n");
+ fputc('\n', f);
}
}
}
diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c
index 60fb0bec5d..27ea726768 100644
--- a/src/backend/regex/regc_nfa.c
+++ b/src/backend/regex/regc_nfa.c
@@ -3667,7 +3667,7 @@ dumpnfa(struct nfa *nfa,
else
fprintf(f, ", maxmatchall %d", nfa->maxmatchall);
}
- fprintf(f, "\n");
+ fputc('\n', f);
for (s = nfa->states; s != NULL; s = s->next)
{
dumpstate(s, f);
@@ -3730,7 +3730,7 @@ dumparcs(struct state *s,
dumparc(a, s, f);
if (pos == 5)
{
- fprintf(f, "\n");
+ fputc('\n', f);
pos = 1;
}
else
@@ -3738,7 +3738,7 @@ dumparcs(struct state *s,
a = a->outchainRev;
} while (a != NULL);
if (pos != 1)
- fprintf(f, "\n");
+ fputc('\n', f);
}
/*
@@ -3751,7 +3751,7 @@ dumparc(struct arc *a,
{
struct arc *aa;
- fprintf(f, "\t");
+ fputc('\t', );
switch (a->type)
{
case PLAIN:
@@ -3836,7 +3836,7 @@ dumpcnfa(struct cnfa *cnfa,
else
fprintf(f, ", maxmatchall %d", cnfa->maxmatchall);
}
- fprintf(f, "\n");
+ fputc('\n', f);
for (st = 0; st < cnfa->nstates; st++)
dumpcstate(st, cnfa, f);
fflush(f);
@@ -3868,14 +3868,14 @@ dumpcstate(int st,
fprintf(f, "\t:%ld:->%d", (long) (ca->co - cnfa->ncolors), ca->to);
if (pos == 5)
{
- fprintf(f, "\n");
+ fputc('\n', f);
pos = 1;
}
else
pos++;
}
if (ca == cnfa->states[st] || pos != 1)
- fprintf(f, "\n");
+ fputc('\n', f);
fflush(f);
}
diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c
index 473738040b..ca7b9252b9 100644
--- a/src/backend/regex/regcomp.c
+++ b/src/backend/regex/regcomp.c
@@ -2517,7 +2517,7 @@ dump(regex_t *re,
fprintf(f, "\nla%d (%s):\n", i, latype);
dumpcnfa(&lasub->cnfa, f);
}
- fprintf(f, "\n");
+ fputc('\n', f);
dumpst(g->tree, f, 0);
}
@@ -2530,7 +2530,7 @@ dumpst(struct subre *t,
int nfapresent) /* is the original NFA still around? */
{
if (t == NULL)
- fprintf(f, "null tree\n");
+ fputs("null tree\n", f);
else
stdump(t, f, nfapresent);
fflush(f);
@@ -2586,10 +2586,10 @@ stdump(struct subre *t,
fprintf(f, " S:%s", stid(t->sibling, idbuf, sizeof(idbuf)));
if (!NULLCNFA(t->cnfa))
{
- fprintf(f, "\n");
+ fputc('\n', f);
dumpcnfa(&t->cnfa, f);
}
- fprintf(f, "\n");
+ fputc('\n', f);
for (t2 = t->child; t2 != NULL; t2 = t2->sibling)
stdump(t2, f, nfapresent);
}
diff --git a/src/backend/storage/lmgr/s_lock.c b/src/backend/storage/lmgr/s_lock.c
index 4e473ec27e..357eb11cab 100644
--- a/src/backend/storage/lmgr/s_lock.c
+++ b/src/backend/storage/lmgr/s_lock.c
@@ -139,7 +139,7 @@ perform_spin_delay(SpinDelayStatus *status)
pg_usleep(status->cur_delay);
#if defined(S_LOCK_TEST)
- fprintf(stdout, "*");
+ fputc('*', stdout);
fflush(stdout);
#endif
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 55bf998511..effcddc422 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -11010,7 +11010,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
if (gconf->source == PGC_S_DEFAULT)
return;
- fprintf(fp, "%s", gconf->name);
+ fputs(gconf->name, fp);
fputc(0, fp);
switch (gconf->vartype)
@@ -11020,9 +11020,9 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
struct config_bool *conf = (struct config_bool *) gconf;
if (*conf->variable)
- fprintf(fp, "true");
+ fputs("true", fp);
else
- fprintf(fp, "false");
+ fputs("false", fp);
}
break;
@@ -11046,7 +11046,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
{
struct config_string *conf = (struct config_string *) gconf;
- fprintf(fp, "%s", *conf->variable);
+ fputs(*conf->variable, fp);
}
break;
@@ -11054,8 +11054,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
{
struct config_enum *conf = (struct config_enum *) gconf;
- fprintf(fp, "%s",
- config_enum_lookup_by_value(conf, *conf->variable));
+ fputs(config_enum_lookup_by_value(conf, *conf->variable), fp);
}
break;
}
@@ -11063,7 +11062,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
fputc(0, fp);
if (gconf->sourcefile)
- fprintf(fp, "%s", gconf->sourcefile);
+ fputs(gconf->sourcefile, fp);
fputc(0, fp);
fwrite(&gconf->sourceline, 1, sizeof(gconf->sourceline), fp);
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index 115a64cfe4..649f6a589f 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -680,7 +680,7 @@ MemoryContextStatsInternal(MemoryContext context, int level,
int i;
for (i = 0; i <= level; i++)
- fprintf(stderr, " ");
+ fputs(" ", stderr);
fprintf(stderr,
"%d more child contexts containing %zu total in %zu blocks; %zu free (%zu chunks); %zu used\n",
ichild - max_children,
@@ -782,7 +782,7 @@ MemoryContextStatsPrint(MemoryContext context, void *passthru,
if (print_to_stderr)
{
for (i = 0; i < level; i++)
- fprintf(stderr, " ");
+ fputs(" ", stderr);
fprintf(stderr, "%s: %s%s\n", name, stats_string, truncated_ident);
}
else
diff --git a/src/bin/pg_amcheck/pg_amcheck.c b/src/bin/pg_amcheck/pg_amcheck.c
index fea35e4b14..330d296fa4 100644
--- a/src/bin/pg_amcheck/pg_amcheck.c
+++ b/src/bin/pg_amcheck/pg_amcheck.c
@@ -726,7 +726,7 @@ main(int argc, char *argv[])
if (opts.verbose)
{
if (opts.show_progress && progress_since_last_stderr)
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
pg_log_info("checking heap table \"%s.%s.%s\"",
rel->datinfo->datname, rel->nspname, rel->relname);
progress_since_last_stderr = false;
@@ -741,7 +741,7 @@ main(int argc, char *argv[])
if (opts.verbose)
{
if (opts.show_progress && progress_since_last_stderr)
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
pg_log_info("checking btree index \"%s.%s.%s\"",
rel->datinfo->datname, rel->nspname, rel->relname);
@@ -1095,7 +1095,7 @@ verify_btree_slot_handler(PGresult *res, PGconn *conn, void *context)
* event loop, so it doesn't matter.
*/
if (opts.show_progress && progress_since_last_stderr)
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
pg_log_warning("btree index \"%s.%s.%s\": btree checking function returned unexpected number of rows: %d",
rel->datinfo->datname, rel->nspname, rel->relname, ntups);
if (opts.verbose)
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index 9ce30d43a4..888dfa7fc0 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -1904,11 +1904,11 @@ BaseBackup(char *compression_algorithm, char *compression_detail,
if (showprogress && !verbose)
{
- fprintf(stderr, "waiting for checkpoint");
+ fputs("waiting for checkpoint", stderr);
if (isatty(fileno(stderr)))
- fprintf(stderr, "\r");
+ fputc('\r', stderr);
else
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
}
if (use_new_option_syntax && buf.len > 0)
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 69ae027bd3..9481e68c5e 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -535,7 +535,7 @@ main(int argc, char *argv[])
if (quote_all_identifiers)
executeCommand(conn, "SET quote_all_identifiers = true");
- fprintf(OPF, "--\n-- PostgreSQL database cluster dump\n--\n\n");
+ fputs("--\n-- PostgreSQL database cluster dump\n--\n\n", OPF);
if (verbose)
dumpTimestamp("Started on");
@@ -547,15 +547,15 @@ main(int argc, char *argv[])
*/
/* Restore will need to write to the target cluster */
- fprintf(OPF, "SET default_transaction_read_only = off;\n\n");
+ fputs("SET default_transaction_read_only = off;\n\n", OPF);
/* Replicate encoding and std_strings in output */
fprintf(OPF, "SET client_encoding = '%s';\n",
pg_encoding_to_char(encoding));
fprintf(OPF, "SET standard_conforming_strings = %s;\n", std_strings);
if (strcmp(std_strings, "off") == 0)
- fprintf(OPF, "SET escape_string_warning = off;\n");
- fprintf(OPF, "\n");
+ fputs("SET escape_string_warning = off;\n", OPF);
+ fputc('\n', OPF);
if (!data_only)
{
@@ -606,7 +606,7 @@ main(int argc, char *argv[])
if (verbose)
dumpTimestamp("Completed on");
- fprintf(OPF, "--\n-- PostgreSQL database cluster dump complete\n--\n\n");
+ fputs("--\n-- PostgreSQL database cluster dump complete\n--\n\n", OPF);
if (filename)
{
@@ -716,7 +716,7 @@ dropRoles(PGconn *conn)
i_rolname = PQfnumber(res, "rolname");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Drop roles\n--\n\n");
+ fputs("--\n-- Drop roles\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -732,7 +732,7 @@ dropRoles(PGconn *conn)
PQclear(res);
destroyPQExpBuffer(buf);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
/*
@@ -811,7 +811,7 @@ dumpRoles(PGconn *conn)
i_is_current_user = PQfnumber(res, "is_current_user");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Roles\n--\n\n");
+ fputs("--\n-- Roles\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -915,7 +915,7 @@ dumpRoles(PGconn *conn)
"ROLE", rolename,
buf);
- fprintf(OPF, "%s", buf->data);
+ fputs(buf->data, OPF);
}
/*
@@ -924,14 +924,14 @@ dumpRoles(PGconn *conn)
* names of other roles.
*/
if (PQntuples(res) > 0)
- fprintf(OPF, "\n--\n-- User Configurations\n--\n");
+ fputs("\n--\n-- User Configurations\n--\n", OPF);
for (i = 0; i < PQntuples(res); i++)
dumpUserConfig(conn, PQgetvalue(res, i, i_rolname));
PQclear(res);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
destroyPQExpBuffer(buf);
}
@@ -989,7 +989,7 @@ dumpRoleMembership(PGconn *conn)
i_inherit_option = PQfnumber(res, "inherit_option");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Role memberships\n--\n\n");
+ fputs("--\n-- Role memberships\n--\n\n", OPF);
/*
* We can't dump these GRANT commands in arbitary order, because a role
@@ -1111,7 +1111,7 @@ dumpRoleMembership(PGconn *conn)
fprintf(OPF, " WITH %s", optbuf->data);
if (dump_grantors)
fprintf(OPF, " GRANTED BY %s", fmtId(grantor));
- fprintf(OPF, ";\n");
+ fputs(";\n", OPF);
}
}
@@ -1123,7 +1123,7 @@ dumpRoleMembership(PGconn *conn)
PQclear(res);
destroyPQExpBuffer(buf);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
@@ -1151,7 +1151,7 @@ dumpRoleGUCPrivs(PGconn *conn)
"ORDER BY 1");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Role privileges on configuration parameters\n--\n\n");
+ fputs("--\n-- Role privileges on configuration parameters\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -1175,14 +1175,14 @@ dumpRoleGUCPrivs(PGconn *conn)
exit_nicely(1);
}
- fprintf(OPF, "%s", buf->data);
+ fputs(buf->data, OPF);
free(fparname);
destroyPQExpBuffer(buf);
}
PQclear(res);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
@@ -1205,7 +1205,7 @@ dropTablespaces(PGconn *conn)
"ORDER BY 1");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Drop tablespaces\n--\n\n");
+ fputs("--\n-- Drop tablespaces\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -1218,7 +1218,7 @@ dropTablespaces(PGconn *conn)
PQclear(res);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
/*
@@ -1245,7 +1245,7 @@ dumpTablespaces(PGconn *conn)
"ORDER BY 1");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Tablespaces\n--\n\n");
+ fputs("--\n-- Tablespaces\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -1305,14 +1305,14 @@ dumpTablespaces(PGconn *conn)
"TABLESPACE", spcname,
buf);
- fprintf(OPF, "%s", buf->data);
+ fputs(buf->data, OPF);
free(fspcname);
destroyPQExpBuffer(buf);
}
PQclear(res);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
@@ -1336,7 +1336,7 @@ dropDBs(PGconn *conn)
"ORDER BY datname");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Drop databases (except postgres and template1)\n--\n\n");
+ fputs("--\n-- Drop databases (except postgres and template1)\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
@@ -1359,7 +1359,7 @@ dropDBs(PGconn *conn)
PQclear(res);
- fprintf(OPF, "\n\n");
+ fputs("\n\n", OPF);
}
@@ -1390,7 +1390,7 @@ dumpUserConfig(PGconn *conn, const char *username)
makeAlterConfigCommand(conn, PQgetvalue(res, i, 0),
"ROLE", username, NULL, NULL,
buf);
- fprintf(OPF, "%s", buf->data);
+ fputs(buf->data, OPF);
}
PQclear(res);
@@ -1479,7 +1479,7 @@ dumpDatabases(PGconn *conn)
"ORDER BY (datname <> 'template1'), datname");
if (PQntuples(res) > 0)
- fprintf(OPF, "--\n-- Databases\n--\n\n");
+ fputs("--\n-- Databases\n--\n\n", OPF);
for (i = 0; i < PQntuples(res); i++)
{
diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c
index f4969bcdad..b3c90cf121 100644
--- a/src/bin/pg_upgrade/check.c
+++ b/src/bin/pg_upgrade/check.c
@@ -582,7 +582,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
#ifndef WIN32
/* add shebang header */
- fprintf(script, "#!/bin/sh\n\n");
+ fputs("#!/bin/sh\n\n", script);
#endif
/* delete old cluster's default tablespace */
@@ -601,7 +601,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
/* delete per-database directories */
int dbnum;
- fprintf(script, "\n");
+ fputc('\n', script);
for (dbnum = 0; dbnum < old_cluster.dbarr.ndbs; dbnum++)
fprintf(script, RMDIR_CMD " %c%s%c%u%c\n", PATH_QUOTE,
diff --git a/src/bin/pg_upgrade/exec.c b/src/bin/pg_upgrade/exec.c
index 60f4b5443e..470fc4855b 100644
--- a/src/bin/pg_upgrade/exec.c
+++ b/src/bin/pg_upgrade/exec.c
@@ -159,13 +159,13 @@ exec_prog(const char *log_filename, const char *opt_log_file,
#ifdef WIN32
/* Are we printing "command:" before its output? */
if (mainThreadId == GetCurrentThreadId())
- fprintf(log, "\n\n");
+ fputs("\n\n", log);
#endif
fprintf(log, "command: %s\n", cmd);
#ifdef WIN32
/* Are we printing "command:" after its output? */
if (mainThreadId != GetCurrentThreadId())
- fprintf(log, "\n\n");
+ fputs("\n\n", log);
#endif
/*
@@ -213,7 +213,7 @@ exec_prog(const char *log_filename, const char *opt_log_file,
*/
if ((log = fopen(log_file, "a")) == NULL)
pg_fatal("could not write to log file \"%s\": %m", log_file);
- fprintf(log, "\n\n");
+ fputs("\n\n", log);
fclose(log);
#endif
diff --git a/src/bin/pg_upgrade/util.c b/src/bin/pg_upgrade/util.c
index 593a843917..486918021b 100644
--- a/src/bin/pg_upgrade/util.c
+++ b/src/bin/pg_upgrade/util.c
@@ -181,7 +181,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap)
/* status messages get two leading spaces, see below */
fprintf(log_opts.internal, " %s\n", message);
else if (type == PG_REPORT_NONL)
- fprintf(log_opts.internal, "%s", message);
+ fputs(message, log_opts.internal);
else
fprintf(log_opts.internal, "%s\n", message);
fflush(log_opts.internal);
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 098fb43b3c..338bc31904 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -2532,7 +2532,7 @@ evalStandardFunc(CState *st,
st->use_file, st->command + 1);
if (varg->type == PGBT_NULL)
- fprintf(stderr, "null\n");
+ fputs("null\n", stderr);
else if (varg->type == PGBT_BOOLEAN)
fprintf(stderr, "boolean %s\n", varg->u.bval ? "true" : "false");
else if (varg->type == PGBT_INT)
@@ -4633,7 +4633,7 @@ disconnect_all(CState *state, int length)
static void
initDropTables(PGconn *con)
{
- fprintf(stderr, "dropping old tables...\n");
+ fputs("dropping old tables...\n", stderr);
/*
* We drop all the tables in one command, so that whether there are
@@ -4771,7 +4771,7 @@ initCreateTables(PGconn *con)
int i;
PQExpBufferData query;
- fprintf(stderr, "creating tables...\n");
+ fputs("creating tables...\n", stderr);
initPQExpBuffer(&query);
@@ -4845,7 +4845,7 @@ initGenerateDataClientSide(PGconn *con)
/* Stay on the same line if reporting to a terminal */
char eol = isatty(fileno(stderr)) ? '\r' : '\n';
- fprintf(stderr, "generating data (client-side)...\n");
+ fputs("generating data (client-side)...\n", stderr);
/*
* we do all of this in one transaction to enable the backend's
@@ -4970,7 +4970,7 @@ initGenerateDataServerSide(PGconn *con)
{
PQExpBufferData sql;
- fprintf(stderr, "generating data (server-side)...\n");
+ fputs("generating data (server-side)...\n", stderr);
/*
* we do all of this in one transaction to enable the backend's
@@ -5013,7 +5013,7 @@ initGenerateDataServerSide(PGconn *con)
static void
initVacuum(PGconn *con)
{
- fprintf(stderr, "vacuuming...\n");
+ fputs("vacuuming...\n", stderr);
executeStatement(con, "vacuum analyze pgbench_branches");
executeStatement(con, "vacuum analyze pgbench_tellers");
executeStatement(con, "vacuum analyze pgbench_accounts");
@@ -5034,7 +5034,7 @@ initCreatePKeys(PGconn *con)
int i;
PQExpBufferData query;
- fprintf(stderr, "creating primary keys...\n");
+ fputs("creating primary keys...\n", stderr);
initPQExpBuffer(&query);
for (i = 0; i < lengthof(DDLINDEXes); i++)
@@ -5073,7 +5073,7 @@ initCreateFKeys(PGconn *con)
};
int i;
- fprintf(stderr, "creating foreign keys...\n");
+ fputs("creating foreign keys...\n", stderr);
for (i = 0; i < lengthof(DDLKEYs); i++)
{
executeStatement(con, DDLKEYs[i]);
@@ -5992,10 +5992,10 @@ listAvailableScripts(void)
{
int i;
- fprintf(stderr, "Available builtin scripts:\n");
+ fputs("Available builtin scripts:\n", stderr);
for (i = 0; i < lengthof(builtin_script); i++)
fprintf(stderr, " %13s: %s\n", builtin_script[i].name, builtin_script[i].desc);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
}
/* return builtin script "name" if unambiguous, fails if not found */
@@ -6181,7 +6181,7 @@ printProgressReport(TState *threads, int64 test_start, pg_time_usec_t now,
fprintf(stderr,
", " INT64_FORMAT " retried, " INT64_FORMAT " retries",
retried, cur.retries - last->retries);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
*last = cur;
*last_report = now;
@@ -7138,17 +7138,17 @@ main(int argc, char **argv)
if (!is_no_vacuum)
{
- fprintf(stderr, "starting vacuum...");
+ fputs("starting vacuum...", stderr);
tryExecuteStatement(con, "vacuum pgbench_branches");
tryExecuteStatement(con, "vacuum pgbench_tellers");
tryExecuteStatement(con, "truncate pgbench_history");
- fprintf(stderr, "end.\n");
+ fputs("end.\n", stderr);
if (do_vacuum_accounts)
{
- fprintf(stderr, "starting vacuum pgbench_accounts...");
+ fputs("starting vacuum pgbench_accounts...", stderr);
tryExecuteStatement(con, "vacuum analyze pgbench_accounts");
- fprintf(stderr, "end.\n");
+ fputs("end.\n", stderr);
}
}
PQfinish(con);
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index a141146e70..75fe181c15 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -1243,7 +1243,7 @@ exec_command_echo(PsqlScanState scan_state, bool active_branch, const char *cmd)
free(value);
}
if (!no_newline)
- fputs("\n", fout);
+ fputc('\n', fout);
}
else
ignore_slash_options(scan_state);
@@ -5212,7 +5212,7 @@ do_watch(PQExpBuffer query_buf, double sleep)
* using a pager, because pagers are expected to restore the screen to
* a sane state on exit.
*/
- fprintf(stdout, "\n");
+ fputc('\n', stdout);
fflush(stdout);
}
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index e611e3266d..d7222c8489 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -309,12 +309,12 @@ CheckConnection(void)
exit(EXIT_BADCONN);
}
- fprintf(stderr, _("The connection to the server was lost. Attempting reset: "));
+ fputs(_("The connection to the server was lost. Attempting reset: "), stderr);
PQreset(pset.db);
OK = ConnectionUp();
if (!OK)
{
- fprintf(stderr, _("Failed.\n"));
+ fputs(_("Failed.\n"), stderr);
/*
* Transition to having no connection; but stash away the failed
@@ -331,7 +331,7 @@ CheckConnection(void)
}
else
{
- fprintf(stderr, _("Succeeded.\n"));
+ fputs(_("Succeeded.\n"), stderr);
/*
* Re-sync, just in case anything changed. Keep this in sync with
@@ -1404,8 +1404,7 @@ DescribeQuery(const char *query, double *elapsed_msec)
termPQExpBuffer(&buf);
}
else
- fprintf(pset.queryFout,
- _("The command has no result, or the result has no columns.\n"));
+ fputs(_("The command has no result, or the result has no columns.\n"), pset.queryFout);
}
SetResultVariables(result, OK);
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index f8ce1a0706..d00e6197d9 100644
--- a/src/bin/psql/help.c
+++ b/src/bin/psql/help.c
@@ -617,14 +617,13 @@ helpSQL(const char *topic, unsigned short int pager)
for (i = 0; i < nrows; i++)
{
- fprintf(output, " ");
+ fputs(" ", output);
for (j = 0; j < ncolumns - 1; j++)
fprintf(output, "%-*s",
QL_MAX_CMD_LEN + 1,
VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
if (i + j * nrows < QL_HELP_COUNT)
- fprintf(output, "%s",
- VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
+ fputs(VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd), output);
fputc('\n', output);
}
diff --git a/src/bin/psql/large_obj.c b/src/bin/psql/large_obj.c
index 64338d538e..9ba573dc08 100644
--- a/src/bin/psql/large_obj.c
+++ b/src/bin/psql/large_obj.c
@@ -32,7 +32,7 @@ print_lo_result(const char *fmt,...)
if (pset.popt.topt.format == PRINT_HTML)
fputs("</p>\n", pset.queryFout);
else
- fputs("\n", pset.queryFout);
+ fputc('\n', pset.queryFout);
}
if (pset.logfile)
@@ -40,7 +40,7 @@ print_lo_result(const char *fmt,...)
va_start(ap, fmt);
vfprintf(pset.logfile, fmt, ap);
va_end(ap);
- fputs("\n", pset.logfile);
+ fputc('\n', pset.logfile);
}
}
diff --git a/src/bin/scripts/createuser.c b/src/bin/scripts/createuser.c
index 991930a1ae..d635e71c54 100644
--- a/src/bin/scripts/createuser.c
+++ b/src/bin/scripts/createuser.c
@@ -233,7 +233,7 @@ main(int argc, char *argv[])
pw2 = simple_prompt("Enter it again: ", false);
if (strcmp(newpassword, pw2) != 0)
{
- fprintf(stderr, _("Passwords didn't match.\n"));
+ fputs(_("Passwords didn't match.\n"), stderr);
exit(1);
}
free(pw2);
diff --git a/src/common/fe_memutils.c b/src/common/fe_memutils.c
index b1e6c65576..3e169b823e 100644
--- a/src/common/fe_memutils.c
+++ b/src/common/fe_memutils.c
@@ -32,7 +32,7 @@ pg_malloc_internal(size_t size, int flags)
{
if ((flags & MCXT_ALLOC_NO_OOM) == 0)
{
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
exit(EXIT_FAILURE);
}
return NULL;
@@ -72,7 +72,7 @@ pg_realloc(void *ptr, size_t size)
tmp = realloc(ptr, size);
if (!tmp)
{
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
exit(EXIT_FAILURE);
}
return tmp;
@@ -88,14 +88,13 @@ pg_strdup(const char *in)
if (!in)
{
- fprintf(stderr,
- _("cannot duplicate null pointer (internal error)\n"));
+ fputs(_("cannot duplicate null pointer (internal error)\n"), stderr);
exit(EXIT_FAILURE);
}
tmp = strdup(in);
if (!tmp)
{
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
exit(EXIT_FAILURE);
}
return tmp;
@@ -149,8 +148,7 @@ pnstrdup(const char *in, Size size)
if (!in)
{
- fprintf(stderr,
- _("cannot duplicate null pointer (internal error)\n"));
+ fputs(_("cannot duplicate null pointer (internal error)\n"), stderr);
exit(EXIT_FAILURE);
}
@@ -158,7 +156,7 @@ pnstrdup(const char *in, Size size)
tmp = malloc(len + 1);
if (tmp == NULL)
{
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
exit(EXIT_FAILURE);
}
diff --git a/src/common/logging.c b/src/common/logging.c
index 64604c5209..896c89f487 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -258,9 +258,9 @@ pg_log_generic_v(enum pg_log_level level, enum pg_log_part part,
if (lineno > 0)
fprintf(stderr, UINT64_FORMAT ":", lineno);
}
- fprintf(stderr, " ");
+ fputc(' ', stderr);
if (sgr_locus)
- fprintf(stderr, ANSI_ESCAPE_RESET);
+ fputs(ANSI_ESCAPE_RESET, stderr);
}
if (!(log_flags & PG_LOG_FLAG_TERSE))
@@ -275,14 +275,14 @@ pg_log_generic_v(enum pg_log_level level, enum pg_log_part part,
fprintf(stderr, ANSI_ESCAPE_FMT, sgr_error);
fprintf(stderr, _("error: "));
if (sgr_error)
- fprintf(stderr, ANSI_ESCAPE_RESET);
+ fputs(ANSI_ESCAPE_RESET, stderr);
break;
case PG_LOG_WARNING:
if (sgr_warning)
fprintf(stderr, ANSI_ESCAPE_FMT, sgr_warning);
- fprintf(stderr, _("warning: "));
+ fputs(_("warning: "), stderr);
if (sgr_warning)
- fprintf(stderr, ANSI_ESCAPE_RESET);
+ fputs(ANSI_ESCAPE_RESET, stderr);
break;
default:
break;
@@ -291,16 +291,16 @@ pg_log_generic_v(enum pg_log_level level, enum pg_log_part part,
case PG_LOG_DETAIL:
if (sgr_note)
fprintf(stderr, ANSI_ESCAPE_FMT, sgr_note);
- fprintf(stderr, _("detail: "));
+ fputs(_("detail: "), stderr);
if (sgr_note)
- fprintf(stderr, ANSI_ESCAPE_RESET);
+ fputs(ANSI_ESCAPE_RESET, stderr);
break;
case PG_LOG_HINT:
if (sgr_note)
fprintf(stderr, ANSI_ESCAPE_FMT, sgr_note);
- fprintf(stderr, _("hint: "));
+ fputs(_("hint: "), stderr);
if (sgr_note)
- fprintf(stderr, ANSI_ESCAPE_RESET);
+ fputs(ANSI_ESCAPE_RESET, stderr);
break;
}
}
diff --git a/src/common/psprintf.c b/src/common/psprintf.c
index a5a5cb121c..79eb41c1e5 100644
--- a/src/common/psprintf.c
+++ b/src/common/psprintf.c
@@ -142,7 +142,7 @@ pvsnprintf(char *buf, size_t len, const char *fmt, va_list args)
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("out of memory")));
#else
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
exit(EXIT_FAILURE);
#endif
}
diff --git a/src/common/sprompt.c b/src/common/sprompt.c
index 8b836846e3..ebab6c44fd 100644
--- a/src/common/sprompt.c
+++ b/src/common/sprompt.c
@@ -156,18 +156,18 @@ simple_prompt_extended(const char *prompt, bool echo,
/* restore previous echo behavior, then echo \n */
#if defined(HAVE_TERMIOS_H)
tcsetattr(fileno(termin), TCSAFLUSH, &t_orig);
- fputs("\n", termout);
+ fputc('\n', termout);
fflush(termout);
#elif defined(WIN32)
SetConsoleMode(t, t_orig);
- fputs("\n", termout);
+ fputc('\n', termout);
fflush(termout);
#endif
}
else if (prompt_ctx && prompt_ctx->canceled)
{
/* also echo \n if prompt was canceled */
- fputs("\n", termout);
+ fputc('\n', termout);
fflush(termout);
}
diff --git a/src/fe_utils/print.c b/src/fe_utils/print.c
index 55288f8876..87d23887b0 100644
--- a/src/fe_utils/print.c
+++ b/src/fe_utils/print.c
@@ -1640,7 +1640,7 @@ print_aligned_vertical(const printTableContent *cont,
{
/* Left border */
if (opt_border == 2)
- fprintf(fout, "%s", dformat->leftvrule);
+ fputs(dformat->leftvrule, fout);
/* Header (never wrapped so just need to deal with newlines) */
if (!hcomplete)
@@ -1685,7 +1685,7 @@ print_aligned_vertical(const printTableContent *cont,
/* This was the last line of the header */
if ((opt_border > 0) ||
(hmultiline && (format != &pg_asciiformat_old)))
- fputs(" ", fout);
+ fputc(' ', fout);
hcomplete = 1;
}
}
@@ -1775,7 +1775,7 @@ print_aligned_vertical(const printTableContent *cont,
{
if (swidth > 0)
fprintf(fout, "%*s", swidth, " ");
- fputs(" ", fout);
+ fputc(' ', fout);
}
dcomplete = 1;
}
@@ -1784,7 +1784,7 @@ print_aligned_vertical(const printTableContent *cont,
if (opt_border == 2)
fputs(dformat->rightvrule, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
else
{
@@ -1793,7 +1793,7 @@ print_aligned_vertical(const printTableContent *cont,
* data due to newlines in the header)
*/
if (opt_border < 2)
- fputs("\n", fout);
+ fputc('\n', fout);
else
fprintf(fout, "%*s %s\n", dwidth, "", dformat->rightvrule);
}
@@ -1977,7 +1977,7 @@ html_escaped_print(const char *in, FILE *fout)
if (leading_space)
fputs(" ", fout);
else
- fputs(" ", fout);
+ fputc(' ', fout);
break;
default:
fputc(*p, fout);
@@ -2195,14 +2195,14 @@ print_asciidoc_text(const printTableContent *cont, FILE *fout)
if (cont->opt->start_table)
{
/* print table in new paragraph - enforce preliminary new line */
- fputs("\n", fout);
+ fputc('\n', fout);
/* print title */
if (!opt_tuples_only && cont->title)
{
- fputs(".", fout);
+ fputc('.', fout);
fputs(cont->title, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
/* print table [] header definition */
@@ -2210,10 +2210,10 @@ print_asciidoc_text(const printTableContent *cont, FILE *fout)
for (i = 0; i < cont->ncolumns; i++)
{
if (i != 0)
- fputs(",", fout);
- fprintf(fout, "%s", cont->aligns[(i) % cont->ncolumns] == 'r' ? ">l" : "<l");
+ fputc(',', fout);
+ fputs((cont->aligns[(i) % cont->ncolumns]) == 'r' ? ">l" : "<l", fout);
}
- fputs("\"", fout);
+ fputc('"', fout);
switch (opt_border)
{
case 0:
@@ -2235,11 +2235,11 @@ print_asciidoc_text(const printTableContent *cont, FILE *fout)
for (ptr = cont->headers; *ptr; ptr++)
{
if (ptr != cont->headers)
- fputs(" ", fout);
+ fputc(' ', fout);
fputs("^l|", fout);
asciidoc_escaped_print(*ptr, fout);
}
- fputs("\n", fout);
+ fputc('\n', fout);
}
}
@@ -2253,20 +2253,20 @@ print_asciidoc_text(const printTableContent *cont, FILE *fout)
}
if (i % cont->ncolumns != 0)
- fputs(" ", fout);
- fputs("|", fout);
+ fputc(' ', fout);
+ fputc('|', fout);
/* protect against needless spaces */
if ((*ptr)[strspn(*ptr, " \t")] == '\0')
{
if ((i + 1) % cont->ncolumns != 0)
- fputs(" ", fout);
+ fputc(' ', fout);
}
else
asciidoc_escaped_print(*ptr, fout);
if ((i + 1) % cont->ncolumns == 0)
- fputs("\n", fout);
+ fputc('\n', fout);
}
fputs("|====\n", fout);
@@ -2284,7 +2284,7 @@ print_asciidoc_text(const printTableContent *cont, FILE *fout)
for (f = footers; f; f = f->next)
{
fputs(f->data, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
fputs("....\n", fout);
}
@@ -2306,14 +2306,14 @@ print_asciidoc_vertical(const printTableContent *cont, FILE *fout)
if (cont->opt->start_table)
{
/* print table in new paragraph - enforce preliminary new line */
- fputs("\n", fout);
+ fputc('\n', fout);
/* print title */
if (!opt_tuples_only && cont->title)
{
- fputs(".", fout);
+ fputc('.', fout);
fputs(cont->title, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
/* print table [] header definition */
@@ -2355,10 +2355,10 @@ print_asciidoc_vertical(const printTableContent *cont, FILE *fout)
fprintf(fout, " %s|", cont->aligns[i % cont->ncolumns] == 'r' ? ">l" : "<l");
/* is string only whitespace? */
if ((*ptr)[strspn(*ptr, " \t")] == '\0')
- fputs(" ", fout);
+ fputc(' ', fout);
else
asciidoc_escaped_print(*ptr, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
fputs("|====\n", fout);
@@ -2374,7 +2374,7 @@ print_asciidoc_vertical(const printTableContent *cont, FILE *fout)
for (f = cont->footers; f; f = f->next)
{
fputs(f->data, fout);
- fputs("\n", fout);
+ fputc('\n', fout);
}
fputs("....\n", fout);
}
@@ -3150,7 +3150,7 @@ ClosePager(FILE *pagerpipe)
* anywhere ...
*/
if (cancel_pressed)
- fprintf(pagerpipe, _("Interrupted\n"));
+ fputs(_("Interrupted\n"), pagerpipe);
pclose(pagerpipe);
restore_sigpipe_trap();
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 917b19e0e9..510e34f096 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7025,7 +7025,7 @@ defaultNoticeProcessor(void *arg, const char *message)
{
(void) arg; /* not used */
/* Note: we expect the supplied string to end with a newline already. */
- fprintf(stderr, "%s", message);
+ fputs(message, stderr);
}
/*
diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c
index 21d346a08b..eac118f30b 100644
--- a/src/interfaces/libpq/fe-print.c
+++ b/src/interfaces/libpq/fe-print.c
@@ -113,7 +113,7 @@ PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
fieldMax = (int *) calloc(nFields, sizeof(int));
if (!fieldNames || !fieldNotNum || !fieldMax)
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
goto exit;
}
for (numFieldName = 0;
@@ -205,7 +205,7 @@ PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
nFields * sizeof(char *));
if (!fields)
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
goto exit;
}
}
@@ -404,7 +404,7 @@ do_field(const PQprintOpt *po, const PGresult *res,
fieldMax[j] = plen;
if (!(fields[i * nFields + j] = (char *) malloc(plen + 1)))
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
return false;
}
strcpy(fields[i * nFields + j], pval);
@@ -475,7 +475,7 @@ do_header(FILE *fout, const PQprintOpt *po, const int nFields, int *fieldMax,
border = malloc(tot + 1);
if (!border)
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
return NULL;
}
p = border;
@@ -615,7 +615,7 @@ PQdisplayTuples(const PGresult *res,
fLength = (int *) malloc(nFields * sizeof(int));
if (!fLength)
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
return;
}
@@ -642,7 +642,7 @@ PQdisplayTuples(const PGresult *res,
fill(strlen(PQfname(res, i)), fLength[i], ' ', fp);
fputs(fieldSep, fp);
}
- fprintf(fp, "\n");
+ fputc('\n', fp);
/* Underline the attribute names */
for (i = 0; i < nFields; i++)
@@ -651,7 +651,7 @@ PQdisplayTuples(const PGresult *res,
fill(0, fLength[i], '-', fp);
fputs(fieldSep, fp);
}
- fprintf(fp, "\n");
+ fputc('\n', fp);
}
/* next, print out the instances */
@@ -659,12 +659,12 @@ PQdisplayTuples(const PGresult *res,
{
for (j = 0; j < nFields; j++)
{
- fprintf(fp, "%s", PQgetvalue(res, i, j));
+ fputs(PQgetvalue(res, i, j), fp);
if (fillAlign)
fill(strlen(PQgetvalue(res, i, j)), fLength[j], ' ', fp);
fputs(fieldSep, fp);
}
- fprintf(fp, "\n");
+ fputc('\n', fp);
}
if (!quiet)
@@ -712,7 +712,7 @@ PQprintTuples(const PGresult *res,
tborder = (char *) malloc(width + 1);
if (!tborder)
{
- fprintf(stderr, libpq_gettext("out of memory\n"));
+ fputs(libpq_gettext("out of memory\n"), stderr);
return;
}
for (i = 0; i < width; i++)
@@ -734,7 +734,7 @@ PQprintTuples(const PGresult *res,
if (PrintAttNames)
{
if (TerseOutput)
- fprintf(fout, "\n");
+ fputc('\n', fout);
else
fprintf(fout, "|\n%s\n", tborder);
}
@@ -750,7 +750,7 @@ PQprintTuples(const PGresult *res,
pval ? pval : "");
}
if (TerseOutput)
- fprintf(fout, "\n");
+ fputc('\n', fout);
else
fprintf(fout, "|\n%s\n", tborder);
}
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index 3798bb3f11..5c3c836028 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -1939,7 +1939,7 @@ PQdefaultSSLKeyPassHook_OpenSSL(char *buf, int size, PGconn *conn)
if (conn && conn->sslpassword)
{
if (strlen(conn->sslpassword) + 1 > size)
- fprintf(stderr, libpq_gettext("WARNING: sslpassword truncated\n"));
+ fputs(libpq_gettext("WARNING: sslpassword truncated\n"), stderr);
strncpy(buf, conn->sslpassword, size);
buf[size - 1] = '\0';
return strlen(buf);
diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c
index 5d68cf2eb3..1a6f447f50 100644
--- a/src/interfaces/libpq/fe-trace.c
+++ b/src/interfaces/libpq/fe-trace.c
@@ -149,7 +149,7 @@ pqTraceOutputInt32(FILE *pfdebug, const char *data, int *cursor, bool suppress)
*cursor += 4;
result = (int) pg_ntoh32(result);
if (suppress)
- fprintf(pfdebug, " NNNN");
+ fputs(" NNNN", pfdebug);
else
fprintf(pfdebug, " %d", result);
@@ -166,7 +166,7 @@ pqTraceOutputString(FILE *pfdebug, const char *data, int *cursor, bool suppress)
if (suppress)
{
- fprintf(pfdebug, " \"SSSS\"");
+ fputs(" \"SSSS\"", pfdebug);
*cursor += strlen(data + *cursor) + 1;
}
else
@@ -191,7 +191,7 @@ pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor)
next; /* first char not yet printed */
const char *v = data + *cursor;
- fprintf(pfdebug, " \'");
+ fputs(" \'", pfdebug);
for (next = i = 0; i < len; ++i)
{
@@ -207,7 +207,7 @@ pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor)
if (next < len)
fwrite(v + next, 1, len - next, pfdebug);
- fprintf(pfdebug, "\'");
+ fputc('\'', pfdebug);
*cursor += len;
}
@@ -219,7 +219,7 @@ pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor)
static void
pqTraceOutputA(FILE *f, const char *message, int *cursor, bool regress)
{
- fprintf(f, "NotificationResponse\t");
+ fputs("NotificationResponse\t", f);
pqTraceOutputInt32(f, message, cursor, regress);
pqTraceOutputString(f, message, cursor, false);
pqTraceOutputString(f, message, cursor, false);
@@ -231,7 +231,7 @@ pqTraceOutputB(FILE *f, const char *message, int *cursor)
{
int nparams;
- fprintf(f, "Bind\t");
+ fputs("Bind\t", f);
pqTraceOutputString(f, message, cursor, false);
pqTraceOutputString(f, message, cursor, false);
nparams = pqTraceOutputInt16(f, message, cursor);
@@ -262,13 +262,13 @@ pqTraceOutputC(FILE *f, bool toServer, const char *message, int *cursor)
{
if (toServer)
{
- fprintf(f, "Close\t");
+ fputs("Close\t", f);
pqTraceOutputByte1(f, message, cursor);
pqTraceOutputString(f, message, cursor, false);
}
else
{
- fprintf(f, "CommandComplete\t");
+ fputs("CommandComplete\t", f);
pqTraceOutputString(f, message, cursor, false);
}
}
@@ -279,7 +279,7 @@ pqTraceOutputD(FILE *f, bool toServer, const char *message, int *cursor)
{
if (toServer)
{
- fprintf(f, "Describe\t");
+ fputs("Describe\t", f);
pqTraceOutputByte1(f, message, cursor);
pqTraceOutputString(f, message, cursor, false);
}
@@ -289,7 +289,7 @@ pqTraceOutputD(FILE *f, bool toServer, const char *message, int *cursor)
int len;
int i;
- fprintf(f, "DataRow\t");
+ fputs("DataRow\t", f);
nfields = pqTraceOutputInt16(f, message, cursor);
for (i = 0; i < nfields; i++)
{
@@ -328,7 +328,7 @@ pqTraceOutputE(FILE *f, bool toServer, const char *message, int *cursor, bool re
{
if (toServer)
{
- fprintf(f, "Execute\t");
+ fputs("Execute\t", f);
pqTraceOutputString(f, message, cursor, false);
pqTraceOutputInt32(f, message, cursor, false);
}
@@ -340,7 +340,7 @@ pqTraceOutputE(FILE *f, bool toServer, const char *message, int *cursor, bool re
static void
pqTraceOutputf(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "CopyFail\t");
+ fputs("CopyFail\t", f);
pqTraceOutputString(f, message, cursor, false);
}
@@ -351,7 +351,7 @@ pqTraceOutputF(FILE *f, const char *message, int *cursor, bool regress)
int nfields;
int nbytes;
- fprintf(f, "FunctionCall\t");
+ fputs("FunctionCall\t", f);
pqTraceOutputInt32(f, message, cursor, regress);
nfields = pqTraceOutputInt16(f, message, cursor);
@@ -377,7 +377,7 @@ pqTraceOutputG(FILE *f, const char *message, int *cursor)
{
int nfields;
- fprintf(f, "CopyInResponse\t");
+ fputs("CopyInResponse\t", f);
pqTraceOutputByte1(f, message, cursor);
nfields = pqTraceOutputInt16(f, message, cursor);
@@ -391,7 +391,7 @@ pqTraceOutputH(FILE *f, const char *message, int *cursor)
{
int nfields;
- fprintf(f, "CopyOutResponse\t");
+ fputs("CopyOutResponse\t", f);
pqTraceOutputByte1(f, message, cursor);
nfields = pqTraceOutputInt16(f, message, cursor);
@@ -403,7 +403,7 @@ pqTraceOutputH(FILE *f, const char *message, int *cursor)
static void
pqTraceOutputK(FILE *f, const char *message, int *cursor, bool regress)
{
- fprintf(f, "BackendKeyData\t");
+ fputs("BackendKeyData\t", f);
pqTraceOutputInt32(f, message, cursor, regress);
pqTraceOutputInt32(f, message, cursor, regress);
}
@@ -414,7 +414,7 @@ pqTraceOutputP(FILE *f, const char *message, int *cursor, bool regress)
{
int nparams;
- fprintf(f, "Parse\t");
+ fputs("Parse\t", f);
pqTraceOutputString(f, message, cursor, false);
pqTraceOutputString(f, message, cursor, false);
nparams = pqTraceOutputInt16(f, message, cursor);
@@ -427,7 +427,7 @@ pqTraceOutputP(FILE *f, const char *message, int *cursor, bool regress)
static void
pqTraceOutputQ(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "Query\t");
+ fputs("Query\t", f);
pqTraceOutputString(f, message, cursor, false);
}
@@ -435,7 +435,7 @@ pqTraceOutputQ(FILE *f, const char *message, int *cursor)
static void
pqTraceOutputR(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "Authentication\t");
+ fputs("Authentication\t", f);
pqTraceOutputInt32(f, message, cursor, false);
}
@@ -443,7 +443,7 @@ pqTraceOutputR(FILE *f, const char *message, int *cursor)
static void
pqTraceOutputS(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "ParameterStatus\t");
+ fputs("ParameterStatus\t", f);
pqTraceOutputString(f, message, cursor, false);
pqTraceOutputString(f, message, cursor, false);
}
@@ -454,7 +454,7 @@ pqTraceOutputt(FILE *f, const char *message, int *cursor, bool regress)
{
int nfields;
- fprintf(f, "ParameterDescription\t");
+ fputs("ParameterDescription\t", f);
nfields = pqTraceOutputInt16(f, message, cursor);
for (int i = 0; i < nfields; i++)
@@ -467,7 +467,7 @@ pqTraceOutputT(FILE *f, const char *message, int *cursor, bool regress)
{
int nfields;
- fprintf(f, "RowDescription\t");
+ fputs("RowDescription\t", f);
nfields = pqTraceOutputInt16(f, message, cursor);
for (int i = 0; i < nfields; i++)
@@ -486,7 +486,7 @@ pqTraceOutputT(FILE *f, const char *message, int *cursor, bool regress)
static void
pqTraceOutputv(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "NegotiateProtocolVersion\t");
+ fputs("NegotiateProtocolVersion\t", f);
pqTraceOutputInt32(f, message, cursor, false);
pqTraceOutputInt32(f, message, cursor, false);
}
@@ -497,7 +497,7 @@ pqTraceOutputV(FILE *f, const char *message, int *cursor)
{
int len;
- fprintf(f, "FunctionCallResponse\t");
+ fputs("FunctionCallResponse\t", f);
len = pqTraceOutputInt32(f, message, cursor, false);
if (len != -1)
pqTraceOutputNchar(f, len, message, cursor);
@@ -507,7 +507,7 @@ pqTraceOutputV(FILE *f, const char *message, int *cursor)
static void
pqTraceOutputW(FILE *f, const char *message, int *cursor, int length)
{
- fprintf(f, "CopyBothResponse\t");
+ fputs("CopyBothResponse\t", f);
pqTraceOutputByte1(f, message, cursor);
while (length > *cursor)
@@ -518,7 +518,7 @@ pqTraceOutputW(FILE *f, const char *message, int *cursor, int length)
static void
pqTraceOutputZ(FILE *f, const char *message, int *cursor)
{
- fprintf(f, "ReadyForQuery\t");
+ fputs("ReadyForQuery\t", f);
pqTraceOutputByte1(f, message, cursor);
}
@@ -563,15 +563,15 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
switch (id)
{
case '1':
- fprintf(conn->Pfdebug, "ParseComplete");
+ fputs("ParseComplete", conn->Pfdebug);
/* No message content */
break;
case '2':
- fprintf(conn->Pfdebug, "BindComplete");
+ fputs("BindComplete", conn->Pfdebug);
/* No message content */
break;
case '3':
- fprintf(conn->Pfdebug, "CloseComplete");
+ fputs("CloseComplete", conn->Pfdebug);
/* No message content */
break;
case 'A': /* Notification Response */
@@ -581,7 +581,7 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
pqTraceOutputB(conn->Pfdebug, message, &logCursor);
break;
case 'c':
- fprintf(conn->Pfdebug, "CopyDone");
+ fputs("CopyDone", conn->Pfdebug);
/* No message content */
break;
case 'C': /* Close(F) or Command Complete(B) */
@@ -610,17 +610,17 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
if (!toServer)
pqTraceOutputH(conn->Pfdebug, message, &logCursor);
else
- fprintf(conn->Pfdebug, "Flush"); /* no message content */
+ fputs("Flush", conn->Pfdebug); /* no message content */
break;
case 'I':
- fprintf(conn->Pfdebug, "EmptyQueryResponse");
+ fputs("EmptyQueryResponse", conn->Pfdebug);
/* No message content */
break;
case 'K': /* secret key data from the backend */
pqTraceOutputK(conn->Pfdebug, message, &logCursor, regress);
break;
case 'n':
- fprintf(conn->Pfdebug, "NoData");
+ fputs("NoData", conn->Pfdebug);
/* No message content */
break;
case 'N':
@@ -637,14 +637,14 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
pqTraceOutputR(conn->Pfdebug, message, &logCursor);
break;
case 's':
- fprintf(conn->Pfdebug, "PortalSuspended");
+ fputs("PortalSuspended", conn->Pfdebug);
/* No message content */
break;
case 'S': /* Parameter Status(B) or Sync(F) */
if (!toServer)
pqTraceOutputS(conn->Pfdebug, message, &logCursor);
else
- fprintf(conn->Pfdebug, "Sync"); /* no message content */
+ fputs("Sync", conn->Pfdebug); /* no message content */
break;
case 't': /* Parameter Description */
pqTraceOutputt(conn->Pfdebug, message, &logCursor, regress);
@@ -662,7 +662,7 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
pqTraceOutputW(conn->Pfdebug, message, &logCursor, length);
break;
case 'X':
- fprintf(conn->Pfdebug, "Terminate");
+ fputs("Terminate", conn->Pfdebug);
/* No message content */
break;
case 'Z': /* Ready For Query */
diff --git a/src/interfaces/libpq/test/libpq_testclient.c b/src/interfaces/libpq/test/libpq_testclient.c
index d945bacf1b..1766ea3158 100644
--- a/src/interfaces/libpq/test/libpq_testclient.c
+++ b/src/interfaces/libpq/test/libpq_testclient.c
@@ -18,7 +18,7 @@ print_ssl_library()
const char *lib = PQsslAttribute(NULL, "library");
if (!lib)
- fprintf(stderr, "SSL is not enabled\n");
+ fputs("SSL is not enabled\n", stderr);
else
printf("%s\n", lib);
}
diff --git a/src/interfaces/libpq/test/libpq_uri_regress.c b/src/interfaces/libpq/test/libpq_uri_regress.c
index 60469002fd..52f4afedc1 100644
--- a/src/interfaces/libpq/test/libpq_uri_regress.c
+++ b/src/interfaces/libpq/test/libpq_uri_regress.c
@@ -40,7 +40,7 @@ main(int argc, char *argv[])
defs = PQconndefaults();
if (defs == NULL)
{
- fprintf(stderr, "libpq_uri_regress: cannot fetch default options\n");
+ fputs("libpq_uri_regress: cannot fetch default options\n", stderr);
return 1;
}
diff --git a/src/port/path.c b/src/port/path.c
index 05fe812f75..7f3d61966b 100644
--- a/src/port/path.c
+++ b/src/port/path.c
@@ -750,7 +750,7 @@ make_absolute_path(const char *path)
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
#else
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
return NULL;
#endif
}
@@ -788,7 +788,7 @@ make_absolute_path(const char *path)
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
#else
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
return NULL;
#endif
}
@@ -805,7 +805,7 @@ make_absolute_path(const char *path)
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
#else
- fprintf(stderr, _("out of memory\n"));
+ fputs(_("out of memory\n"), stderr);
return NULL;
#endif
}
diff --git a/src/test/examples/testlibpq.c b/src/test/examples/testlibpq.c
index 0372781eaf..99d3c2578a 100644
--- a/src/test/examples/testlibpq.c
+++ b/src/test/examples/testlibpq.c
@@ -43,7 +43,7 @@ main(int argc, char **argv)
/* Check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit_nicely(conn);
}
diff --git a/src/test/examples/testlibpq2.c b/src/test/examples/testlibpq2.c
index 05ce8c3f13..24d9687bc2 100644
--- a/src/test/examples/testlibpq2.c
+++ b/src/test/examples/testlibpq2.c
@@ -70,7 +70,7 @@ main(int argc, char **argv)
/* Check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit_nicely(conn);
}
@@ -141,7 +141,7 @@ main(int argc, char **argv)
}
}
- fprintf(stderr, "Done.\n");
+ fputs("Done.\n", stderr);
/* close the connection to the database and cleanup */
PQfinish(conn);
diff --git a/src/test/examples/testlibpq3.c b/src/test/examples/testlibpq3.c
index 4f7b791388..f2d5797d53 100644
--- a/src/test/examples/testlibpq3.c
+++ b/src/test/examples/testlibpq3.c
@@ -138,7 +138,7 @@ main(int argc, char **argv)
/* Check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit_nicely(conn);
}
diff --git a/src/test/examples/testlibpq4.c b/src/test/examples/testlibpq4.c
index da4443072d..14d14b5d7c 100644
--- a/src/test/examples/testlibpq4.c
+++ b/src/test/examples/testlibpq4.c
@@ -29,7 +29,7 @@ check_prepare_conn(PGconn *conn, const char *dbName)
/* check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit(1);
}
diff --git a/src/test/examples/testlo.c b/src/test/examples/testlo.c
index 1b08b6cac5..1761d36788 100644
--- a/src/test/examples/testlo.c
+++ b/src/test/examples/testlo.c
@@ -54,7 +54,7 @@ importFile(PGconn *conn, char *filename)
*/
lobjId = lo_creat(conn, INV_READ | INV_WRITE);
if (lobjId == 0)
- fprintf(stderr, "cannot create large object");
+ fputs("cannot create large object", stderr);
lobj_fd = lo_open(conn, lobjId, INV_WRITE);
@@ -100,7 +100,7 @@ pickout(PGconn *conn, Oid lobjId, int start, int len)
break; /* no more data? */
}
free(buf);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
lo_close(conn, lobj_fd);
}
@@ -131,12 +131,12 @@ overwrite(PGconn *conn, Oid lobjId, int start, int len)
nwritten += nbytes;
if (nbytes <= 0)
{
- fprintf(stderr, "\nWRITE FAILED!\n");
+ fputs("\nWRITE FAILED!\n", stderr);
break;
}
}
free(buf);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
lo_close(conn, lobj_fd);
}
@@ -225,7 +225,7 @@ main(int argc, char **argv)
/* check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit_nicely(conn);
}
diff --git a/src/test/examples/testlo64.c b/src/test/examples/testlo64.c
index 981e29ad78..550b1a7dd3 100644
--- a/src/test/examples/testlo64.c
+++ b/src/test/examples/testlo64.c
@@ -54,7 +54,7 @@ importFile(PGconn *conn, char *filename)
*/
lobjId = lo_creat(conn, INV_READ | INV_WRITE);
if (lobjId == 0)
- fprintf(stderr, "cannot create large object");
+ fputs("cannot create large object", stderr);
lobj_fd = lo_open(conn, lobjId, INV_WRITE);
@@ -105,7 +105,7 @@ pickout(PGconn *conn, Oid lobjId, pg_int64 start, int len)
break; /* no more data? */
}
free(buf);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
lo_close(conn, lobj_fd);
}
@@ -138,12 +138,12 @@ overwrite(PGconn *conn, Oid lobjId, pg_int64 start, int len)
nwritten += nbytes;
if (nbytes <= 0)
{
- fprintf(stderr, "\nWRITE FAILED!\n");
+ fputs("\nWRITE FAILED!\n", stderr);
break;
}
}
free(buf);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
lo_close(conn, lobj_fd);
}
@@ -249,7 +249,7 @@ main(int argc, char **argv)
/* check to see that the backend connection was successfully made */
if (PQstatus(conn) != CONNECTION_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fputs(PQerrorMessage(conn), stderr);
exit_nicely(conn);
}
diff --git a/src/test/isolation/isolation_main.c b/src/test/isolation/isolation_main.c
index 31a0e6b709..37251647ad 100644
--- a/src/test/isolation/isolation_main.c
+++ b/src/test/isolation/isolation_main.c
@@ -45,7 +45,7 @@ isolation_start_test(const char *testname,
if (find_other_exec(saved_argv0, "isolationtester",
PG_ISOLATION_VERSIONSTR, isolation_exec) != 0)
{
- fprintf(stderr, _("could not find proper isolationtester binary\n"));
+ fputs(_("could not find proper isolationtester binary\n"), stderr);
exit(2);
}
looked_up_isolation_exec = true;
@@ -81,7 +81,7 @@ isolation_start_test(const char *testname,
"%s ", launcher);
if (offset >= sizeof(psql_cmd))
{
- fprintf(stderr, _("command too long\n"));
+ fputs(_("command too long\n"), stderr);
exit(2);
}
}
@@ -94,7 +94,7 @@ isolation_start_test(const char *testname,
outfile);
if (offset >= sizeof(psql_cmd))
{
- fprintf(stderr, _("command too long\n"));
+ fputs(_("command too long\n"), stderr);
exit(2);
}
diff --git a/src/test/modules/libpq_pipeline/libpq_pipeline.c b/src/test/modules/libpq_pipeline/libpq_pipeline.c
index 0407c4a8c0..57aaf36102 100644
--- a/src/test/modules/libpq_pipeline/libpq_pipeline.c
+++ b/src/test/modules/libpq_pipeline/libpq_pipeline.c
@@ -80,7 +80,7 @@ pg_fatal_impl(int line, const char *fmt,...)
vfprintf(stderr, fmt, args);
va_end(args);
Assert(fmt[strlen(fmt) - 1] != '\n');
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
exit(1);
}
@@ -89,7 +89,7 @@ test_disallowed_in_pipeline(PGconn *conn)
{
PGresult *res = NULL;
- fprintf(stderr, "test error cases... ");
+ fputs("test error cases... ", stderr);
if (PQisnonblocking(conn))
pg_fatal("Expected blocking connection mode");
@@ -129,7 +129,7 @@ test_disallowed_in_pipeline(PGconn *conn)
pg_fatal("PQexec should succeed after exiting pipeline mode but failed with: %s",
PQerrorMessage(conn));
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
static void
@@ -139,7 +139,7 @@ test_multi_pipelines(PGconn *conn)
const char *dummy_params[1] = {"1"};
Oid dummy_param_oids[1] = {INT4OID};
- fprintf(stderr, "multi pipeline... ");
+ fputs("multi pipeline... ", stderr);
/*
* Queue up a couple of small pipelines and process each without returning
@@ -227,7 +227,7 @@ test_multi_pipelines(PGconn *conn)
if (PQpipelineStatus(conn) != PQ_PIPELINE_OFF)
pg_fatal("exiting pipeline mode didn't seem to work");
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/*
@@ -241,7 +241,7 @@ test_nosync(PGconn *conn)
int results = 0;
int sock = PQsocket(conn);
- fprintf(stderr, "nosync... ");
+ fputs("nosync... ", stderr);
if (sock < 0)
pg_fatal("invalid socket");
@@ -314,7 +314,7 @@ test_nosync(PGconn *conn)
pg_fatal("got unexpected %s\n", PQresStatus(PQresultStatus(res)));
}
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/*
@@ -336,7 +336,7 @@ test_pipeline_abort(PGconn *conn)
int gotrows;
bool goterror;
- fprintf(stderr, "aborted pipeline... ");
+ fputs("aborted pipeline... ", stderr);
res = PQexec(conn, drop_table_sql);
if (PQresultStatus(res) != PGRES_COMMAND_OK)
@@ -524,7 +524,7 @@ test_pipeline_abort(PGconn *conn)
if (PQresultStatus(res) != PGRES_PIPELINE_SYNC)
pg_fatal("Unexpected result code %s from pipeline sync",
PQresStatus(PQresultStatus(res)));
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
/* Test single-row mode with an error partways */
if (PQsendQuery(conn, "SELECT 1.0/g FROM generate_series(3, -1, -1) g") != 1)
@@ -611,7 +611,7 @@ test_pipeline_abort(PGconn *conn)
PQclear(res);
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/* State machine enum for test_pipelined_insert */
@@ -850,7 +850,7 @@ test_pipelined_insert(PGconn *conn, int n_rows)
{
if (PQpipelineSync(conn) == 1)
{
- fprintf(stdout, "pipeline sync sent\n");
+ fputs("pipeline sync sent\n", stdout);
send_step++;
}
else
@@ -870,7 +870,7 @@ test_pipelined_insert(PGconn *conn, int n_rows)
if (PQsetnonblocking(conn, 0) != 0)
pg_fatal("failed to clear nonblocking mode: %s", PQerrorMessage(conn));
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
static void
@@ -881,7 +881,7 @@ test_prepared(PGconn *conn)
Oid expected_oids[4];
Oid typ;
- fprintf(stderr, "prepared... ");
+ fputs("prepared... ", stderr);
if (PQenterPipelineMode(conn) != 1)
pg_fatal("failed to enter pipeline mode: %s", PQerrorMessage(conn));
@@ -963,7 +963,7 @@ test_prepared(PGconn *conn)
if (PQexitPipelineMode(conn) != 1)
pg_fatal("could not exit pipeline mode: %s", PQerrorMessage(conn));
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/* Notice processor: print notices, and count how many we got */
@@ -983,7 +983,7 @@ test_pipeline_idle(PGconn *conn)
PGresult *res;
int n_notices = 0;
- fprintf(stderr, "\npipeline idle...\n");
+ fputs("\npipeline idle...\n", stderr);
PQsetNoticeProcessor(conn, notice_processor, &n_notices);
@@ -1033,7 +1033,7 @@ test_pipeline_idle(PGconn *conn)
*/
if (n_notices > 0)
pg_fatal("got %d notice(s)", n_notices);
- fprintf(stderr, "ok - 1\n");
+ fputs("ok - 1\n", stderr);
/*
* Verify that we can send a query using simple query protocol after one
@@ -1071,7 +1071,7 @@ test_pipeline_idle(PGconn *conn)
pg_fatal("did not receive terminating NULL");
if (n_notices > 0)
pg_fatal("got %d notice(s)", n_notices);
- fprintf(stderr, "ok - 2\n");
+ fputs("ok - 2\n", fputs);
/*
* Case 2: exiting pipeline mode is not OK if a second command is sent.
@@ -1149,7 +1149,7 @@ test_pipeline_idle(PGconn *conn)
if (n_notices > 0)
pg_fatal("got %d notice(s)", n_notices);
- fprintf(stderr, "ok - 3\n");
+ fputs("ok - 3\n", stderr);
/* Have a WARNING in the middle of a resultset */
if (PQenterPipelineMode(conn) != 1)
@@ -1164,7 +1164,7 @@ test_pipeline_idle(PGconn *conn)
pg_fatal("unexpected result code %s", PQresStatus(PQresultStatus(res)));
if (PQexitPipelineMode(conn) != 1)
pg_fatal("failed to exit pipeline mode: %s", PQerrorMessage(conn));
- fprintf(stderr, "ok - 4\n");
+ fputs("ok - 4\n", stderr);
}
static void
@@ -1174,7 +1174,7 @@ test_simple_pipeline(PGconn *conn)
const char *dummy_params[1] = {"1"};
Oid dummy_param_oids[1] = {INT4OID};
- fprintf(stderr, "simple pipeline... ");
+ fputs("simple pipeline... ", stderr);
/*
* Enter pipeline mode and dispatch a set of operations, which we'll then
@@ -1251,7 +1251,7 @@ test_simple_pipeline(PGconn *conn)
if (PQpipelineStatus(conn) != PQ_PIPELINE_OFF)
pg_fatal("Exiting pipeline mode didn't seem to work");
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
static void
@@ -1308,7 +1308,7 @@ test_singlerowmode(PGconn *conn)
if (est == PGRES_PIPELINE_SYNC)
{
- fprintf(stderr, "end of pipeline reached\n");
+ fputs("end of pipeline reached\n", stderr);
pipeline_ended = true;
PQclear(res);
if (i != 3)
@@ -1360,7 +1360,7 @@ test_singlerowmode(PGconn *conn)
if (PQexitPipelineMode(conn) != 1)
pg_fatal("failed to end pipeline mode: %s", PQerrorMessage(conn));
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/*
@@ -1507,7 +1507,7 @@ test_transaction(PGconn *conn)
pg_fatal("did not get expected tuple");
PQclear(res);
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/*
@@ -1536,7 +1536,7 @@ test_uniqviol(PGconn *conn)
fd_set in_fds;
fd_set out_fds;
- fprintf(stderr, "uniqviol ...");
+ fputs("uniqviol ...", stderr);
PQsetnonblocking(conn, 1);
@@ -1631,12 +1631,12 @@ test_uniqviol(PGconn *conn)
if (switched >= 1 && !error_sent && ctr % socketful >= socketful / 2)
{
sprintf(paramValue0, "%d", numsent / 2);
- fprintf(stderr, "E");
+ fputc('E', stderr);
error_sent = true;
}
else
{
- fprintf(stderr, ".");
+ fputc('.', stderr);
sprintf(paramValue0, "%d", ctr++);
}
@@ -1650,7 +1650,7 @@ test_uniqviol(PGconn *conn)
if (PQsendFlushRequest(conn) != 1)
pg_fatal("failed to send flush request");
write_done = true;
- fprintf(stderr, "\ndone writing\n");
+ fputs("\ndone writing\n", stderr);
PQflush(conn);
break;
}
@@ -1663,7 +1663,7 @@ test_uniqviol(PGconn *conn)
{
if (socketful == 0)
socketful = numsent;
- fprintf(stderr, "\nswitch to reading\n");
+ fputs("\nswitch to reading\n", stderr);
switched++;
break;
}
@@ -1674,7 +1674,7 @@ test_uniqviol(PGconn *conn)
if (!got_error)
pg_fatal("did not get expected error");
- fprintf(stderr, "ok\n");
+ fputs("ok\n", stderr);
}
/*
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 7290948eee..13157724c3 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -245,10 +245,10 @@ status(const char *fmt,...)
static void
status_end(void)
{
- fprintf(stdout, "\n");
+ fputc('\n', stdout);
fflush(stdout);
if (logfile)
- fprintf(logfile, "\n");
+ fputc('\n', logfile);
}
/*
diff --git a/src/test/regress/pg_regress_main.c b/src/test/regress/pg_regress_main.c
index a4b354c9e6..594d0ce570 100644
--- a/src/test/regress/pg_regress_main.c
+++ b/src/test/regress/pg_regress_main.c
@@ -68,7 +68,7 @@ psql_start_test(const char *testname,
"%s ", launcher);
if (offset >= sizeof(psql_cmd))
{
- fprintf(stderr, _("command too long\n"));
+ fputs(_("command too long\n"), stderr);
exit(2);
}
}
@@ -87,7 +87,7 @@ psql_start_test(const char *testname,
outfile);
if (offset >= sizeof(psql_cmd))
{
- fprintf(stderr, _("command too long\n"));
+ fputs(_("command too long\n"), stderr);
exit(2);
}
diff --git a/src/timezone/zic.c b/src/timezone/zic.c
index 0ea6ead2db..ec432b6a23 100644
--- a/src/timezone/zic.c
+++ b/src/timezone/zic.c
@@ -495,7 +495,7 @@ verror(const char *string, va_list args)
if (rfilename != NULL)
fprintf(stderr, _(" (rule from \"%s\", line %d)"),
rfilename, rlinenum);
- fprintf(stderr, "\n");
+ fputc('\n', stderr);
}
static void
@@ -514,7 +514,7 @@ warning(const char *string,...)
{
va_list args;
- fprintf(stderr, _("warning: "));
+ fputs(_("warning: "), stderr);
va_start(args, string);
verror(string, args);
va_end(args);