remove obsolete mail, cn and sn speed-up

This commit is contained in:
leitner
2002-05-13 15:17:18 +00:00
parent 7e80e0b036
commit 6c7c32c1d1
4 changed files with 4 additions and 53 deletions

View File

@@ -10,9 +10,6 @@
static const char* findattr(struct ldaprec* f,struct string* name) {
int i;
if (!matchstring(name,"dn")) return f->dn;
if (!matchstring(name,"mail")) return f->mail;
if (!matchstring(name,"sn")) return f->sn;
if (!matchstring(name,"cn")) return f->cn;
for (i=0; i<ATTRIBS; ++i)
if (!matchstring(name,f->a[i].name))
return f->a[i].value;

2
ldif.h
View File

@@ -9,7 +9,7 @@ struct attribute {
};
struct ldaprec {
long dn, mail, sn, cn; /* most often encountered records */
long dn;
int n; /* number of attributes */
struct attribute a[ATTRIBS];
struct ldaprec* next;

View File

@@ -12,15 +12,12 @@
mduptab_t attributes,classes;
mstorage_t stringtable;
long dn, mail, sn, cn, objectClass;
long dn, objectClass;
unsigned long ldifrecords;
static void addattribute(struct ldaprec** l,long name,long val) {
if (name==dn) (*l)->dn=val; else
if (name==mail) (*l)->mail=val; else
if (name==sn) (*l)->sn=val; else
if (name==cn) (*l)->cn=val; else {
if ((*l)->n<ATTRIBS) {
(*l)->a[(*l)->n].name=name;
(*l)->a[(*l)->n].value=val;
@@ -29,7 +26,6 @@ static void addattribute(struct ldaprec** l,long name,long val) {
buffer_putsflush(buffer_2,"LDIF parse error: too many attributes!\n");
exit(1);
}
}
}
/* "ou=fnord; O=fefe; c=de" -> "ou=fnord,o=fefe,c=de" */
@@ -60,7 +56,7 @@ static int parserec(buffer* b, struct ldaprec** l) {
char buf[8192];
int n,i,eof=0,ofs=0;
if (!(*l=malloc(sizeof(struct ldaprec)))) return 2;
(*l)->dn=(*l)->mail=(*l)->sn=(*l)->cn=-1;
(*l)->dn=-1;
(*l)->next=0; (*l)->n=0;
ldifrecords=0;
do {
@@ -102,7 +98,7 @@ lookagain:
addattribute(l,tmp,val);
(*l)->next=m;
m->n=0; m->dn=m->mail=m->sn=m->cn=-1; m->next=0;
m->n=0; m->dn=-1; m->next=0;
ofs=0;
// dumprec(*l);
l=&((*l)->next);
@@ -141,9 +137,6 @@ int ldif_parse(const char* filename) {
buffer in=BUFFER_INIT(read,fd,buf,sizeof buf);
if (fd<0) return 1;
dn=mduptab_add(&attributes,"dn");
mail=mduptab_add(&attributes,"mail");
sn=mduptab_add(&attributes,"sn");
cn=mduptab_add(&attributes,"cn");
objectClass=mduptab_add(&attributes,"objectClass");
{
int res=parserec(&in,&first);

39
parse.c
View File

@@ -27,21 +27,6 @@ void dumprec(struct ldaprec* l) {
buffer_puts(buffer_1,"\n");
} else
buffer_puts(buffer_1,"no dn?!\n");
if (l->mail>=0) {
buffer_puts(buffer_1,"mail: ");
buffer_puts(buffer_1,stringtable.root+l->mail);
buffer_puts(buffer_1,"\n");
}
if (l->sn>=0) {
buffer_puts(buffer_1,"sn: ");
buffer_puts(buffer_1,stringtable.root+l->sn);
buffer_puts(buffer_1,"\n");
}
if (l->cn>=0) {
buffer_puts(buffer_1,"cn: ");
buffer_puts(buffer_1,stringtable.root+l->cn);
buffer_puts(buffer_1,"\n");
}
for (i=0; i<l->n; ++i) {
buffer_puts(buffer_1,attributes.strings.root+l->a[i].name);
buffer_puts(buffer_1,": ");
@@ -89,9 +74,6 @@ int main() {
dumprec(x);
return 1;
}
if (x->mail>=0) len+=8;
if (x->sn>=0) len+=8;
if (x->cn>=0) len+=8;
for (i=0; i<x->n; ++i) {
len+=8;
if (x->a[i].name==objectClass) oc=1;
@@ -158,12 +140,7 @@ int main() {
uint32_t* record_offsets=alloca(4*record_count);
uint32_t cur=0;
while (x) {
// char* old=dest;
int i=x->n+1;
if (x->mail>=0) ++i;
if (x->sn>=0) ++i;
if (x->cn>=0) ++i;
// fdprintf(2,"writing record \"%s\": ",map+x->dn+offset_stringtable);
record_offsets[cur]=dest-map; ++cur;
uint32_pack(dest,i); uint32_pack(dest+4,0); dest+=8;
uint32_pack(dest,x->dn+offset_stringtable);
@@ -175,21 +152,6 @@ int main() {
}
}
dest+=8;
if (x->mail>=0) {
uint32_pack(dest,mail+offset_attributes);
uint32_pack(dest+4,x->mail+offset_stringtable);
dest+=8;
}
if (x->sn>=0) {
uint32_pack(dest,sn+offset_attributes);
uint32_pack(dest+4,x->sn+offset_stringtable);
dest+=8;
}
if (x->cn>=0) {
uint32_pack(dest,cn+offset_attributes);
uint32_pack(dest+4,x->cn+offset_stringtable);
dest+=8;
}
for (i=0; i<x->n; ++i) {
if (x->a[i].name>=0) {
uint32_pack(dest,x->a[i].name+offset_attributes);
@@ -200,7 +162,6 @@ int main() {
dest+=8;
}
}
// fdprintf(2,"length %d\n",dest-old);
x=x->next;
}
// fdprintf(2,"actual offset of record_index: %lu\n",dest-map);