POSIX thread updates. First work on term sets.
[idzebra-moved-to-github.git] / index / extract.c
index 9b85afa..86de3b2 100644 (file)
@@ -1,10 +1,20 @@
 /*
- * 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.109  2001-10-15 19:53:43  adam
+ * POSIX thread updates. First work on term sets.
+ *
+ * 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 +939,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;
@@ -993,7 +1006,7 @@ static void flushRecordKeys (SYSNO sysno, int cmd, struct recKeys *reckeys)
         }
 #endif
         assert (ch > 0);
-       key_buf_used += key_SU_code (ch, ((char*)key_buf) + key_buf_used);
+       key_buf_used += key_SU_encode (ch, ((char*)key_buf) + key_buf_used);
 
         while (*src)
             ((char*)key_buf) [key_buf_used++] = *src++;
@@ -1512,6 +1525,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 +1771,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);
     }