X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=e3255287e911323efb4939fc1bcd955a5d70411c;hb=18bdfd28a9f4d38e2f81556396f51821c3d71088;hp=e43145345f0878256c124938a40ed98352537390;hpb=2ebb686ca09ee2e128f4db3fb418d4846991b6a0;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index e431453..e325528 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,4 +1,4 @@ -/* $Id: extract.c,v 1.142 2003-03-12 17:11:23 pop Exp $ +/* $Id: extract.c,v 1.144 2003-04-15 16:46:18 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Index Data Aps @@ -419,7 +419,8 @@ static int recordExtract (ZebraHandle zh, SYSNO *sysno, const char *fname, struct recordGroup *rGroup, int deleteFlag, struct file_read_info *fi, - RecType recType, char *subType, void *clientData) + RecType recType, char *subType, void *clientData, + int force_update) { RecordAttr *recordAttr; int r; @@ -580,7 +581,7 @@ static int recordExtract (ZebraHandle zh, recordAttr = rec_init_attr (zh->reg->zei, rec); - if (recordAttr->runNumber == + if (!force_update && recordAttr->runNumber == zebraExplain_runNumberIncrement (zh->reg->zei, 0)) { yaz_log (LOG_LOG, "run number = %d", recordAttr->runNumber); @@ -882,7 +883,7 @@ int fileExtract (ZebraHandle zh, SYSNO *sysno, const char *fname, { file_begin (fi); r = recordExtract (zh, sysno, fname, rGroup, deleteFlag, fi, - recType, subType, clientData); + recType, subType, clientData, 1); } while (r && !sysno && fi->file_more); file_read_stop (fi); if (fd != -1) @@ -918,7 +919,7 @@ int extract_rec_in_mem (ZebraHandle zh, const char *recordType, sysno, match_criteria, "", - 0)); + 0,1)); } /* If sysno is provided, then it's used to identify the reocord. @@ -935,7 +936,8 @@ int bufferExtractRecord (ZebraHandle zh, int *sysno, const char *match_criteria, const char *fname, - int force_update) + int force_update, + int allow_update) { RecordAttr *recordAttr; @@ -1094,13 +1096,20 @@ int bufferExtractRecord (ZebraHandle zh, extract_flushRecordKeys (zh, *sysno, 1, &zh->reg->keys); zh->records_inserted++; - } + } else { /* record already exists */ struct recKeys delkeys; struct sortKeys sortKeys; + if (!allow_update) { + logf (LOG_LOG, "skipped %s %s %ld", + recordType, fname, (long) recordOffset); + logRecord(zh); + return -1; + } + rec = rec_get (zh->reg->records, *sysno); assert (rec); @@ -1825,6 +1834,7 @@ char *encode_key_int (int d, char *bp) } return bp; } +#define OLDENCODE 1 #ifdef OLDENCODE /* this is the old encode_key_write