* Sebastian Hammer, Adam Dickmeiss
*
* $Log: rstemp.c,v $
- * Revision 1.10 1995-09-15 14:45:39 adam
+ * Revision 1.13 1995-10-06 14:38:06 adam
+ * New result set method: r_score.
+ * Local no (sysno) and score is transferred to retrieveCtrl.
+ *
+ * Revision 1.12 1995/09/28 09:52:11 adam
+ * xfree/xmalloc used everywhere.
+ *
+ * Revision 1.11 1995/09/18 14:17:56 adam
+ * Bug fixes.
+ *
+ * Revision 1.10 1995/09/15 14:45:39 adam
* Bug fixes.
*
* Revision 1.9 1995/09/15 09:20:42 adam
static int r_count (rset_control *ct);
static int r_read (RSFD rfd, void *buf);
static int r_write (RSFD rfd, const void *buf);
+static int r_score (RSFD rfd, int *score);
static const rset_control control =
{
r_rewind,
r_count,
r_read,
- r_write
+ r_write,
+ r_score
};
const rset_control *rset_kind_temp = &control;
info->fd = -1;
info->fname = NULL;
info->key_size = temp_parms->key_size;
- info->buf_size = 2048;
+ info->buf_size = 4096;
info->buf_mem = xmalloc (info->buf_size);
info->pos_cur = 0;
info->pos_end = 0;
if (info->fname)
unlink (info->fname);
free (info->buf_mem);
- free (info->fname);
+ logf (LOG_DEBUG, "r_delete: set size %ld", (long) info->pos_end);
+ if (info->fname)
+ {
+ logf (LOG_DEBUG, "r_delete: unlink %s", info->fname);
+ unlink (info->fname);
+ free (info->fname);
+ }
free (info);
}
{
r_flush (rfd, 1);
info->pos_buf = info->pos_cur;
- r_reread (rfd);
- info->dirty = 1;
+ if (info->pos_buf < info->pos_end)
+ r_reread (rfd);
}
+ info->dirty = 1;
memcpy (info->buf_mem + (info->pos_cur - info->pos_buf), buf,
info->key_size);
info->pos_cur = nc;
return 1;
}
+static int r_score (RSFD rfd, int *score)
+{
+ *score = -1;
+ return -1;
+}