4.3BSD/usr/contrib/spms/src/lib/libpdb/src/pbaddflag.c

Compare this file to the similar file:
Show the results in this format:

/* $Header$ */

/*
 * Author: Peter J. Nicklin
 */

/*
 * pbaddflag() adds a flag to the tail of the buffer. The buffer is not
 * changed if flag already exists. Returns integer NO if buffer space
 * exceeded, otherwise YES.
 */
#include "pdbuf.h"
#include "yesno.h"

extern char *CURPBUF;			/* current database buffer */

pbaddflag(flag)
	register char *flag;		/* flag string */
{
	register char *bp;		/* buffer pointer */
	char *pbskipfield();		/* skip to next non-key field */
	char *strcpy();			/* string copy */
	int pbstretch();		/* stretch buffer */

	bp = CURPBUF;
	while (*(bp = pbskipfield(bp)) != '\0')
		if (bp[0] == flag[0] && bp[1] == flag[1] &&
			(bp[2] == _PBFS || bp[2] == '\0'))
			return(YES);	/* flag already exists */
	if (bp == CURPBUF)
		{
		*bp++ = _PBFS;		/* prepare virgin buffer */
		*bp = '\0';
		}
	if (pbstretch(bp, 3) == NO)
		return(NO);
	bp[0] = flag[0];		/* add flag */
	bp[1] = flag[1];
	bp[2] = _PBFS;			/* add field separator */
	return(YES);
}