* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zserver.c,v $
- * Revision 1.20 1995-10-27 14:00:12 adam
+ * Revision 1.24 1995-11-20 16:59:47 adam
+ * New update method: the 'old' keys are saved for each records.
+ *
+ * Revision 1.23 1995/11/16 17:00:56 adam
+ * Better logging of rpn query.
+ *
+ * Revision 1.22 1995/11/16 15:34:55 adam
+ * Uses new record management system in both indexer and server.
+ *
+ * Revision 1.21 1995/11/01 16:25:52 quinn
+ * *** empty log message ***
+ *
+ * Revision 1.20 1995/10/27 14:00:12 adam
* Implemented detection of database availability.
*
* Revision 1.19 1995/10/17 18:02:11 adam
#include <unistd.h>
#include <fcntl.h>
+#include <common.h>
+#include <data1.h>
#include <recctrl.h>
#include <dmalloc.h>
#include "zserver.h"
r.handle = name;
logf (LOG_DEBUG, "bend_init");
+ data1_tabpath = res_get(common_resource, "data1_tabpath");
server_info.sets = NULL;
+#if RECORD_BASE
+ server_info.records = rec_open (0);
+#else
if (!(server_info.sys_idx_fd = open (FNAME_SYS_IDX, O_RDONLY)))
{
logf (LOG_WARN|LOG_ERRNO, "sys_idx open fail");
r.errstring = "sys_idx open fail";
return &r;
}
+#endif
if (!(server_info.fileDict = dict_open (FNAME_FILE_DICT, 10, 0)))
{
logf (LOG_WARN, "dict_open fail: fname dict");
r.errstring = 0;
r.hits = 0;
+
odr_reset (server_info.odr);
server_info.errCode = 0;
server_info.errString = NULL;
+
+ logf (LOG_LOG, "ResultSet '%s'", q->setname);
switch (q->query->which)
{
case Z_Query_type_1:
oid_value *output_format, char **rec_bufp,
int *rec_lenp)
{
+#if RECORD_BASE
+ Record rec;
+#else
char record_info[SYS_IDX_ENTRY_LEN];
+#endif
char *fname, *file_type;
RecType rt;
struct recRetrieveCtrl retrieveCtrl;
+#if RECORD_BASE
+ rec = rec_get (zi->records, sysno);
+ file_type = rec->info[0];
+ fname = rec->info[1];
+#else
if (lseek (zi->sys_idx_fd, sysno * SYS_IDX_ENTRY_LEN,
SEEK_SET) == -1)
{
}
file_type = record_info;
fname = record_info + strlen(record_info) + 1;
+#endif
+
if (!(rt = recType_byName (file_type)))
{
logf (LOG_FATAL|LOG_ERRNO, "Retrieve: Cannot handle type %s",
*output_format = VAL_SUTRS;
*rec_bufp = msg;
*rec_lenp = strlen (msg);
+#if RECORD_BASE
+ rec_rm (&rec);
+#endif
return 0; /* or 14: System error in presenting records */
}
retrieveCtrl.localno = sysno;
*rec_bufp = retrieveCtrl.rec_buf;
*rec_lenp = retrieveCtrl.rec_len;
close (retrieveCtrl.fd);
+#if RECORD_BASE
+ rec_rm (&rec);
+#endif
return retrieveCtrl.diagnostic;
}
dict_close (server_info.fileDict);
dict_close (server_info.wordDict);
is_close (server_info.wordIsam);
+#if RECORD_BASE
+ rec_close (&server_info.records);
+#else
close (server_info.sys_idx_fd);
+#endif
return;
}