break; }
static void compare_predicate(int type, int idx, const char *name)/* predicate function to use for entry difference reports */{	register TERMTYPE *t1 = &term[0];	register TERMTYPE *t2 = &term[1];	char *s1, *s2;	switch(type)	{	case BOOLEAN:		switch(compare)		{		case C_DIFFERENCE:			if (t1->Booleans[idx] != t2->Booleans[idx])			(void) printf("\t%s: %c:%c.\n",					  name,					  t1->Booleans[idx] ? 'T' : 'F',					  t2->Booleans[idx] ? 'T' : 'F');			break;		case C_COMMON:			if (t1->Booleans[idx] && t2->Booleans[idx])			(void) printf("\t%s= T.\n", name);			break;		case C_NAND:			if (!t1->Booleans[idx] && !t2->Booleans[idx])			(void) printf("\t!%s.\n", name);			break;		}		break;	case NUMBER:		switch(compare)		{		case C_DIFFERENCE:			if (t1->Numbers[idx] != t2->Numbers[idx])			(void) printf("\t%s: %d:%d.\n",					  name, t1->Numbers[idx], t2->Numbers[idx]);			break;		case C_COMMON:			if (t1->Numbers[idx]!=-1 && t2->Numbers[idx]!=-1				&& t1->Numbers[idx] == t2->Numbers[idx])			(void) printf("\t%s= %d.\n", name, t1->Numbers[idx]);			break;		case C_NAND:			if (t1->Numbers[idx]==-1 && t2->Numbers[idx] == -1)			(void) printf("\t!%s.\n", name);			break;		}	break;	case STRING:		s1 = t1->Strings[idx];		s2 = t2->Strings[idx];		switch(compare)		{		case C_DIFFERENCE:			if (capcmp(s1, s2))			{				char	buf1[BUFSIZ], buf2[BUFSIZ];				if (s1 == (char *)NULL)					(void) strcpy(buf1, "NULL");				else				{					(void) strcpy(buf1, "'");					(void) strcat(buf1, TIC_EXPAND(s1));					(void) strcat(buf1, "'");				}				if (s2 == (char *)NULL)					(void) strcpy(buf2, "NULL");				else				{					(void) strcpy(buf2, "'");					(void) strcat(buf2, TIC_EXPAND(s2));					(void) strcat(buf2, "'");				}				if (strcmp(buf1, buf2))					(void) printf("\t%s: %s, %s.\n",						      name, buf1, buf2);			}			break;		case C_COMMON:			if (s1 && s2 && !capcmp(s1, s2))				(void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));			break;		case C_NAND:			if (!s1 && !s2)				(void) printf("\t!%s.\n", name);			break;		}		break;	}}