/*
- * Copyright (C) 1994-1995, Index Data I/S
+ * Copyright (C) 1994-1998, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: rectext.c,v $
- * Revision 1.5 1997-10-27 14:33:06 adam
+ * Revision 1.13 1999-09-07 07:19:21 adam
+ * Work on character mapping. Implemented replace rules.
+ *
+ * Revision 1.12 1999/05/26 07:49:14 adam
+ * C++ compilation.
+ *
+ * Revision 1.11 1999/05/21 12:00:17 adam
+ * Better diagnostics for extraction process.
+ *
+ * Revision 1.10 1999/05/20 12:57:18 adam
+ * Implemented TCL filter. Updated recctrl system.
+ *
+ * Revision 1.9 1998/10/16 08:14:38 adam
+ * Updated record control system.
+ *
+ * Revision 1.8 1998/05/20 10:12:27 adam
+ * Implemented automatic EXPLAIN database maintenance.
+ * Modified Zebra to work with ASN.1 compiled version of YAZ.
+ *
+ * Revision 1.7 1998/03/11 11:19:05 adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.6 1998/02/10 12:03:06 adam
+ * Implemented Sort.
+ *
+ * Revision 1.5 1997/10/27 14:33:06 adam
* Moved towards generic character mapping depending on "structure"
* field in abstract syntax file. Fixed a few memory leaks. Fixed
* bug with negative integers when doing searches with relational
#include <zebrautl.h>
#include "rectext.h"
-static void text_init (void)
+static void *text_init (RecType recType)
+{
+ return 0;
+}
+
+static void text_destroy (void *clientData)
{
}
struct buf_info *buf_open (struct recExtractCtrl *p)
{
- struct buf_info *fi = xmalloc (sizeof(*fi));
+ struct buf_info *fi = (struct buf_info *) xmalloc (sizeof(*fi));
fi->p = p;
- fi->buf = xmalloc (4096);
+ fi->buf = (char *) xmalloc (4096);
fi->offset = 1;
fi->max = 1;
return fi;
xfree (fi);
}
-static int text_extract (struct recExtractCtrl *p)
+static int text_extract (void *clientData, struct recExtractCtrl *p)
{
- char w[256];
+ char w[512];
RecWord recWord;
- int r, seqno = 1;
+ int r;
struct buf_info *fi = buf_open (p);
- (*p->init)(&recWord);
+ (*p->init)(p, &recWord);
recWord.reg_type = 'w';
do
{
int i = 0;
r = buf_read (fi, w);
- while (r > 0 && i < 255 && isalnum(w[i]))
+ while (r > 0 && i < 511 && w[i] != '\n' && w[i] != '\r')
{
i++;
r = buf_read (fi, w + i);
}
if (i)
{
- int j;
- for (j = 0; j<i; j++)
- w[j] = tolower(w[j]);
- w[i] = 0;
- recWord.seqno = seqno++;
recWord.string = w;
- (*p->add)(&recWord);
+ recWord.length = i;
+ (*p->tokenAdd)(&recWord);
}
} while (r > 0);
buf_close (fi);
- return 0;
+ return RECCTRL_EXTRACT_OK;
}
-static int text_retrieve (struct recRetrieveCtrl *p)
+static int text_retrieve (void *clientData, struct recRetrieveCtrl *p)
{
int r, text_ptr = 0;
static char *text_buf = NULL;
char *nb;
text_size = 2*text_size + 8192;
- nb = xmalloc (text_size);
+ nb = (char *) xmalloc (text_size);
if (text_buf)
{
memcpy (nb, text_buf, text_ptr);
static struct recType text_type = {
"text",
text_init,
+ text_destroy,
text_extract,
text_retrieve
};