X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=index%2Fkcompare.c;h=f38f9486052e9755e4730ed291cecb50b43fe8be;hb=98af666ffbc85555b29f9885974c53ceab97fa15;hp=b39535d0d2708ad34f43aadf1d0d8dac0ea415c9;hpb=aebdede4bcc1dfe05728dac36b51a1cda85cc70e;p=idzebra-moved-to-github.git diff --git a/index/kcompare.c b/index/kcompare.c index b39535d..f38f948 100644 --- a/index/kcompare.c +++ b/index/kcompare.c @@ -1,10 +1,41 @@ /* - * Copyright (C) 1994-1995, Index Data I/S + * Copyright (C) 1994-1996, Index Data I/S * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: kcompare.c,v $ - * Revision 1.7 1995-09-27 12:22:28 adam + * Revision 1.17 1996-06-04 10:18:58 adam + * Minor changes - removed include of ctype.h. + * + * Revision 1.16 1996/05/13 14:23:05 adam + * Work on compaction of set/use bytes in dictionary. + * + * Revision 1.15 1995/11/20 16:59:46 adam + * New update method: the 'old' keys are saved for each records. + * + * Revision 1.14 1995/10/30 15:08:08 adam + * Bug fixes. + * + * Revision 1.13 1995/10/27 14:00:11 adam + * Implemented detection of database availability. + * + * Revision 1.12 1995/10/17 18:02:08 adam + * New feature: databases. Implemented as prefix to words in dictionary. + * + * Revision 1.11 1995/10/06 16:33:37 adam + * Use attribute mappings. + * + * Revision 1.10 1995/09/29 14:01:41 adam + * Bug fixes. + * + * Revision 1.9 1995/09/28 12:10:32 adam + * Bug fixes. Field prefix used in queries. + * + * Revision 1.8 1995/09/28 09:19:42 adam + * xfree/xmalloc used everywhere. + * Extract/retrieve method seems to work for text records. + * + * Revision 1.7 1995/09/27 12:22:28 adam * More work on extract in record control. * Field name is not in isam keys but in prefix in dictionary words. * @@ -36,7 +67,6 @@ #include #include #include -#include #include #include "index.h" @@ -81,7 +111,18 @@ int key_compare (const void *p1, const void *p2) return 0; } -int index_char_cvt (int c) +int key_qsort_compare (const void *p1, const void *p2) { - return tolower (c); + int r; + size_t l; + char *cp1 = *(char **) p1; + char *cp2 = *(char **) p2; + + if ((r = strcmp (cp1, cp2))) + return r; + l = strlen(cp1)+1; + if ((r = key_compare (cp1+l+1, cp2+l+1))) + return r; + return cp1[l] - cp2[l]; } +