- if ((*kctrl->getseq)(p->buf[i-1]) +1 !=
- (*kctrl->getseq)(p->buf[i]))
- { /* FIXME - We need more flexible multilevel stuff */
- p->more[i-1] = rset_read ( p->rfd[i-1], p->buf[i-1],
- &p->terms[i-1]);
- break;
- }
+ zint diff = (*kctrl->getseq)(p->buf[i]) -
+ (*kctrl->getseq)(p->buf[i-1]);
+ if (info->relation == 3 && diff == info->distance)
+ continue;
+ else if (info->relation == 2 && diff <= info->distance)
+ continue;
+ else if (info->relation == 1 && diff < info->distance)
+ continue;
+
+ p->more[i-1] = rset_read(p->rfd[i-1], p->buf[i-1],
+ &p->terms[i-1]);
+ break;