- while (p->more_l && p->more_r)
- {
- int cmp;
-
- cmp = (*info->cmp)(p->buf_l, p->buf_r);
- if (!cmp)
- {
- memcpy (buf, p->buf_l, info->key_size);
- p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l);
- p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r);
- return 1;
- }
- else if (cmp == 1)
- {
- memcpy (buf, p->buf_r, info->key_size);
- p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r);
- return 1;
- }
- else if (cmp == -1)
- {
- memcpy (buf, p->buf_l, info->key_size);
- p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l);
- return 1;
- }
- else if (cmp > 1)
- p->more_r = rset_read (info->rset_r, p->rfd_r, p->buf_r);
- else
- p->more_l = rset_read (info->rset_l, p->rfd_l, p->buf_l);
- }
- return 0;