X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=index%2Fextract.c;h=305cc18a818dfa74c145820b7660f42186f5facc;hp=9b85afacf93b34bda8cf50e947412244fd9cddd9;hb=6f27675ef554a06c5996a8815ed24dd3e6171aa1;hpb=ee469875edc1db23aae63746ec9fff6a7be8d4ab diff --git a/index/extract.c b/index/extract.c index 9b85afa..305cc18 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,10 +1,17 @@ /* - * Copyright (C) 1994-2000, Index Data + * Copyright (C) 1994-2001, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: extract.c,v $ - * Revision 1.106 2000-12-05 12:22:53 adam + * Revision 1.108 2001-06-14 11:44:56 adam + * Bug fix: default storeKeys setting wasn't read when group was specified. + * + * Revision 1.107 2001/05/28 13:58:48 adam + * Call flushSortKeys when record is skipped to fix bad re-use of + * sort keys to whatever next record that comes in. + * + * Revision 1.106 2000/12/05 12:22:53 adam * Termlist source implemented (so that we can index values of XML/SGML * attributes). * @@ -929,8 +936,11 @@ static void flushSortKeys (SYSNO sysno, int cmd) while (sk) { struct sortKey *sk_next = sk->next; - sortIdx_type (sortIdx, sk->attrUse); - sortIdx_add (sortIdx, sk->string, sk->length); + if (cmd >= 0) + { + sortIdx_type (sortIdx, sk->attrUse); + sortIdx_add (sortIdx, sk->string, sk->length); + } xfree (sk->string); xfree (sk); sk = sk_next; @@ -1512,6 +1522,7 @@ static int recordExtract (SYSNO *sysno, const char *fname, { logf (LOG_LOG, "skipped %s %s " PRINTF_OFF_T, rGroup->recordType, fname, recordOffset); + flushSortKeys (*sysno, -1); rec_rm (&rec); logRecord (0); return 1; @@ -1757,11 +1768,14 @@ int fileExtract (SYSNO *sysno, const char *fname, const char *sval; sprintf (ext_res, "%sstoreKeys.%s", gprefix, ext); - if (!(sval = res_get (common_resource, ext_res))) + sval = res_get (common_resource, ext_res); + if (!sval) { sprintf (ext_res, "%sstoreKeys", gprefix); sval = res_get (common_resource, ext_res); } + if (!sval) + sval = res_get (common_resource, "storeKeys"); if (sval) rGroup->flagStoreKeys = atoi (sval); }