From 037a82704ce644e2b1c3946345b54444caddb1a5 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Tue, 27 Dec 2011 21:19:09 +0200
Subject: [PATCH] Standardize treatment of strcmp() return value

Always compare the return value to 0, don't use cute tricks like
if (!strcmp(...)).
---
 contrib/fuzzystrmatch/dmetaphone.c       |  2 +-
 contrib/isn/isn.c                        | 24 ++++++++++-----------
 contrib/pgbench/pgbench.c                |  2 +-
 contrib/pgcrypto/crypt-md5.c             |  2 +-
 contrib/pgcrypto/internal.c              |  2 +-
 contrib/pgcrypto/openssl.c               |  2 +-
 contrib/pgcrypto/px-crypt.c              |  2 +-
 contrib/pgcrypto/px.c                    |  6 +++---
 src/backend/libpq/auth.c                 |  2 +-
 src/backend/utils/adt/formatting.c       |  4 ++--
 src/bin/initdb/initdb.c                  | 24 ++++++++++-----------
 src/bin/pg_basebackup/pg_receivexlog.c   |  2 +-
 src/bin/pg_ctl/pg_ctl.c                  | 27 ++++++++++++------------
 src/bin/pg_dump/pg_dump.c                |  6 +++---
 src/bin/psql/tab-complete.c              |  2 +-
 src/interfaces/ecpg/ecpglib/data.c       |  6 +++---
 src/interfaces/ecpg/ecpglib/descriptor.c |  2 +-
 src/interfaces/ecpg/ecpglib/execute.c    |  6 +++---
 src/interfaces/ecpg/ecpglib/prepare.c    |  2 +-
 src/interfaces/ecpg/preproc/descriptor.c |  8 +++----
 src/interfaces/ecpg/preproc/ecpg.addons  |  2 +-
 src/interfaces/ecpg/preproc/ecpg.header  |  4 ++--
 src/interfaces/ecpg/preproc/output.c     |  2 +-
 src/interfaces/ecpg/preproc/pgc.l        |  4 ++--
 src/interfaces/ecpg/preproc/type.c       |  4 ++--
 src/interfaces/ecpg/preproc/variable.c   |  2 +-
 src/interfaces/libpq/fe-lobj.c           | 20 +++++++++---------
 27 files changed, 85 insertions(+), 86 deletions(-)

diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c
index 6721e58f220..f562f5484cc 100644
--- a/contrib/fuzzystrmatch/dmetaphone.c
+++ b/contrib/fuzzystrmatch/dmetaphone.c
@@ -364,7 +364,7 @@ StringAt(metastring *s, int start, int length,...)
 		if (*test && (strncmp(pos, test, length) == 0))
 			return 1;
 	}
-	while (strcmp(test, ""));
+	while (strcmp(test, "") != 0);
 
 	va_end(ap);
 
diff --git a/contrib/isn/isn.c b/contrib/isn/isn.c
index b698cb00ff5..ac5f21c7d78 100644
--- a/contrib/isn/isn.c
+++ b/contrib/isn/isn.c
@@ -365,19 +365,19 @@ ean2isn(ean13 ean, bool errorOK, ean13 *result, enum isn_type accept)
 		*--aux = '0';			/* fill the remaining EAN13 with '0' */
 
 	/* find out the data type: */
-	if (!strncmp("978", buf, 3))
+	if (strncmp("978", buf, 3) == 0)
 	{							/* ISBN */
 		type = ISBN;
 	}
-	else if (!strncmp("977", buf, 3))
+	else if (strncmp("977", buf, 3) == 0)
 	{							/* ISSN */
 		type = ISSN;
 	}
-	else if (!strncmp("9790", buf, 4))
+	else if (strncmp("9790", buf, 4) == 0)
 	{							/* ISMN */
 		type = ISMN;
 	}
-	else if (!strncmp("979", buf, 3))
+	else if (strncmp("979", buf, 3) == 0)
 	{							/* ISBN-13 */
 		type = ISBN;
 	}
@@ -570,28 +570,28 @@ ean2string(ean13 ean, bool errorOK, char *result, bool shortType)
 	}
 
 	/* find out what type of hyphenation is needed: */
-	if (!strncmp("978-", result, search))
+	if (strncmp("978-", result, search) == 0)
 	{							/* ISBN -13 978-range */
 		/* The string should be in this form: 978-??000000000-0" */
 		type = ISBN;
 		TABLE = ISBN_range;
 		TABLE_index = ISBN_index;
 	}
-	else if (!strncmp("977-", result, search))
+	else if (strncmp("977-", result, search) == 0)
 	{							/* ISSN */
 		/* The string should be in this form: 977-??000000000-0" */
 		type = ISSN;
 		TABLE = ISSN_range;
 		TABLE_index = ISSN_index;
 	}
-	else if (!strncmp("979-0", result, search + 1))
+	else if (strncmp("979-0", result, search + 1) == 0)
 	{							/* ISMN */
 		/* The string should be in this form: 979-0?000000000-0" */
 		type = ISMN;
 		TABLE = ISMN_range;
 		TABLE_index = ISMN_index;
 	}
-	else if (!strncmp("979-", result, search))
+	else if (strncmp("979-", result, search) == 0)
 	{							/* ISBN-13 979-range */
 		/* The string should be in this form: 979-??000000000-0" */
 		type = ISBN;
@@ -813,13 +813,13 @@ string2ean(const char *str, bool errorOK, ean13 *result,
 			/* now get the subtype of EAN13: */
 			if (buf[3] == '0')
 				type = UPC;
-			else if (!strncmp("977", buf + 3, 3))
+			else if (strncmp("977", buf + 3, 3) == 0)
 				type = ISSN;
-			else if (!strncmp("978", buf + 3, 3))
+			else if (strncmp("978", buf + 3, 3) == 0)
 				type = ISBN;
-			else if (!strncmp("9790", buf + 3, 4))
+			else if (strncmp("9790", buf + 3, 4) == 0)
 				type = ISMN;
-			else if (!strncmp("979", buf + 3, 3))
+			else if (strncmp("979", buf + 3, 3) == 0)
 				type = ISBN;
 			if (accept != EAN13 && accept != ANY && type != accept)
 				goto eanwrongtype;
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index dbf53f4219e..91d86da38df 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -1579,7 +1579,7 @@ process_commands(char *buf)
 			{
 				if (pg_strcasecmp(my_commands->argv[2], "us") != 0 &&
 					pg_strcasecmp(my_commands->argv[2], "ms") != 0 &&
-					pg_strcasecmp(my_commands->argv[2], "s"))
+					pg_strcasecmp(my_commands->argv[2], "s") != 0)
 				{
 					fprintf(stderr, "%s: unknown time unit '%s' - must be us, ms or s\n",
 							my_commands->argv[0], my_commands->argv[2]);
diff --git a/contrib/pgcrypto/crypt-md5.c b/contrib/pgcrypto/crypt-md5.c
index 2215f38d8bf..7aa57bc319f 100644
--- a/contrib/pgcrypto/crypt-md5.c
+++ b/contrib/pgcrypto/crypt-md5.c
@@ -55,7 +55,7 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
 	sp = salt;
 
 	/* If it starts with the magic string, then skip that */
-	if (!strncmp(sp, magic, strlen(magic)))
+	if (strncmp(sp, magic, strlen(magic)) == 0)
 		sp += strlen(magic);
 
 	/* It stops at the first '$', max 8 chars */
diff --git a/contrib/pgcrypto/internal.c b/contrib/pgcrypto/internal.c
index 5ceb5271bbb..a02c943e049 100644
--- a/contrib/pgcrypto/internal.c
+++ b/contrib/pgcrypto/internal.c
@@ -603,7 +603,7 @@ px_find_cipher(const char *name, PX_Cipher **res)
 	name = px_resolve_alias(int_aliases, name);
 
 	for (i = 0; int_ciphers[i].name; i++)
-		if (!strcmp(int_ciphers[i].name, name))
+		if (strcmp(int_ciphers[i].name, name) == 0)
 		{
 			c = int_ciphers[i].load();
 			break;
diff --git a/contrib/pgcrypto/openssl.c b/contrib/pgcrypto/openssl.c
index dc25acea5d2..ad7fb9ee0ee 100644
--- a/contrib/pgcrypto/openssl.c
+++ b/contrib/pgcrypto/openssl.c
@@ -953,7 +953,7 @@ px_find_cipher(const char *name, PX_Cipher **res)
 
 	name = px_resolve_alias(ossl_aliases, name);
 	for (i = ossl_cipher_types; i->name; i++)
-		if (!strcmp(i->name, name))
+		if (strcmp(i->name, name) == 0)
 			break;
 	if (i->name == NULL)
 		return PXE_NO_CIPHER;
diff --git a/contrib/pgcrypto/px-crypt.c b/contrib/pgcrypto/px-crypt.c
index d2e1682e159..63ec038dc54 100644
--- a/contrib/pgcrypto/px-crypt.c
+++ b/contrib/pgcrypto/px-crypt.c
@@ -96,7 +96,7 @@ px_crypt(const char *psw, const char *salt, char *buf, unsigned len)
 	{
 		if (!c->id_len)
 			break;
-		if (!strncmp(salt, c->id, c->id_len))
+		if (strncmp(salt, c->id, c->id_len) == 0)
 			break;
 	}
 
diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c
index e3f5e262215..f23d4de5738 100644
--- a/contrib/pgcrypto/px.c
+++ b/contrib/pgcrypto/px.c
@@ -360,7 +360,7 @@ parse_cipher_name(char *full, char **cipher, char **pad)
 		if (p2 != NULL)
 		{
 			*p2++ = 0;
-			if (!strcmp(p, "pad"))
+			if (strcmp(p, "pad") == 0)
 				*pad = p2;
 			else
 				return PXE_BAD_OPTION;
@@ -405,9 +405,9 @@ px_find_combo(const char *name, PX_Combo **res)
 
 	if (s_pad != NULL)
 	{
-		if (!strcmp(s_pad, "pkcs"))
+		if (strcmp(s_pad, "pkcs") == 0)
 			cx->padding = 1;
-		else if (!strcmp(s_pad, "none"))
+		else if (strcmp(s_pad, "none") == 0)
 			cx->padding = 0;
 		else
 			goto err1;
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index ca2bba99d8c..d94b483dc16 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -1464,7 +1464,7 @@ pg_SSPI_recvauth(Port *port)
 	 */
 	if (port->hba->krb_realm && strlen(port->hba->krb_realm))
 	{
-		if (pg_strcasecmp(port->hba->krb_realm, domainname))
+		if (pg_strcasecmp(port->hba->krb_realm, domainname) != 0)
 		{
 			elog(DEBUG2,
 				 "SSPI domain (%s) and configured domain (%s) don't match",
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index be0966ca90e..96c89931b50 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -1012,7 +1012,7 @@ index_seq_search(char *str, const KeyWord *kw, const int *index)
 
 		do
 		{
-			if (!strncmp(str, k->name, k->len))
+			if (strncmp(str, k->name, k->len) == 0)
 				return k;
 			k++;
 			if (!k->name)
@@ -1032,7 +1032,7 @@ suff_search(char *str, KeySuffix *suf, int type)
 		if (s->type != type)
 			continue;
 
-		if (!strncmp(str, s->name, s->len))
+		if (strncmp(str, s->name, s->len) == 0)
 			return s;
 	}
 	return NULL;
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index c0f57f25cb7..a12d9b162cf 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -1098,7 +1098,7 @@ setup_config(void)
 
 	conflines = replace_token(conflines,
 							  "@authcomment@",
-					   strcmp(authmethod, "trust") ? "" : AUTHTRUST_WARNING);
+					   strcmp(authmethod, "trust") != 0 ? "" : AUTHTRUST_WARNING);
 
 	/* Replace username for replication */
 	conflines = replace_token(conflines,
@@ -2667,16 +2667,16 @@ main(int argc, char *argv[])
 		authmethod = "trust";
 	}
 
-	if (strcmp(authmethod, "md5") &&
-		strcmp(authmethod, "peer") &&
-		strcmp(authmethod, "ident") &&
-		strcmp(authmethod, "trust") &&
+	if (strcmp(authmethod, "md5") != 0 &&
+		strcmp(authmethod, "peer") != 0 &&
+		strcmp(authmethod, "ident") != 0 &&
+		strcmp(authmethod, "trust") != 0 &&
 #ifdef USE_PAM
-		strcmp(authmethod, "pam") &&
-		strncmp(authmethod, "pam ", 4) &&		/* pam with space = param */
+		strcmp(authmethod, "pam") != 0 &&
+		strncmp(authmethod, "pam ", 4) != 0 &&		/* pam with space = param */
 #endif
-		strcmp(authmethod, "crypt") &&
-		strcmp(authmethod, "password")
+		strcmp(authmethod, "crypt") != 0 &&
+		strcmp(authmethod, "password") != 0
 		)
 
 		/*
@@ -2689,9 +2689,9 @@ main(int argc, char *argv[])
 		exit(1);
 	}
 
-	if ((!strcmp(authmethod, "md5") ||
-		 !strcmp(authmethod, "crypt") ||
-		 !strcmp(authmethod, "password")) &&
+	if ((strcmp(authmethod, "md5") == 0 ||
+		 strcmp(authmethod, "crypt") == 0 ||
+		 strcmp(authmethod, "password") == 0) &&
 		!(pwprompt || pwfilename))
 	{
 		fprintf(stderr, _("%s: must specify a password for the superuser to enable %s authentication\n"), progname, authmethod);
diff --git a/src/bin/pg_basebackup/pg_receivexlog.c b/src/bin/pg_basebackup/pg_receivexlog.c
index b05f7dbc598..4f8e9286bf7 100644
--- a/src/bin/pg_basebackup/pg_receivexlog.c
+++ b/src/bin/pg_basebackup/pg_receivexlog.c
@@ -126,7 +126,7 @@ FindStreamingStart(XLogRecPtr currentpos, uint32 currenttimeline)
 					log,
 					seg;
 
-		if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, ".."))
+		if (strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0)
 			continue;
 
 		/* xlog files are always 24 characters */
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 0cc43b3fe99..5b48bd99207 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -1263,7 +1263,7 @@ pgwin32_CommandLine(bool registration)
 
 	if (registration)
 	{
-		if (pg_strcasecmp(cmdLine + strlen(cmdLine) - 4, ".exe"))
+		if (pg_strcasecmp(cmdLine + strlen(cmdLine) - 4, ".exe") != 0)
 		{
 			/* If commandline does not end in .exe, append it */
 			strcat(cmdLine, ".exe");
@@ -1841,25 +1841,24 @@ set_mode(char *modeopt)
 static void
 set_sig(char *signame)
 {
-	if (!strcmp(signame, "HUP"))
+	if (strcmp(signame, "HUP") == 0)
 		sig = SIGHUP;
-	else if (!strcmp(signame, "INT"))
+	else if (strcmp(signame, "INT") == 0)
 		sig = SIGINT;
-	else if (!strcmp(signame, "QUIT"))
+	else if (strcmp(signame, "QUIT") == 0)
 		sig = SIGQUIT;
-	else if (!strcmp(signame, "ABRT"))
+	else if (strcmp(signame, "ABRT") == 0)
 		sig = SIGABRT;
-
-	/*
-	 * probably should NOT provide SIGKILL
-	 *
-	 * else if (!strcmp(signame,"KILL")) sig = SIGKILL;
-	 */
-	else if (!strcmp(signame, "TERM"))
+#if 0
+	/* probably should NOT provide SIGKILL */
+	else if (strcmp(signame,"KILL") == 0)
+		sig = SIGKILL;
+#endif
+	else if (strcmp(signame, "TERM") == 0)
 		sig = SIGTERM;
-	else if (!strcmp(signame, "USR1"))
+	else if (strcmp(signame, "USR1") == 0)
 		sig = SIGUSR1;
-	else if (!strcmp(signame, "USR2"))
+	else if (strcmp(signame, "USR2") == 0)
 		sig = SIGUSR2;
 	else
 	{
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 89a8a23599f..436a9df4ac8 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -14384,7 +14384,7 @@ myFormatType(const char *typname, int32 typmod)
 	}
 
 	/* Show lengths on bpchar and varchar */
-	if (!strcmp(typname, "bpchar"))
+	if (strcmp(typname, "bpchar") == 0)
 	{
 		int			len = (typmod - VARHDRSZ);
 
@@ -14393,14 +14393,14 @@ myFormatType(const char *typname, int32 typmod)
 			appendPQExpBuffer(buf, "(%d)",
 							  typmod - VARHDRSZ);
 	}
-	else if (!strcmp(typname, "varchar"))
+	else if (strcmp(typname, "varchar") == 0)
 	{
 		appendPQExpBuffer(buf, "character varying");
 		if (typmod != -1)
 			appendPQExpBuffer(buf, "(%d)",
 							  typmod - VARHDRSZ);
 	}
-	else if (!strcmp(typname, "numeric"))
+	else if (strcmp(typname, "numeric") == 0)
 	{
 		appendPQExpBuffer(buf, "numeric");
 		if (typmod != -1)
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 473706246d0..61779c69633 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -2368,7 +2368,7 @@ psql_completion(char *text, int start, int end)
 
 	/* Complete LOCK [TABLE] <table> with "IN" */
 	else if ((pg_strcasecmp(prev2_wd, "LOCK") == 0 &&
-			  pg_strcasecmp(prev_wd, "TABLE")) ||
+			  pg_strcasecmp(prev_wd, "TABLE") != 0) ||
 			 (pg_strcasecmp(prev2_wd, "TABLE") == 0 &&
 			  pg_strcasecmp(prev3_wd, "LOCK") == 0))
 		COMPLETE_WITH_CONST("IN");
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c
index fc0455607b7..db975035df9 100644
--- a/src/interfaces/ecpg/ecpglib/data.c
+++ b/src/interfaces/ecpg/ecpglib/data.c
@@ -97,19 +97,19 @@ get_float8_nan(void)
 static bool
 check_special_value(char *ptr, double *retval, char **endptr)
 {
-	if (!pg_strncasecmp(ptr, "NaN", 3))
+	if (pg_strncasecmp(ptr, "NaN", 3) == 0)
 	{
 		*retval = get_float8_nan();
 		*endptr = ptr + 3;
 		return true;
 	}
-	else if (!pg_strncasecmp(ptr, "Infinity", 8))
+	else if (pg_strncasecmp(ptr, "Infinity", 8) == 0)
 	{
 		*retval = get_float8_infinity();
 		*endptr = ptr + 8;
 		return true;
 	}
-	else if (!pg_strncasecmp(ptr, "-Infinity", 9))
+	else if (pg_strncasecmp(ptr, "-Infinity", 9) == 0)
 	{
 		*retval = -get_float8_infinity();
 		*endptr = ptr + 9;
diff --git a/src/interfaces/ecpg/ecpglib/descriptor.c b/src/interfaces/ecpg/ecpglib/descriptor.c
index 17a956ea5d4..1dde52c42fb 100644
--- a/src/interfaces/ecpg/ecpglib/descriptor.c
+++ b/src/interfaces/ecpg/ecpglib/descriptor.c
@@ -652,7 +652,7 @@ ECPGdeallocate_desc(int line, const char *name)
 	ecpg_init_sqlca(sqlca);
 	for (desc = get_descriptors(), prev = NULL; desc; prev = desc, desc = desc->next)
 	{
-		if (!strcmp(name, desc->name))
+		if (strcmp(name, desc->name) == 0)
 		{
 			if (prev)
 				prev->next = desc->next;
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index b8e48a366c6..f468147b295 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1650,9 +1650,9 @@ ecpg_execute(struct statement * stmt)
 			ecpg_log("ecpg_execute on line %d: OK: %s\n", stmt->lineno, cmdstat);
 			if (stmt->compat != ECPG_COMPAT_INFORMIX_SE &&
 				!sqlca->sqlerrd[2] &&
-				(!strncmp(cmdstat, "UPDATE", 6)
-				 || !strncmp(cmdstat, "INSERT", 6)
-				 || !strncmp(cmdstat, "DELETE", 6)))
+				(strncmp(cmdstat, "UPDATE", 6) == 0
+				 || strncmp(cmdstat, "INSERT", 6) == 0
+				 || strncmp(cmdstat, "DELETE", 6) == 0))
 				ecpg_raise(stmt->lineno, ECPG_NOT_FOUND, ECPG_SQLSTATE_NO_DATA, NULL);
 			break;
 		case PGRES_COPY_OUT:
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index 60c9c50b227..c5a554e8e28 100644
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -361,7 +361,7 @@ SearchStmtCache(const char *ecpgQuery)
 	{
 		if (stmtCacheEntries[entNo].stmtID[0])	/* check if entry is in use		*/
 		{
-			if (!strcmp(ecpgQuery, stmtCacheEntries[entNo].ecpgQuery))
+			if (strcmp(ecpgQuery, stmtCacheEntries[entNo].ecpgQuery) == 0)
 				break;			/* found it		*/
 		}
 		++entNo;				/* incr entry #		*/
diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c
index 965963de7e1..52865293f24 100644
--- a/src/interfaces/ecpg/preproc/descriptor.c
+++ b/src/interfaces/ecpg/preproc/descriptor.c
@@ -106,11 +106,11 @@ drop_descriptor(char *name, char *connection)
 
 	for (i = descriptors; i; lastptr = &i->next, i = i->next)
 	{
-		if (!strcmp(name, i->name))
+		if (strcmp(name, i->name) == 0)
 		{
 			if ((!connection && !i->connection)
 				|| (connection && i->connection
-					&& !strcmp(connection, i->connection)))
+					&& strcmp(connection, i->connection) == 0))
 			{
 				*lastptr = i->next;
 				if (i->connection)
@@ -135,11 +135,11 @@ lookup_descriptor(char *name, char *connection)
 
 	for (i = descriptors; i; i = i->next)
 	{
-		if (!strcmp(name, i->name))
+		if (strcmp(name, i->name) == 0)
 		{
 			if ((!connection && !i->connection)
 				|| (connection && i->connection
-					&& !strcmp(connection, i->connection)))
+					&& strcmp(connection, i->connection) == 0))
 				return i;
 		}
 	}
diff --git a/src/interfaces/ecpg/preproc/ecpg.addons b/src/interfaces/ecpg/preproc/ecpg.addons
index 849a37cf9d5..5c5adf76996 100644
--- a/src/interfaces/ecpg/preproc/ecpg.addons
+++ b/src/interfaces/ecpg/preproc/ecpg.addons
@@ -102,7 +102,7 @@ ECPG: stmtViewStmt rule
 	{
 		const char *con = connection ? connection : "NULL";
 
-		if (!strcmp($1, "all"))
+		if (strcmp($1, "all") == 0)
 			fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
 		else if ($1[0] == ':')
 			fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1);
diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header
index 1ea6ce444ea..94c45c88c0e 100644
--- a/src/interfaces/ecpg/preproc/ecpg.header
+++ b/src/interfaces/ecpg/preproc/ecpg.header
@@ -262,7 +262,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
 				skip_set_var = true;
 			}
 			else if ((ptr->variable->type->type == ECPGt_char_variable)
-					 && (!strncmp(ptr->variable->name, "ECPGprepared_statement", strlen("ECPGprepared_statement"))))
+					 && (strncmp(ptr->variable->name, "ECPGprepared_statement", strlen("ECPGprepared_statement")) == 0))
 			{
 				newvar = ptr->variable;
 				skip_set_var = true;
@@ -468,7 +468,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
 /* This tests whether the cursor was declared and opened in the same function. */
 #define SAMEFUNC(cur)	\
 	((cur->function == NULL) ||		\
-	 (cur->function != NULL && !strcmp(cur->function, current_function)))
+	 (cur->function != NULL && strcmp(cur->function, current_function) == 0))
 
 static struct cursor *
 add_additional_variables(char *name, bool insert)
diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c
index 9958a0a5dfe..389a5272d44 100644
--- a/src/interfaces/ecpg/preproc/output.c
+++ b/src/interfaces/ecpg/preproc/output.c
@@ -163,7 +163,7 @@ output_deallocate_prepare_statement(char *name)
 {
 	const char *con = connection ? connection : "NULL";
 
-	if (strcmp(name, "all"))
+	if (strcmp(name, "all") != 0)
 	{
 		fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con);
 		output_escaped_str(name, true);
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 0d1355c2cb9..7ca1d0ffc43 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -1319,7 +1319,7 @@ parse_include(void)
 		yyin = fopen(inc_file, "r");
 		if (!yyin)
 		{
-			if (strcmp(inc_file + strlen(inc_file) - 2, ".h"))
+			if (strcmp(inc_file + strlen(inc_file) - 2, ".h") != 0)
 			{
 				strcat(inc_file, ".h");
 				yyin = fopen(inc_file, "r");
@@ -1346,7 +1346,7 @@ parse_include(void)
 			yyin = fopen(inc_file, "r");
 			if (!yyin)
 			{
-				if (strcmp(inc_file + strlen(inc_file) - 2, ".h"))
+				if (strcmp(inc_file + strlen(inc_file) - 2, ".h") != 0)
 				{
 					strcat(inc_file, ".h");
 					yyin = fopen( inc_file, "r" );
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index f467a7f9c90..9934105c344 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -257,7 +257,7 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
 		if ((var->type->type != type->type) ||
 			(var->type->type_name && !type->type_name) ||
 			(!var->type->type_name && type->type_name) ||
-			(var->type->type_name && type->type_name && strcmp(var->type->type_name, type->type_name)))
+			(var->type->type_name && type->type_name && strcmp(var->type->type_name, type->type_name) != 0))
 			mmerror(PARSE_ERROR, ET_ERROR, "variable \"%s\" is hidden by a local variable of a different type", name);
 		else if (var->brace_level != brace_level)
 			mmerror(PARSE_ERROR, ET_WARNING, "variable \"%s\" is hidden by a local variable", name);
@@ -271,7 +271,7 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
 			if ((var->type->type != ind_type->type) ||
 				(var->type->type_name && !ind_type->type_name) ||
 				(!var->type->type_name && ind_type->type_name) ||
-				(var->type->type_name && ind_type->type_name && strcmp(var->type->type_name, ind_type->type_name)))
+				(var->type->type_name && ind_type->type_name && strcmp(var->type->type_name, ind_type->type_name) != 0))
 				mmerror(PARSE_ERROR, ET_ERROR, "indicator variable \"%s\" is hidden by a local variable of a different type", ind_name);
 			else if (var->brace_level != ind_brace_level)
 				mmerror(PARSE_ERROR, ET_WARNING, "indicator variable \"%s\" is hidden by a local variable", ind_name);
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c
index 3ea438709ab..e08e14ac18c 100644
--- a/src/interfaces/ecpg/preproc/variable.c
+++ b/src/interfaces/ecpg/preproc/variable.c
@@ -491,7 +491,7 @@ get_typedef(char *name)
 {
 	struct typedefs *this;
 
-	for (this = types; this && strcmp(this->name, name); this = this->next);
+	for (this = types; this && strcmp(this->name, name) != 0; this = this->next);
 	if (!this)
 		mmerror(PARSE_ERROR, ET_FATAL, "unrecognized data type name \"%s\"", name);
 
diff --git a/src/interfaces/libpq/fe-lobj.c b/src/interfaces/libpq/fe-lobj.c
index 27f93e6af78..17e65de15c2 100644
--- a/src/interfaces/libpq/fe-lobj.c
+++ b/src/interfaces/libpq/fe-lobj.c
@@ -752,25 +752,25 @@ lo_initialize(PGconn *conn)
 	{
 		fname = PQgetvalue(res, n, 0);
 		foid = (Oid) atoi(PQgetvalue(res, n, 1));
-		if (!strcmp(fname, "lo_open"))
+		if (strcmp(fname, "lo_open") == 0)
 			lobjfuncs->fn_lo_open = foid;
-		else if (!strcmp(fname, "lo_close"))
+		else if (strcmp(fname, "lo_close") == 0)
 			lobjfuncs->fn_lo_close = foid;
-		else if (!strcmp(fname, "lo_creat"))
+		else if (strcmp(fname, "lo_creat") == 0)
 			lobjfuncs->fn_lo_creat = foid;
-		else if (!strcmp(fname, "lo_create"))
+		else if (strcmp(fname, "lo_create") == 0)
 			lobjfuncs->fn_lo_create = foid;
-		else if (!strcmp(fname, "lo_unlink"))
+		else if (strcmp(fname, "lo_unlink") == 0)
 			lobjfuncs->fn_lo_unlink = foid;
-		else if (!strcmp(fname, "lo_lseek"))
+		else if (strcmp(fname, "lo_lseek") == 0)
 			lobjfuncs->fn_lo_lseek = foid;
-		else if (!strcmp(fname, "lo_tell"))
+		else if (strcmp(fname, "lo_tell") == 0)
 			lobjfuncs->fn_lo_tell = foid;
-		else if (!strcmp(fname, "lo_truncate"))
+		else if (strcmp(fname, "lo_truncate") == 0)
 			lobjfuncs->fn_lo_truncate = foid;
-		else if (!strcmp(fname, "loread"))
+		else if (strcmp(fname, "loread") == 0)
 			lobjfuncs->fn_lo_read = foid;
-		else if (!strcmp(fname, "lowrite"))
+		else if (strcmp(fname, "lowrite") == 0)
 			lobjfuncs->fn_lo_write = foid;
 	}
 
-- 
GitLab