+ {
+#if OLDCODE
+ 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;
+ logf (LOG_DEBUG, "r_read_and returning E m=%d/%d c=%d",
+ p->more_l, p->more_r, cmp);
+ key_logdump(LOG_DEBUG,buf);
+ return 1;
+ }
+#else
+ if (p->tail)
+ {
+ logf (LOG_DEBUG, "r_read_and returning L tail m=%d/%d c=%d",
+ p->more_l, p->more_r, 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);
+ if (!p->more_l || (*info->cmp)(p->buf_l, buf) > 1)
+ p->tail = 0;
+ logf (LOG_DEBUG, "r_read_and returning F m=%d/%d c=%d",
+ p->more_l, p->more_r, cmp);
+ key_logdump(LOG_DEBUG,buf);
+ return 1;
+ }
+ else
+ {
+ logf (LOG_DEBUG, "r_read_and about to forward L m=%d/%d c=%d",
+ p->more_l, p->more_r, cmp);
+ if (p->more_r && p->more_l)
+ p->more_l = rset_forward(
+ /* p->more_l = rset_default_forward( */
+ info->rset_l, p->rfd_l,
+ p->buf_l, &p->term_index_l,
+ (info->cmp), p->buf_r);
+ else
+ return 0; /* no point in reading further */
+ }
+#endif
+ }