+ rset_rewind (info->rset_l, p->rfd_l);
+ rset_rewind (info->rset_r, p->rfd_r);
+ p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l, &p->term_index_l);
+ p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r, &p->term_index_r);
+}
+
+static int r_count (RSET ct)
+{
+ return 0;
+}
+
+
+/*
+ 1,1 1,3
+ 1,9 2,1
+ 1,11 3,1
+ 2,9
+
+ 1,1 1,1
+ 1,3 1,3
+ 1,9
+ 1,11
+ 2,1 2,1
+ 2,9
+ 3,1
+*/
+
+static int r_read_and (RSFD rfd, void *buf, int *term_index)
+{
+ struct rset_bool_rfd *p = (struct rset_bool_rfd *) rfd;
+ struct rset_bool_info *info = p->info;
+
+ while (p->more_l || p->more_r)
+ {
+ int cmp;
+
+ if (p->more_l && p->more_r)
+ cmp = (*info->cmp)(p->buf_l, p->buf_r);
+ else if (p->more_l)
+ cmp = -2;
+ else
+ cmp = 2;
+ if (!cmp)
+ {
+ memcpy (buf, p->buf_l, info->key_size);
+ *term_index = p->term_index_l;
+ p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l,
+ &p->term_index_l);
+ p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r,
+ &p->term_index_r);
+ p->tail = 1;
+ return 1;
+ }
+ else if (cmp == 1)
+ {
+ memcpy (buf, p->buf_r, info->key_size);
+ *term_index = p->term_index_r + info->term_index_s;
+ p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r,
+ &p->term_index_r);
+ p->tail = 1;
+ return 1;
+ }
+ else if (cmp == -1)
+ {
+ memcpy (buf, p->buf_l, info->key_size);
+ *term_index = p->term_index_l;
+ p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l,
+ &p->term_index_l);
+ p->tail = 1;
+ return 1;
+ }
+ else if (cmp > 1)
+ {
+ memcpy (buf, p->buf_r, info->key_size);
+ *term_index = p->term_index_r + info->term_index_s;
+
+ p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r,
+ &p->term_index_r);
+ if (p->tail)
+ {
+ if (!p->more_r || (*info->cmp)(p->buf_r, buf) > 1)
+ p->tail = 0;
+ return 1;
+ }
+ }
+ else
+ {
+ memcpy (buf, p->buf_l, info->key_size);
+ *term_index = p->term_index_l;
+ p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l,
+ &p->term_index_l);
+ if (p->tail)
+ {
+ if (!p->more_l || (*info->cmp)(p->buf_l, buf) > 1)
+ p->tail = 0;
+ return 1;
+ }
+ }
+ }
+ return 0;