#include	"ksysdefs.h"
#include	"ksysvtyp.h"
#include	"ksysprot.h"
#include	"ksyskref.h"
#define		NO_DUPE
/**/
/*EXTERNAL*/
/**/
reject(rc,cc,cd,fn)		/* produce rejection list file */
char	*rc;	/* raw card */
char	*cc;	/* compiled card */
NOSIGN	cd;		/* card number */
char	*fn;	/* bibl file name */
{
	auto	NOSIGN	fnd = 0;
	REG		BS		*bsx = bso;
	while(fnd == 0 && bsx->bs)	{
		if(kpx(cc,bsx->bs))	fnd = 1;
		bsx += 1;
		}
	if(!fnd)	xwrcd(rc,stdout);
	return( fnd );
}
addwork(rc,cc,cd,fn)	/* add one card to work file, BS record */
char	*rc;	/* raw card */
char	*cc;	/* compiled card */
NOSIGN	cd;		/* card number */
char	*fn;	/* bibl file name */
{
	static	char	*here = "addwork";
	auto	long	da = 0L;
	auto	NOSIGN	fnd = 0;
	REG		BS		*bsx = bso;
	auto	int		size;
/**/
	da = ftell(wfp) + 1L;
/**/
	while(bsx->bs)	{
		if(kpx(cc,bsx->bs))	{
			if(fnd++ == 0)	{	/* write first case only */
				if(kenv.flags3 & DC)	{
					fputs("EXPR ",wfp);
					prpat(bsx->bs,wfp);
					}
				xwrcd(rc,wfp);
				}
			size = (bsx->nd + 1) * sizeof(DISKAD);
			if(bsx->nd == 0)	
				bsx->da = (DISKAD *) emalloc( size, here );
			else
				bsx->da = (DISKAD *) erealloc( bsx->da, size, here );
			*(bsx->da + bsx->nd) = da;
			bsx->nd += 1;
			if(bsx->nd > 1)	{
				if(kenv.flags2 & DA)		{
					if(kenv.flags2 & DC)	kenv.flags2 |= DF;
					errmsg("<ambiguous citation(s)>\n");
					kenv.flags2 &= ~DA;
					}
				if(kenv.flags2 & DD)	{
					errmsg("<killed for AMBIGUITY: check -a option>\n");
					terror(FUBAR);
					}
				}
			}
		else
		if(kenv.flags3 & DC)	{
			fputs("EXPR NONE\n",wfp);
			xwrcd(rc,wfp);
			}
		bsx += 1;
		}
/**/
	return(fnd);
}
addcom(rc,cc,cd,fn)		/* add one card with comment to work */
char	*rc;	/* raw card */
char	*cc;	/* compiled card */
int		cd;		/* card number */
char	*fn;	/* bibl file name */
{
	errmsg("addcom <not implemented>\n");
	terror(FUBAR);
}
