OUTPUT;
OUTPUT
append(keylist, nelem, depth, fp, put, ftbl)	u_char **keylist;	int nelem;	register int depth;	FILE *fp;	void (*put)(RECHEADER *, FILE *);	struct field *ftbl;{	register u_char *wts, *wts1;	register n, odepth;	register u_char **cpos, **ppos, **lastkey;	register u_char *cend, *pend, *start;	register RECHEADER *crec, *prec;	if (*keylist == '\0' && UNIQUE)		return;	wts1 = wts = ftbl[0].weights;	if ((!UNIQUE) && SINGL_FLD) {		if (ftbl[0].flags & F && ftbl[0].flags & R)			wts1 = Rascii;		else if (ftbl[0].flags & F)			wts1 = ascii;		odepth = depth;	}	lastkey = keylist + nelem;	depth += sizeof(TRECHEADER);	if (SINGL_FLD && (UNIQUE || wts1 != wts)) {		ppos = keylist;		prec = (RECHEADER *) (*ppos - depth);		if (UNIQUE)			put(prec, fp);		for (cpos = keylist+1; cpos < lastkey; cpos++) {			crec = (RECHEADER *) (*cpos - depth);			if (crec->length  == prec->length) {				pend = (u_char *) &prec->offset + prec->length;				cend = (u_char *) &crec->offset + crec->length;				for (start = *cpos; cend >= start; cend--) {					if (wts[*cend] != wts[*pend])						break;					pend--;				}				if (pend + 1 != *ppos) {					if (!UNIQUE)						OUTPUT					else						put(crec, fp);					ppos = cpos;					prec = crec;				}			} else {				if (!UNIQUE)					OUTPUT				else					put(crec, fp);				ppos = cpos;				prec = crec;			}		}		if (!UNIQUE)			OUTPUT;	} else if (UNIQUE) {		ppos = keylist;		prec = (RECHEADER *) (*ppos - depth);		put(prec, fp);		for (cpos = keylist+1; cpos < lastkey; cpos++) {			crec = (RECHEADER *) (*cpos - depth);			if (crec->offset == prec->offset) {				pend = (u_char *) &prec->offset + prec->offset;				cend = (u_char *) &crec->offset + crec->offset;				for (start = *cpos; cend >= start; cend--) {					if (wts[*cend] != wts[*pend])						break;					pend--;				}				if (pend + 1 != *ppos) {					ppos = cpos;					prec = crec;					put(prec, fp);				}			} else {				ppos = cpos;				prec = crec;				put(prec, fp);			}		}	} else for (cpos = keylist; cpos < lastkey; cpos++) {		crec = (RECHEADER *) (*cpos - depth);		put(crec, fp);	}}