2 * Copyright (C) 1995, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-09-05 15:28:40 adam
8 * More work on search engine.
18 ZServerSet *resultSetAdd (ZServerInfo *zi, const char *name, int ov, RSET rset)
22 for (s = zi->sets; s; s = s->next)
23 if (!strcmp (s->name, name))
27 rset_delete (s->rset);
31 s = xmalloc (sizeof(*s));
34 s->name = xmalloc (strlen(name)+1);
35 strcpy (s->name, name);
40 ZServerSet *resultSetGet (ZServerInfo *zi, const char *name)
44 for (s = zi->sets; s; s = s->next)
45 if (!strcmp (s->name, name))
50 ZServerRecord *resultSetRecordGet (ZServerInfo *zi, const char *name,
51 int num, int *positions)
61 if (!(sset = resultSetGet (zi, name)))
63 if (!(rset = sset->rset))
65 logf (LOG_DEBUG, "resultSetRecordGet");
66 sr = xmalloc (sizeof(*sr) * num);
68 while (rset_read (rset, &key))
70 logf (LOG_DEBUG, "resultSetRecordGet: %d", key.sysno);
71 if (key.sysno != psysno)
75 if (position == positions[num_i])
78 char fname[SYS_IDX_ENTRY_LEN];
80 logf (LOG_DEBUG, "get sysno=%d", psysno);
82 if (lseek (zi->sys_idx_fd, psysno * SYS_IDX_ENTRY_LEN,
85 logf (LOG_FATAL|LOG_ERRNO, "lseek of sys_idx");
88 if (read (zi->sys_idx_fd, fname, SYS_IDX_ENTRY_LEN) == -1)
90 logf (LOG_FATAL|LOG_ERRNO, "read of sys_idx");
93 if (!(inf = fopen (fname, "r")))
94 logf (LOG_WARN, "fopen: %s", fname);
99 fseek (inf, 0L, SEEK_END);
101 fseek (inf, 0L, SEEK_SET);
102 logf (LOG_DEBUG, "get sysno=%d, fname=%s, size=%ld",
103 psysno, fname, (long) size);
104 sr[num_i].buf = xmalloc (size+1);
105 sr[num_i].size = size;
106 sr[num_i].buf[size] = '\0';
107 if (fread (sr[num_i].buf, size, 1, inf) != 1)
109 logf (LOG_FATAL|LOG_ERRNO, "fread %s", fname);
124 void resultSetRecordDel (ZServerInfo *zi, ZServerRecord *records, int num)
128 for (i = 0; i<num; i++)
129 free (records[i].buf);