From 989695af67fcedfd46d23a61ab327dfe359a5e68 Mon Sep 17 00:00:00 2001 From: leitner Date: Fri, 12 Mar 2004 23:21:24 +0000 Subject: [PATCH] fix several bugs --- Makefile | 3 +++ idx2ldif.c | 13 +++++++++++++ ldif_parse.c | 6 +++--- matchcasestring.c | 11 +++++++---- matchstring.c | 7 ++++--- mstorage_add_bin.c | 5 ++++- tinyldap.c | 20 ++++++++++++++++++++ 7 files changed, 54 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index a5f1b38..b9fd31a 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,9 @@ ifneq ($(DEBUG),) DIET=/opt/diet/bin/diet CFLAGS=-pipe -I. -Wall -W -g endif +ifneq ($(DIET),) +LIBS+=-llatin1 +endif %.o: %.c $(DIET) $(CC) $(CFLAGS) -c $< diff --git a/idx2ldif.c b/idx2ldif.c index 084869c..b1c63b2 100644 --- a/idx2ldif.c +++ b/idx2ldif.c @@ -60,11 +60,23 @@ int main(int argc,char* argv[]) { x+=8; buffer_puts(buffer_1,"dn:"); uint32_unpack(x,&k); + + buffer_flush(buffer_1); + dumpbstr(map+k); + + buffer_flush(buffer_1); + buffer_puts(buffer_1,"\nobjectClass:"); + + buffer_flush(buffer_1); + x+=4; uint32_unpack(x,&k); dumpbstr(map+k); + + buffer_flush(buffer_1); + // buffer_puts(buffer_1,map+k); buffer_puts(buffer_1,"\n"); x+=4; @@ -79,6 +91,7 @@ int main(int argc,char* argv[]) { x+=8; } buffer_puts(buffer_1,"\n"); + buffer_flush(buffer_1); } } buffer_flush(buffer_1); diff --git a/ldif_parse.c b/ldif_parse.c index fd51f3a..9c49ffa 100644 --- a/ldif_parse.c +++ b/ldif_parse.c @@ -37,7 +37,7 @@ static void addattribute(struct ldaprec** l,long name,long val) { ++(*l)->n; } else { buffer_puts(buffer_2,"LDIF parse error: too many attributes!:\n "); - buffer_puts(buffer_2,attributes.strings.root+name); + buffer_puts(buffer_2,attributes.Strings->root+name); buffer_puts(buffer_2,"\nat dn\n "); buffer_puts(buffer_2,(*l)->dn+stringtable.root); buffer_putnlflush(buffer_2); @@ -153,7 +153,7 @@ lookagain: #if 0 buffer_puts(buffer_2,"feld \""); - buffer_puts(buffer_2,attributes.strings.root+tmp); + buffer_puts(buffer_2,attributes.Strings->root+tmp); buffer_puts(buffer_2,"\", wert \""); buffer_put(buffer_2,payload.s,len); buffer_putsflush(buffer_2,"\".\n"); @@ -208,7 +208,7 @@ lookagain: #if 0 buffer_puts(buffer_2,"feld \""); - buffer_puts(buffer_2,attributes.strings.root+tmp); + buffer_puts(buffer_2,attributes.Strings->root+tmp); buffer_puts(buffer_2,"\", wert \""); buffer_put(buffer_2,payload.s,len); buffer_putsflush(buffer_2,"\".\n"); diff --git a/matchcasestring.c b/matchcasestring.c index 242cefc..41e8a0f 100644 --- a/matchcasestring.c +++ b/matchcasestring.c @@ -1,4 +1,5 @@ #include +#include "bstr.h" #include "case.h" #include "ldif.h" @@ -6,14 +7,16 @@ int matchcasestring(struct string* s,const char* c) { unsigned int l,l1,i; if (!c) return -1; - l1=l=strlen(c); + l1=l=bstrlen(c); if (s->ll; + c=bstrfirst(c); i=case_diffb(s->s,l1,c); if (i) return i; - /* one is a prefix of the other */ + /* same length? */ if (l==s->l) return 0; - if (c[l1]) /* is c the longer string? */ + /* one is a prefix of the other */ + if (l1s[l1]); + return (int)(s->s[l1]); } diff --git a/matchstring.c b/matchstring.c index 4202e2e..255e4db 100644 --- a/matchstring.c +++ b/matchstring.c @@ -11,10 +11,11 @@ int matchstring(struct string* s,const char* c) { c=bstrfirst(c); i=byte_diff(s->s,l1,c); if (i) return i; - /* one is a prefix of the other */ + /* same length? */ if (l==s->l) return 0; - if (c[l1]) /* is c the longer string? */ + /* one is a prefix of the other */ + if (l1s[l1]); + return (int)(s->s[l1]); } diff --git a/mstorage_add_bin.c b/mstorage_add_bin.c index 3f5b2ea..6ef4684 100644 --- a/mstorage_add_bin.c +++ b/mstorage_add_bin.c @@ -11,8 +11,10 @@ long mstorage_add_bin(mstorage_t* p,const char* s,unsigned long n) { static char zero; long x; char intbuf[4]; + if (n==0) goto encodebinary; for (i=0; is,s->l); + buffer_puts(buffer_2," <-> "); + buffer_puts(buffer_2,map+k); + buffer_putsflush(buffer_2,": "); +#endif if ((l=match(s,map+k))==0) { /* match! */ long rec; uint32 m; +#ifdef DEBUG + buffer_putsflush(buffer_2,"MATCH!\n"); +#endif if ((rec=findrec(k))>=0) setbit(bitfield,rec); /* there may be multiple matches. @@ -314,11 +328,17 @@ static void tagmatches(uint32* index,unsigned int elements,struct string* s, } if (l<0) { +#ifdef DEBUG + buffer_putsflush(buffer_2,"smaller!\n"); +#endif if (mid) top=mid-1; else break; /* since our offsets are unsigned, we need to avoid the -1 case */ } else +#ifdef DEBUG + buffer_putsflush(buffer_2,"larger!\n"), +#endif bottom=mid+1; } }