+
+static RSFD r_open (RSET ct, int flag)
+{
+ struct rset_bool_info *info = (struct rset_bool_info *) ct->priv;
+ RSFD rfd;
+ struct rset_bool_rfd *p;
+
+
+ if (flag & RSETF_WRITE)
+ {
+ logf (LOG_FATAL, "bool set type is read-only");
+ return NULL;
+ }
+ rfd = rfd_create_base(ct);
+ if (rfd->priv)
+ p=(struct rset_bool_rfd *)rfd->priv;
+ else {
+ p=nmem_malloc(ct->nmem,sizeof(*p));
+ rfd->priv=p;
+ p->buf_l = nmem_malloc(ct->nmem, ct->keycontrol->key_size);
+ p->buf_r = nmem_malloc(ct->nmem, ct->keycontrol->key_size);
+ }
+
+ logf(LOG_DEBUG,"rsbool (%s) open [%p]", ct->control->desc, rfd);
+ p->hits=0;
+
+ p->rfd_l = rset_open (info->rset_l, RSETF_READ);
+ p->rfd_r = rset_open (info->rset_r, RSETF_READ);
+ p->more_l = rset_read (p->rfd_l, p->buf_l);
+ p->more_r = rset_read (p->rfd_r, p->buf_r);
+ p->tail = 0;
+ return rfd;
+}
+
+static void r_close (RSFD rfd)