From f3af1368bde01a75c5c37d2ad45aac83b92ae74c Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 25 Oct 1997 01:10:58 +0000
Subject: [PATCH] Rename strNcpy to StrNCpy, and change third parameter.

---
 src/backend/access/common/tupdesc.c |  4 ++--
 src/backend/commands/async.c        |  4 ++--
 src/backend/commands/creatinh.c     |  4 ++--
 src/backend/commands/recipe.c       |  4 ++--
 src/backend/executor/execMain.c     |  6 +++---
 src/backend/executor/execUtils.c    |  4 ++--
 src/backend/libpq/be-fsstubs.c      |  6 +++---
 src/backend/libpq/be-pqexec.c       |  4 ++--
 src/backend/libpq/password.c        |  2 +-
 src/backend/libpq/portal.c          |  6 +++---
 src/backend/libpq/portalbuf.c       |  4 ++--
 src/backend/nodes/print.c           |  8 ++++----
 src/backend/nodes/readfuncs.c       |  8 ++++----
 src/backend/parser/analyze.c        |  4 ++--
 src/backend/parser/gram.y           |  6 +++---
 src/backend/port/aix/dlfcn.c        |  2 +-
 src/backend/postmaster/postmaster.c | 10 +++++-----
 src/backend/storage/smgr/md.c       |  4 ++--
 src/backend/tcop/postgres.c         |  6 +++---
 src/backend/tcop/variable.c         |  6 +++---
 src/backend/tioga/tgRecipe.c        |  4 ++--
 src/backend/utils/adt/char.c        | 10 +++++-----
 src/backend/utils/adt/filename.c    |  8 ++++----
 src/backend/utils/adt/like.c        |  4 ++--
 src/backend/utils/adt/name.c        |  6 +++---
 src/backend/utils/adt/oidname.c     |  4 ++--
 src/backend/utils/adt/regexp.c      |  4 ++--
 src/backend/utils/adt/regproc.c     |  4 ++--
 src/backend/utils/adt/varchar.c     |  8 ++++----
 src/backend/utils/sort/psort.c      |  4 ++--
 src/include/c.h                     | 12 ++++++++----
 31 files changed, 87 insertions(+), 83 deletions(-)

diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index c690918f61a..be75674ead8 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.26 1997/09/18 20:19:38 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.27 1997/10/25 01:08:45 momjian Exp $
  *
  * NOTES
  *	  some of the executor utility code such as "ExecTypeFromTL" should be
@@ -489,7 +489,7 @@ BuildDescForRelation(List *schema, char *relname)
 		}
 		else
 		{
-			strNcpy(typename, entry->typename->name, NAMEDATALEN - 1);
+			StrNCpy(typename, entry->typename->name, NAMEDATALEN);
 			attdim = 0;
 		}
 
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index aa86d9982dc..81a90be085d 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.20 1997/09/12 04:07:20 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.21 1997/10/25 01:08:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -488,7 +488,7 @@ Async_Listen(char *relname, int pid)
 	 * unlisten prior to dying.
 	 */
 	relnamei = malloc(NAMEDATALEN);		/* persists to process exit */
-	strNcpy(relnamei, relname, NAMEDATALEN - 1);
+	StrNCpy(relnamei, relname, NAMEDATALEN);
 	on_exitpg(Async_UnlistenOnExit, (caddr_t) relnamei);
 }
 
diff --git a/src/backend/commands/creatinh.c b/src/backend/commands/creatinh.c
index 36d81bdc4e2..ef92b30071b 100644
--- a/src/backend/commands/creatinh.c
+++ b/src/backend/commands/creatinh.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.17 1997/09/08 21:42:33 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.18 1997/10/25 01:08:51 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -65,7 +65,7 @@ DefineRelation(CreateStmt *stmt)
 	if (strlen(stmt->relname) >= NAMEDATALEN)
 		elog(WARN, "the relation name %s is >= %d characters long", stmt->relname,
 			 NAMEDATALEN);
-	strNcpy(relname, stmt->relname, NAMEDATALEN - 1);	/* make full length for
+	StrNCpy(relname, stmt->relname, NAMEDATALEN);	/* make full length for
 														 * copy */
 
 	/* ----------------
diff --git a/src/backend/commands/recipe.c b/src/backend/commands/recipe.c
index 945dc7d7c2b..077e8823780 100644
--- a/src/backend/commands/recipe.c
+++ b/src/backend/commands/recipe.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.9 1997/09/08 21:42:42 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.10 1997/10/25 01:08:54 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1344,7 +1344,7 @@ replaceTeeScans(Plan *plan, Query *parsetree, TeeInfo * teeInfo)
 		if ((strlen(rte->refname) < 4) ||
 			(strcmp(rte->relname, rte->refname) != 0))
 			continue;
-		strNcpy(prefix, rte->refname, 4);
+		StrNCpy(prefix, rte->refname, 5);
 		if (strcmp(prefix, "tee_") == 0)
 		{
 			/* okay, we found a tee node entry in the range table */
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 07935eced72..3293e13bd69 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.27 1997/10/12 07:09:02 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.28 1997/10/25 01:09:01 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -330,9 +330,9 @@ ExecCheckPerms(CmdType operation,
 		if (!HeapTupleIsValid(htp))
 			elog(WARN, "ExecCheckPerms: bogus RT relid: %d",
 				 relid);
-		strNcpy(rname.data,
+		StrNCpy(rname.data,
 				((Form_pg_class) GETSTRUCT(htp))->relname.data,
-				NAMEDATALEN - 1);
+				NAMEDATALEN);
 		if (i == resultRelation)
 		{						/* this is the result relation */
 			qvars = pull_varnos(parseTree->qual);
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index e25a76c71b0..2282775c9a5 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.19 1997/09/18 20:20:35 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.20 1997/10/25 01:09:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -514,7 +514,7 @@ ExecSetTypeInfo(int index,
 	att->attrelid = 0;			/* dummy value */
 
 	if (attName != (char *) NULL)
-		strNcpy(att->attname.data, attName, NAMEDATALEN - 1);
+		StrNCpy(att->attname.data, attName, NAMEDATALEN);
 	else
 		MemSet(att->attname.data, 0, NAMEDATALEN);
 
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
index 19a52757370..24c3199c1a5 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.15 1997/09/08 21:43:41 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.16 1997/10/25 01:09:16 momjian Exp $
  *
  * NOTES
  *	  This should be moved to a more appropriate place.  It is here
@@ -269,7 +269,7 @@ lo_import(text *filename)
 	/*
 	 * open the file to be read in
 	 */
-	strNcpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ);
+	StrNCpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ + 1);
 	fd = open(fnamebuf, O_RDONLY, 0666);
 	if (fd < 0)
 	{							/* error */
@@ -343,7 +343,7 @@ lo_export(Oid lobjId, text *filename)
 	 * open the file to be written to
 	 */
 	oumask = umask((mode_t) 0);
-	strNcpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ);
+	StrNCpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ + 1);
 	fd = open(fnamebuf, O_CREAT | O_WRONLY, 0666);
 	umask(oumask);
 	if (fd < 0)
diff --git a/src/backend/libpq/be-pqexec.c b/src/backend/libpq/be-pqexec.c
index 31be26425f9..292cf3730e4 100644
--- a/src/backend/libpq/be-pqexec.c
+++ b/src/backend/libpq/be-pqexec.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.7 1997/09/08 21:43:43 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.8 1997/10/25 01:09:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -241,7 +241,7 @@ strmake(char *str, int len)
 		len = strlen(str);
 
 	newstr = (char *) palloc((unsigned) len + 1);
-	strNcpy(newstr, str, len);
+	StrNCpy(newstr, str, len+1);
 	newstr[len] = (char) 0;
 	return newstr;
 }
diff --git a/src/backend/libpq/password.c b/src/backend/libpq/password.c
index bd2f6bee201..aaa204b4db9 100644
--- a/src/backend/libpq/password.c
+++ b/src/backend/libpq/password.c
@@ -90,7 +90,7 @@ verify_password(char *user, char *password, Port *port,
 		if (test_pw[strlen(test_pw) - 1] == '\n')
 			test_pw[strlen(test_pw) - 1] = '\0';
 
-		strNcpy(salt, test_pw, 2);
+		StrNCpy(salt, test_pw, 3);
 
 		if (strcmp(user, test_user) == 0)
 		{
diff --git a/src/backend/libpq/portal.c b/src/backend/libpq/portal.c
index c85b3a763c2..7e8cab0afef 100644
--- a/src/backend/libpq/portal.c
+++ b/src/backend/libpq/portal.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portal.c,v 1.9 1997/09/08 21:43:47 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portal.c,v 1.10 1997/10/25 01:09:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -154,7 +154,7 @@ PQpnames(char **pnames, int rule_p)
 		{
 			if (!rule_p || portals[i]->portal->rule_p)
 			{
-				strncpy(pnames[cur_pname], portals[i]->name, PortalNameLength);
+				strncpy(pnames[cur_pname], portals[i]->name, PortalNameLength+1);
 				++cur_pname;
 			}
 		}
@@ -730,7 +730,7 @@ PQappendNotify(char *relname, int pid)
 		pqNotifyList = DLNewList();
 
 	p = (PQNotifyList *) pbuf_alloc(sizeof(PQNotifyList));
-	strNcpy(p->relname, relname, NAMEDATALEN - 1);
+	StrNCpy(p->relname, relname, NAMEDATALEN);
 	p->be_pid = pid;
 	p->valid = 1;
 	DLAddTail(pqNotifyList, DLNewElem(p));
diff --git a/src/backend/libpq/portalbuf.c b/src/backend/libpq/portalbuf.c
index bff6a449ead..82956fe2329 100644
--- a/src/backend/libpq/portalbuf.c
+++ b/src/backend/libpq/portalbuf.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portalbuf.c,v 1.7 1997/09/08 21:43:48 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portalbuf.c,v 1.8 1997/10/25 01:09:23 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -384,7 +384,7 @@ void
 pbuf_setportalinfo(PortalEntry *entry, char *pname)
 {
 	if (entry)
-		strNcpy(entry->name, pname, PortalNameLength - 1);
+		StrNCpy(entry->name, pname, PortalNameLength);
 }
 
 /* --------------------------------
diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c
index 634870ab8ac..d674263a324 100644
--- a/src/backend/nodes/print.c
+++ b/src/backend/nodes/print.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.9 1997/09/08 21:44:10 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.10 1997/10/25 01:09:28 momjian Exp $
  *
  * HISTORY
  *	  AUTHOR			DATE			MAJOR EVENT
@@ -391,14 +391,14 @@ print_plan_recursive(Plan *p, Query *parsetree, int indentLevel, char *label)
 		RangeTblEntry *rte;
 
 		rte = rt_fetch(((Scan *) p)->scanrelid, parsetree->rtable);
-		strNcpy(extraInfo, rte->relname, NAMEDATALEN - 1);
+		StrNCpy(extraInfo, rte->relname, NAMEDATALEN);
 	}
 	else if (IsA(p, IndexScan))
 	{
-		strNcpy(extraInfo,
+		StrNCpy(extraInfo,
 		   ((RangeTblEntry *) (nth(((IndexScan *) p)->scan.scanrelid - 1,
 								   parsetree->rtable)))->relname,
-				NAMEDATALEN - 1);
+				NAMEDATALEN);
 	}
 	else
 		extraInfo[0] = '\0';
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c
index 6caa2cc9a70..ab05372a917 100644
--- a/src/backend/nodes/readfuncs.c
+++ b/src/backend/nodes/readfuncs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.9 1997/09/08 21:44:11 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.10 1997/10/25 01:09:30 momjian Exp $
  *
  * NOTES
  *	  Most of the read functions for plan nodes are tested. (In fact, they
@@ -92,7 +92,7 @@ _readQuery()
 		NotifyStmt *n = makeNode(NotifyStmt);
 
 		n->relname = palloc(length + 1);
-		strNcpy(n->relname, token, length);
+		StrNCpy(n->relname, token, length+1);
 		local_node->utilityStmt = (Node *) n;
 	}
 
@@ -111,7 +111,7 @@ _readQuery()
 	else
 	{
 		local_node->uniqueFlag = palloc(length + 1);
-		strNcpy(local_node->uniqueFlag, token, length);
+		StrNCpy(local_node->uniqueFlag, token, length+1);
 	}
 
 	token = lsptok(NULL, &length);		/* skip :targetlist */
@@ -1067,7 +1067,7 @@ _readAggreg()
 	token = lsptok(NULL, &length);		/* eat :aggname */
 	token = lsptok(NULL, &length);		/* get aggname */
 	local_node->aggname = (char *) palloc(length + 1);
-	strNcpy(local_node->aggname, token, length);
+	StrNCpy(local_node->aggname, token, length+1);
 
 	token = lsptok(NULL, &length);		/* eat :basetype */
 	token = lsptok(NULL, &length);		/* get basetype */
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 25135893a75..2e21cc9c573 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.46 1997/10/16 06:58:38 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.47 1997/10/25 01:09:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1150,7 +1150,7 @@ makeTargetNames(ParseState *pstate, List *cols)
 			Ident	   *id = makeNode(Ident);
 
 			id->name = palloc(NAMEDATALEN);
-			strNcpy(id->name, attr[i]->attname.data, NAMEDATALEN - 1);
+			StrNCpy(id->name, attr[i]->attname.data, NAMEDATALEN);
 			id->indirection = NIL;
 			id->isRel = false;
 			if (tl == NIL)
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index c4b219438fb..d4141017c65 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.56 1997/10/09 05:43:59 thomas Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.57 1997/10/25 01:09:41 momjian Exp $
  *
  * HISTORY
  *	  AUTHOR			DATE			MAJOR EVENT
@@ -3117,7 +3117,7 @@ opt_id:  Id										{ $$ = $1; }
 relation_name:	SpecialRuleRelation
 				{
 					$$ = $1;
-					strNcpy(saved_relname, $1, NAMEDATALEN-1);
+					StrNCpy(saved_relname, $1, NAMEDATALEN);
 				}
 		| ColId
 				{
@@ -3129,7 +3129,7 @@ relation_name:	SpecialRuleRelation
 						elog(WARN,"%s cannot be accessed by users",$1);
 					else
 						$$ = $1;
-					strNcpy(saved_relname, $1, NAMEDATALEN-1);
+					StrNCpy(saved_relname, $1, NAMEDATALEN);
 				}
 		;
 
diff --git a/src/backend/port/aix/dlfcn.c b/src/backend/port/aix/dlfcn.c
index e42b00f247c..1c34186dc4b 100644
--- a/src/backend/port/aix/dlfcn.c
+++ b/src/backend/port/aix/dlfcn.c
@@ -537,7 +537,7 @@ readExports(ModulePtr mp)
 			 * first SYMNMLEN chars and make sure we have a zero byte at
 			 * the end.
 			 */
-			strNcpy(tmpsym, ls->l_name, SYMNMLEN);
+			StrNCpy(tmpsym, ls->l_name, SYMNMLEN+1);
 			symname = tmpsym;
 		}
 		ep->name = strdup(symname);
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 248d8ab1443..a936fff9eba 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.58 1997/09/18 20:21:08 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.59 1997/10/25 01:09:55 momjian Exp $
  *
  * NOTES
  *
@@ -717,7 +717,7 @@ ConnStartup(Port *port, int *status,
 
 	msgType = (MsgType) ntohl(port->buf.msgtype);
 
-	strNcpy(namebuf, sp.user, NAMEDATALEN - 1);
+	StrNCpy(namebuf, sp.user, NAMEDATALEN);
 	if (!namebuf[0])
 	{
 		strncpy(errormsg,
@@ -1232,15 +1232,15 @@ DoExec(StartupInfo *packet, int portFd)
 	sprintf(portbuf, "-P%d", portFd);
 	av[ac++] = portbuf;
 
-	strNcpy(argbuf, packet->options, ARGV_SIZE);
+	StrNCpy(argbuf, packet->options, ARGV_SIZE);
 	strncat(argbuf, ExtraOptions, ARGV_SIZE);
 	argbuf[(2 * ARGV_SIZE)] = '\0';
 	split_opts(av, &ac, argbuf);
 
 	if (packet->database[0])
-		strNcpy(dbbuf, packet->database, ARGV_SIZE);
+		StrNCpy(dbbuf, packet->database, ARGV_SIZE);
 	else
-		strNcpy(dbbuf, packet->user, NAMEDATALEN - 1);
+		StrNCpy(dbbuf, packet->user, NAMEDATALEN);
 	av[ac++] = dbbuf;
 
 	av[ac] = (char *) NULL;
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 48d221ffd18..8be087d61b8 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.22 1997/09/18 20:21:45 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.23 1997/10/25 01:10:04 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -172,7 +172,7 @@ mdunlink(Relation reln)
 	 * do this.
 	 */
 
-	strNcpy(fname, RelationGetRelationName(reln)->data, NAMEDATALEN - 1);
+	StrNCpy(fname, RelationGetRelationName(reln)->data, NAMEDATALEN);
 
 	if (FileNameUnlink(fname) < 0)
 		return (SM_FAIL);
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 010ea1214c3..fb5adb35abc 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.49 1997/09/18 20:22:03 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.50 1997/10/25 01:10:16 momjian Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -1088,7 +1088,7 @@ PostgresMain(int argc, char *argv[])
 				 *	o - send output (stdout and stderr) to the given file
 				 * ----------------
 				 */
-				strNcpy(OutputFileName, optarg, MAXPGPATH);
+				StrNCpy(OutputFileName, optarg, MAXPGPATH);
 				break;
 
 			case 'p':			/* started by postmaster */
@@ -1391,7 +1391,7 @@ PostgresMain(int argc, char *argv[])
 	if (IsUnderPostmaster == false)
 	{
 		puts("\nPOSTGRES backend interactive interface");
-		puts("$Revision: 1.49 $ $Date: 1997/09/18 20:22:03 $");
+		puts("$Revision: 1.50 $ $Date: 1997/10/25 01:10:16 $");
 	}
 
 	/* ----------------
diff --git a/src/backend/tcop/variable.c b/src/backend/tcop/variable.c
index 2f41cedf033..260fdd6eb5a 100644
--- a/src/backend/tcop/variable.c
+++ b/src/backend/tcop/variable.c
@@ -2,7 +2,7 @@
  * Routines for handling of 'SET var TO', 'SHOW var' and 'RESET var'
  * statements.
  *
- * $Id: variable.c,v 1.16 1997/09/08 21:47:59 momjian Exp $
+ * $Id: variable.c,v 1.17 1997/10/25 01:10:22 momjian Exp $
  *
  */
 
@@ -73,7 +73,7 @@ get_token(char **tok, char **val, const char *str)
 	}
 
 	*tok = (char *) PALLOC(len + 1);
-	strNcpy(*tok, start, len);
+	StrNCpy(*tok, start, len+1);
 
 	/* skip white spaces */
 	while (isspace(*str))
@@ -119,7 +119,7 @@ get_token(char **tok, char **val, const char *str)
 	}
 
 	*val = (char *) PALLOC(len + 1);
-	strNcpy(*val, start, len);
+	StrNCpy(*val, start, len+1);
 
 	/* skip white spaces */
 	while (isspace(*str))
diff --git a/src/backend/tioga/tgRecipe.c b/src/backend/tioga/tgRecipe.c
index cb3e0fc6d3f..fd45f489f11 100644
--- a/src/backend/tioga/tgRecipe.c
+++ b/src/backend/tioga/tgRecipe.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tioga/Attic/tgRecipe.c,v 1.6 1997/09/08 21:48:01 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tioga/Attic/tgRecipe.c,v 1.7 1997/10/25 01:10:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -108,7 +108,7 @@ first character\n", ARRAY_LEFT_DELIM);
 												 * extra character for \0
 												 * anyway */
 		word = (char *) malloc(nextlen);
-		strNcpy(word, beginQuote + 1, nextlen - 1);
+		StrNCpy(word, beginQuote + 1, nextlen);
 		addArr_TgString(result, (TgString *) & word);
 		free(word);
 		str = endQuote + 1;
diff --git a/src/backend/utils/adt/char.c b/src/backend/utils/adt/char.c
index 9d719319d9a..0ad01eca1b7 100644
--- a/src/backend/utils/adt/char.c
+++ b/src/backend/utils/adt/char.c
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.11 1997/09/08 21:48:18 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.12 1997/10/25 01:10:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -124,7 +124,7 @@ char16out(char *s)
 		result[1] = '\0';
 	}
 	else
-		strNcpy(result, s, 16);
+		StrNCpy(result, s, 16);
 	return (result);
 }
 
@@ -282,7 +282,7 @@ char2out(uint16 s)
 {
 	char	   *result = (char *) palloc(3);
 
-	strNcpy(result, (char *) &s, 2);
+	StrNCpy(result, (char *) &s, 3);
 
 	return (result);
 }
@@ -349,7 +349,7 @@ uint32		s;
 {
 	char	   *result = (char *) palloc(5);
 
-	strNcpy(result, (char *) &s, 4);
+	StrNCpy(result, (char *) &s, 5);
 
 	return (result);
 }
@@ -421,7 +421,7 @@ char8out(char *s)
 		result[1] = '\0';
 	}
 	else
-		strNcpy(result, s, 8);
+		StrNCpy(result, s, 9);
 	return (result);
 }
 
diff --git a/src/backend/utils/adt/filename.c b/src/backend/utils/adt/filename.c
index e8bfba41c96..b618a3d6b8a 100644
--- a/src/backend/utils/adt/filename.c
+++ b/src/backend/utils/adt/filename.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/filename.c,v 1.10 1997/09/08 02:30:40 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/filename.c,v 1.11 1997/10/25 01:10:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -59,7 +59,7 @@ filename_in(char *file)
 		else
 		{
 			/* Someone else's directory */
-			char		name[16],
+			char		name[17],
 					   *p;
 			struct passwd *pw;
 			int			len;
@@ -72,7 +72,7 @@ filename_in(char *file)
 			else
 			{
 				len = (p - file) - 1;
-				strNcpy(name, file + 1, len);
+				StrNCpy(name, file + 1, len+1);
 			}
 			/* printf("name: %s\n"); */
 			if ((pw = getpwnam(name)) == NULL)
@@ -102,7 +102,7 @@ filename_in(char *file)
 		else
 		{
 			len = (p - file) - 1;
-			strNcpy(environment, file + 1, len);
+			StrNCpy(environment, file + 1, len+1);
 		}
 		envirp = getenv(environment);
 		if (envirp)
diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c
index 4a758b0ba28..7886354e908 100644
--- a/src/backend/utils/adt/like.c
+++ b/src/backend/utils/adt/like.c
@@ -48,7 +48,7 @@ fixedlen_like(char *s, struct varlena * p, int charlen)
 
 	/* be sure sterm is null-terminated */
 	sterm = (char *) palloc(charlen + 1);
-	strNcpy(sterm, s, charlen);
+	StrNCpy(sterm, s, charlen+1);
 
 	/*
 	 * p is a text = varlena, not a string so we have to make a string
@@ -150,7 +150,7 @@ textnlike(struct varlena * s, struct varlena * p)
 }
 
 
-/*	$Revision: 1.9 $
+/*	$Revision: 1.10 $
 **	"like.c" A first attempt at a LIKE operator for Postgres95.
 **
 **	Originally written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986.
diff --git a/src/backend/utils/adt/name.c b/src/backend/utils/adt/name.c
index 977360cc954..fb281a3e4e3 100644
--- a/src/backend/utils/adt/name.c
+++ b/src/backend/utils/adt/name.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.9 1997/09/08 21:48:33 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.10 1997/10/25 01:10:40 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -41,7 +41,7 @@ namein(char *s)
 		return (NULL);
 	result = (NameData *) palloc(NAMEDATALEN);
 	/* always keep it null-padded */
-	strNcpy(result->data, s, NAMEDATALEN - 1);
+	StrNCpy(result->data, s, NAMEDATALEN);
 	return (result);
 }
 
@@ -159,7 +159,7 @@ namestrcpy(Name name, char *str)
 {
 	if (!name || !str)
 		return (-1);
-	strNcpy(name->data, str, NAMEDATALEN - 1);
+	StrNCpy(name->data, str, NAMEDATALEN);
 	return (0);
 }
 
diff --git a/src/backend/utils/adt/oidname.c b/src/backend/utils/adt/oidname.c
index 09bee543f80..27d28a072ec 100644
--- a/src/backend/utils/adt/oidname.c
+++ b/src/backend/utils/adt/oidname.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/oidname.c,v 1.8 1997/09/18 20:22:16 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/oidname.c,v 1.9 1997/10/25 01:10:41 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,7 +37,7 @@ oidnamein(char *inStr)
 		oc->id = (Oid) pg_atoi(inStr, sizeof(Oid), ',');
 		/* copy one less to ensure null-padding */
 		++inptr;
-		strNcpy(oc->name.data, inptr, NAMEDATALEN - 1);
+		StrNCpy(oc->name.data, inptr, NAMEDATALEN);
 	}
 	else
 		elog(WARN, "Bad input data for type oidname");
diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c
index b172cc6b486..21b34249bd4 100644
--- a/src/backend/utils/adt/regexp.c
+++ b/src/backend/utils/adt/regexp.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.10 1997/09/08 21:48:40 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.11 1997/10/25 01:10:44 momjian Exp $
  *
  *		Alistair Crooks added the code for the regex caching
  *		agc - cached the regular expressions used - there's a good chance
@@ -189,7 +189,7 @@ fixedlen_regexeq(char *s, struct varlena * p, int charlen, int cflags)
 
 	/* be sure sterm is null-terminated */
 	sterm = (char *) palloc(charlen + 1);
-	strNcpy(sterm, s, charlen);
+	StrNCpy(sterm, s, charlen+1);
 
 	result = RE_compile_and_execute(p, sterm, cflags);
 
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index ea3a66fe05e..70c97e0833f 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.7 1997/09/08 02:30:58 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.8 1997/10/25 01:10:45 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -133,7 +133,7 @@ regprocout(RegProcedure proid)
 							  RelationGetTupleDescriptor(proc), &isnull);
 			if (!isnull)
 			{
-				strNcpy(result, s, 16);
+				StrNCpy(result, s, 16);
 				break;
 			}
 			elog(FATAL, "regprocout: null procedure %d", proid);
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index a9977fa6414..9b2f4129c8b 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.10 1997/09/08 02:31:05 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.11 1997/10/25 01:10:50 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -106,7 +106,7 @@ bpcharout(char *s)
 	{
 		len = *(int32 *) s - 4;
 		result = (char *) palloc(len + 1);
-		strNcpy(result, s + 4, len);	/* these are blank-padded */
+		StrNCpy(result, s + 4, len+1);	/* these are blank-padded */
 	}
 	return (result);
 }
@@ -145,7 +145,7 @@ varcharin(char *s, int dummy, int typlen)
 
 	result = (char *) palloc(typlen);
 	*(int32 *) result = typlen;
-	strncpy(result + 4, s, len);
+	strncpy(result + 4, s, len+1);
 
 	return (result);
 }
@@ -166,7 +166,7 @@ varcharout(char *s)
 	{
 		len = *(int32 *) s - 4;
 		result = (char *) palloc(len + 1);
-		strNcpy(result, s + 4, len);
+		StrNCpy(result, s + 4, len+1);
 	}
 	return (result);
 }
diff --git a/src/backend/utils/sort/psort.c b/src/backend/utils/sort/psort.c
index 5af863b6e01..4a490cc059c 100644
--- a/src/backend/utils/sort/psort.c
+++ b/src/backend/utils/sort/psort.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.26 1997/10/15 06:36:08 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.27 1997/10/25 01:10:52 momjian Exp $
  *
  * NOTES
  *		Sorts the first relation into the second relation.
@@ -1006,7 +1006,7 @@ gettape()
 	 * now, copy template with final null into palloc'd space
 	 */
 
-	strNcpy(tp->tl_name, uniqueName, MAXPGPATH-1);
+	StrNCpy(tp->tl_name, uniqueName, MAXPGPATH);
 
 
 	file = AllocateFile(tp->tl_name, "w+");
diff --git a/src/include/c.h b/src/include/c.h
index 8314f566a2c..f38a8b10f09 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.22 1997/09/18 18:48:32 momjian Exp $
+ * $Id: c.h,v 1.23 1997/10/25 01:10:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,7 +29,7 @@
  *		5)		IsValid macros for system types
  *		6)		offsetof, lengthof, endof
  *		7)		exception handling definitions, Assert, Trap, etc macros
- *		8)		Min, Max, Abs, strNcpy macros
+ *		8)		Min, Max, Abs, StrNCpy macros
  *		9)		externs
  *		10)		 Berkeley-specific defs
  *		11)		system-specific hacks
@@ -686,11 +686,15 @@ typedef struct Exception
 #define Abs(x)			((x) >= 0 ? (x) : -(x))
 
 /*
- * strNcpy --
+ * StrNCpy --
  *		Does string copy, and forces terminating NULL
  */
 /* we do this so if the macro is used in an if action, it will work */
-#define strNcpy(dst,src,len)	(strncpy((dst),(src),(len)),*((dst)+(len))='\0')
+#define StrNCpy(dst,src,len)	do { \
+							strncpy((dst),(src),(len)); \
+							if (len > 0) \
+								*((dst)+(len)-1)='\0'; \
+							} while (0)
 
 /* Get a bit mask of the bits set in non-int32 aligned addresses */
 #define INT_ALIGN_MASK (sizeof(int32) - 1)
-- 
GitLab