1: /* $Header$ */ 2: 3: /* 4: * Author: Peter J. Nicklin 5: */ 6: 7: /* 8: * pbaddflag() adds a flag to the tail of the buffer. The buffer is not 9: * changed if flag already exists. Returns integer NO if buffer space 10: * exceeded, otherwise YES. 11: */ 12: #include "pdbuf.h" 13: #include "yesno.h" 14: 15: extern char *CURPBUF; /* current database buffer */ 16: 17: pbaddflag(flag) 18: register char *flag; /* flag string */ 19: { 20: register char *bp; /* buffer pointer */ 21: char *pbskipfield(); /* skip to next non-key field */ 22: char *strcpy(); /* string copy */ 23: int pbstretch(); /* stretch buffer */ 24: 25: bp = CURPBUF; 26: while (*(bp = pbskipfield(bp)) != '\0') 27: if (bp[0] == flag[0] && bp[1] == flag[1] && 28: (bp[2] == _PBFS || bp[2] == '\0')) 29: return(YES); /* flag already exists */ 30: if (bp == CURPBUF) 31: { 32: *bp++ = _PBFS; /* prepare virgin buffer */ 33: *bp = '\0'; 34: } 35: if (pbstretch(bp, 3) == NO) 36: return(NO); 37: bp[0] = flag[0]; /* add flag */ 38: bp[1] = flag[1]; 39: bp[2] = _PBFS; /* add field separator */ 40: return(YES); 41: }