* Sebastian Hammer, Adam Dickmeiss
*
* $Log: extract.c,v $
- * Revision 1.97 1999-07-06 12:28:04 adam
+ * Revision 1.101 2000-05-15 13:02:39 adam
+ * Minor change.
+ *
+ * Revision 1.100 2000/03/20 19:08:36 adam
+ * Added remote record import using Z39.50 extended services and Segment
+ * Requests.
+ *
+ * Revision 1.99 2000/02/24 10:57:02 adam
+ * Sequence number incremented after each incomplete-field.
+ *
+ * Revision 1.98 1999/09/07 07:19:21 adam
+ * Work on character mapping. Implemented replace rules.
+ *
+ * Revision 1.97 1999/07/06 12:28:04 adam
* Updated record index structure. Format includes version ID. Compression
* algorithm ID is stored for each record block.
*
logf (LOG_LOG, "sorting section %d", key_file_no);
#if !SORT_EXTRA
qsort (key_buf + ptr_top-ptr_i, ptr_i, sizeof(char*), key_qsort_compare);
- getFnameTmp (out_fname, key_file_no);
+ getFnameTmp (common_resource, out_fname, key_file_no);
if (!(outf = fopen (out_fname, "wb")))
{
int rw = rGroup->flagRw;
if (rw)
zebraExplain_runNumberIncrement (zti, 1);
- zebraExplain_close (zti, rw, 0);
+ zebraExplain_close (zti, rw);
key_flush ();
xfree (key_buf);
rec_close (&records);
w->attrSet = VAL_BIB1;
w->attrUse = 1016;
w->reg_type = 'w';
+ w->extractCtrl = p;
}
static struct sortKey {
return;
addString (p, buf, i);
}
+ (p->seqnos[p->reg_type])++; /* to separate this from next one */
}
static void addCompleteField (RecWord *p)
static void addRecordKey (RecWord *p)
{
+ WRBUF wrbuf;
+ if ((wrbuf = zebra_replace(p->zebra_maps, p->reg_type, 0,
+ p->string, p->length)))
+ {
+ p->string = wrbuf_buf(wrbuf);
+ p->length = wrbuf_len(wrbuf);
+ }
if (zebra_maps_is_complete (p->zebra_maps, p->reg_type))
addCompleteField (p);
else
extractCtrl.fh = fi;
extractCtrl.subType = subType;
extractCtrl.init = wordInit;
- extractCtrl.addWord = addRecordKey;
- extractCtrl.addSchema = addSchema;
+ extractCtrl.tokenAdd = addRecordKey;
+ extractCtrl.schemaAdd = addSchema;
extractCtrl.dh = rGroup->dh;
for (i = 0; i<256; i++)
{
is probably empty - unless flagShowRecords is in use */
if (!rGroup->flagRw)
return 1;
- logf (LOG_WARN, "No keys generated for file %s", fname);
- logf (LOG_WARN, " The file is probably empty");
+
+ logf (LOG_WARN, "empty %s %s %ld", rGroup->recordType,
+ fname, (long) recordOffset);
return 1;
}
}
{
if (zebraExplain_newDatabase (zti, rGroup->databaseName,
rGroup->explainDatabase))
- abort ();
+ return 0;
}
if (rGroup->flagStoreData == -1)
if (rGroup->flagStoreKeys == -1)
rGroup->flagStoreKeys = 0;
-#if ZEBRASDR
- if (rGroup->useSDR)
- {
- ZebraSdrHandle h;
- char xname[128], *xp;
-
- strncpy (xname, fname, 127);
- if (!(xp = strchr (xname, '.')))
- return 0;
- *xp = '\0';
- if (strcmp (xp+1, "sdr.bits"))
- return 0;
-
- h = zebraSdr_open (xname);
- if (!h)
- {
- logf (LOG_WARN, "sdr open %s", xname);
- return 0;
- }
- for (;;)
- {
- unsigned char *buf;
- char sdr_name[128];
- int r, segmentno;
-
- segmentno = zebraSdr_segment (h, 0);
- sprintf (sdr_name, "%%%s.%d", xname, segmentno);
-
-#if 0
- if (segmentno > 20)
- break;
-#endif
- r = zebraSdr_read (h, &buf);
-
- if (!r)
- break;
-
- fi = file_read_start (0);
- fi->sdrbuf = buf;
- fi->sdrmax = r;
- do
- {
- file_begin (fi);
- r = recordExtract (sysno, sdr_name, rGroup, deleteFlag, fi,
- recType, subType);
- } while (r && !sysno && fi->file_more);
- file_read_stop (fi);
- free (buf);
- }
- zebraSdr_close (h);
- return 1;
- }
-#endif
if (sysno && deleteFlag)
fd = -1;
else
reckeys.prevSeqNo = 0;
extractCtrl.init = wordInit;
- extractCtrl.addWord = addRecordKey;
- extractCtrl.addSchema = addSchema;
+ extractCtrl.tokenAdd = addRecordKey;
+ extractCtrl.schemaAdd = addSchema;
extractCtrl.dh = rGroup->dh;
for (i = 0; i<256; i++)
extractCtrl.seqno[i] = 0;