)(p->L)) && ((*p->R->F)(p->R))?1:0);
}
or(p) register struct anode *p; {
	 return(((*p->L->F)(p->L)) || ((*p->R->F)(p->R))?1:0);
}
not(p) register struct anode *p; {
	return( !((*p->L->F)(p->L)));
}
glob(p) register struct { int f; char *pat; } *p;  {
	return(gmatch(fname,p->pat));
}
print() {
	puts(pathname);
	return(1);
}
mtime(p) register struct { int f, t, s; } *p;  {
	return(scomp((int)((now - Statb.i_mtime) / A_DAY), p->t, p->s));
}
atime(p) register struct { int f, t, s; } *p;  {
	return(scomp((int)((now - Statb.i_atime) / A_DAY), p->t, p->s));
}
user(p) register struct { int f, u, s; } *p;  {
	return(scomp(Statb.i_uid&0377,p->u,p->s));
}
ino(p) register struct { int f, u, s; } *p; {
	return(scomp(Statb.i_ino,p->u,p->s));
}
group(p) register struct { int f, u; } *p;  {
	return(p->u == Statb.i_gid);
}
links(p) register struct { int f, link, s; } *p;  {
	return(scomp(Statb.i_nlink,p->link,p->s));
}
size(p) register struct { int f, sz, s; } *p;  {
	return(scomp(nblock(Statb.i_size0,Statb.i_size1),p->sz,p->s));
}
perm(p) register struct { int f, per, s; } *p;  {
	register i;
	i = (p->s=='-') ? p->per : 07777; /* '-' means only arg bits */
	return((Statb.i_mode & i & 07777) == p->per);
}
type(p) register struct { int f, per, s; } *p; {
	return((Statb.i_mode&IFMT)==p->per);
}
exeq(p) register struct { int f, com; } *p; {
	fflush(stdout); /* to flush possible `-print' */
	return(doex(p->com));
}
ok(p) struct { int f, com; } *p; {
	char c;  int yes;
	yes = 0;
	fflush(stdout);
	fprintf(stderr, "< %s ... %s ... > ?   ", Argv[p->com], pathname);
	fflush(stderr);
	if((c=getchar())=='y') yes = 1;
	while(c!='\n') c = getchar();
	if(yes) return(doex(p->com));
	return(0);
}

/* support functions */
scomp(a, b, s) /* funny sign