* Sebastian Hammer, Adam Dickmeiss
*
* $Log: dir.c,v $
- * Revision 1.5 1995-09-06 16:11:16 adam
+ * Revision 1.6 1995-09-08 14:52:26 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.5 1995/09/06 16:11:16 adam
* Option: only one word key per file.
*
* Revision 1.4 1995/09/04 12:33:41 adam
{
DIR *dir;
struct dirent *dent;
- size_t entry_max = 20;
+ size_t entry_max = 50;
size_t idx = 0;
struct dir_entry *entry;
{
struct dir_entry *entry_n;
- if (!(entry_n = malloc (sizeof(*entry) * (entry_max + 100))))
+ if (!(entry_n = malloc (sizeof(*entry) * (entry_max + 400))))
{
logf (LOG_FATAL|LOG_ERRNO, "malloc");
exit (1);
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: extract.c,v $
- * Revision 1.5 1995-09-06 16:11:16 adam
+ * Revision 1.6 1995-09-08 14:52:27 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.5 1995/09/06 16:11:16 adam
* Option: only one word key per file.
*
* Revision 1.4 1995/09/05 15:28:39 adam
struct it_key k;
int seqno = 1;
int c;
- char w[256];
+ char w[IT_MAX_WORD];
logf (LOG_DEBUG, "Text extract of %d", sysno);
k.sysno = sysno;
int i = 0;
while (i < 254 && c != EOF && isalnum(c))
{
- w[i++] = c;
+ w[i++] = index_char_cvt (c);
c = getc (inf);
}
if (i)
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: index.h,v $
- * Revision 1.7 1995-09-06 16:11:16 adam
+ * Revision 1.8 1995-09-08 14:52:27 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.7 1995/09/06 16:11:16 adam
* Option: only one word key per file.
*
* Revision 1.6 1995/09/05 15:28:39 adam
#include <dict.h>
#include <isam.h>
+#define IT_MAX_WORD 256
#define IT_KEY_HAVE_FIELD 0
struct it_key {
void key_flush (void);
void key_write (int cmd, struct it_key *k, const char *str);
int key_compare (const void *p1, const void *p2);
-int key_compare_x (const struct it_key *i1, const struct it_key *i2);
void key_input (const char *dict_fname, const char *isam_fname,
const char *key_fname, int cache);
int key_sort (const char *key_fname, size_t mem);
void strtab_del (struct strtab *t,
void (*func)(const char *name, void *info, void *data),
void *data);
+int index_char_cvt (int c);
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: kcompare.c,v $
- * Revision 1.3 1995-09-07 13:58:36 adam
+ * Revision 1.4 1995-09-08 14:52:27 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.3 1995/09/07 13:58:36 adam
* New parameter: result-set file descriptor (RSFD) to support multiple
* positions within the same result-set.
* Boolean operators: and, or, not implemented.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include <ctype.h>
#include <assert.h>
#include "index.h"
return 0;
}
-int key_compare_x (const struct it_key *i1, const struct it_key *i2)
+int index_char_cvt (int c)
{
- if ( i1->sysno != i2->sysno)
- return i1->sysno - i2->sysno;
-#if IT_KEY_HAVE_FIELD
- if ( i1->seqno != i2->seqno)
- return i1->seqno - i2->seqno;
- return i1->field - i2->field;
-#else
- return i1->seqno - i2->seqno;
-#endif
+ return tolower (c);
}
-
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: kdump.c,v $
- * Revision 1.3 1995-09-06 16:11:17 adam
+ * Revision 1.4 1995-09-08 14:52:27 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.3 1995/09/06 16:11:17 adam
* Option: only one word key per file.
*
* Revision 1.2 1995/09/04 12:33:42 adam
int ret;
char *arg;
char *key_fname = NULL;
- char key_string[1000];
+ char key_string[IT_MAX_WORD];
char key_info[256];
FILE *inf;
struct it_key k;
memcpy (&k, key_info+1, sizeof(k));
- printf ("%s sysno=%d op=%d\n", key_string, k.sysno, *key_info);
+ printf ("%7d op=%d s=%-3d %s\n", k.sysno, *key_info, k.seqno,
+ key_string);
}
if (fclose (inf))
{
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zrpn.c,v $
- * Revision 1.7 1995-09-07 13:58:36 adam
+ * Revision 1.8 1995-09-08 14:52:27 adam
+ * Minor changes. Dictionary is lower case now.
+ *
+ * Revision 1.7 1995/09/07 13:58:36 adam
* New parameter: result-set file descriptor (RSFD) to support multiple
* positions within the same result-set.
* Boolean operators: and, or, not implemented.
static RSET rpn_search_APT (ZServerInfo *zi, Z_AttributesPlusTerm *zapt)
{
- char termz[256];
+ char termz[IT_MAX_WORD+1];
size_t sizez;
struct rset_isam_parms parms;
const char *info;
+ int i;
Z_Term *term = zapt->term;
if (term->which != Z_Term_general)
return NULL;
sizez = term->u.general->len;
- if (sizez > 255)
- sizez = 255;
- memcpy (termz, term->u.general->buf, sizez);
- termz[sizez] = '\0';
+ if (sizez > IT_MAX_WORD)
+ sizez = IT_MAX_WORD;
+ for (i = 0; i<sizez; i++)
+ termz[i] = index_char_cvt (term->u.general->buf[i]);
+ termz[i] = '\0';
logf (LOG_DEBUG, "dict_lookup: %s", termz);
if (!(info = dict_lookup (zi->wordDict, termz)))
return rset_create (rset_kind_null, NULL);