X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=df17b2d601ba7c6c27ddc656a50eced6da25f8ef;hb=80eac939036e614a3c09c84b85569b9318da5288;hp=611ce7f3d7f6545792a995498a21deffb90f1be9;hpb=9167923869bcb07faf7e357c883f070be098c66e;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index 611ce7f..df17b2d 100644 --- a/index/extract.c +++ b/index/extract.c @@ -4,7 +4,14 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: extract.c,v $ - * Revision 1.68 1997-02-12 20:39:45 adam + * Revision 1.70 1997-07-01 13:00:42 adam + * Bug fix in routine searchRecordKey: uninitialized variables. + * + * Revision 1.69 1997/04/29 09:26:03 adam + * Bug fix: generic recordId handling didn't work for compressed internal + * keys. + * + * Revision 1.68 1997/02/12 20:39:45 adam * Implemented options -f that limits the log to the first * records. * Changed some log messages also. @@ -652,34 +659,42 @@ static const char **searchRecordKey (struct recKeys *reckeys, int off = 0; int startSeq = -1; int i; + short attrUse; + char attrSet; + int seqno = 0; for (i = 0; i<32; i++) ws[i] = NULL; while (off < reckeys->buf_used) { - const char *src = reckeys->buf + off; - char attrSet; - short attrUse; - int seqno; - const char *wstart; - - memcpy (&attrSet, src, sizeof(attrSet)); - src += sizeof(attrSet); - memcpy (&attrUse, src, sizeof(attrUse)); - src += sizeof(attrUse); + const char *src = reckeys->buf + off; + const char *wstart; + int lead; + + lead = *src++; + if (!(lead & 1)) + { + memcpy (&attrSet, src, sizeof(attrSet)); + src += sizeof(attrSet); + } + if (!(lead & 2)) + { + memcpy (&attrUse, src, sizeof(attrUse)); + src += sizeof(attrUse); + } wstart = src; while (*src++) ; - - memcpy (&seqno, src, sizeof(seqno)); - src += sizeof(seqno); - -#if 0 - logf (LOG_LOG, "(%d,%d) %d %s", attrSet, attrUse, seqno, wstart); -#endif + if (lead & 60) + seqno += ((lead>>2) & 15)-1; + else + { + memcpy (&seqno, src, sizeof(seqno)); + src += sizeof(seqno); + } if (attrUseS == attrUse && attrSetS == attrSet) { int woff;