More work on extract in record control.
[idzebra-moved-to-github.git] / index / kcompare.c
1 /*
2  * Copyright (C) 1994-1995, Index Data I/S 
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: kcompare.c,v $
7  * Revision 1.7  1995-09-27 12:22:28  adam
8  * More work on extract in record control.
9  * Field name is not in isam keys but in prefix in dictionary words.
10  *
11  * Revision 1.6  1995/09/14  07:48:23  adam
12  * Record control management.
13  *
14  * Revision 1.5  1995/09/11  13:09:34  adam
15  * More work on relevance feedback.
16  *
17  * Revision 1.4  1995/09/08  14:52:27  adam
18  * Minor changes. Dictionary is lower case now.
19  *
20  * Revision 1.3  1995/09/07  13:58:36  adam
21  * New parameter: result-set file descriptor (RSFD) to support multiple
22  * positions within the same result-set.
23  * Boolean operators: and, or, not implemented.
24  * Result-set references.
25  *
26  * Revision 1.2  1995/09/06  16:11:17  adam
27  * Option: only one word key per file.
28  *
29  * Revision 1.1  1995/09/04  09:10:36  adam
30  * More work on index add/del/update.
31  * Merge sort implemented.
32  * Initial work on z39 server.
33  *
34  */
35
36 #include <stdlib.h>
37 #include <string.h>
38 #include <stdio.h>
39 #include <ctype.h>
40 #include <assert.h>
41
42 #include "index.h"
43
44 void key_logdump (int logmask, const void *p)
45 {
46     struct it_key key;
47
48     memcpy (&key, p, sizeof(key));
49     logf (logmask, "%7d s=%-4d", key.sysno, key.seqno);
50 }
51
52 int key_compare (const void *p1, const void *p2)
53 {
54     struct it_key i1, i2;
55     memcpy (&i1, p1, sizeof(i1));
56     memcpy (&i2, p2, sizeof(i2));
57     if (i1.sysno != i2.sysno)
58     {
59         if (i1.sysno > i2.sysno)
60             return 2;
61         else
62             return -2;
63     }
64 #if IT_KEY_HAVE_SEQNO
65     if (i1.seqno != i2.seqno)
66     {
67         if (i1.seqno > i2.seqno)
68             return 1;
69         else
70             return -1;
71     }
72 #else
73     if (i1.freq != i2.freq)
74     {
75         if (i1.freq > i2.freq)
76             return 1;
77         else
78             return -1;
79     }
80 #endif
81     return 0;
82 }
83
84 int index_char_cvt (int c)
85 {
86     return tolower (c);
87 }