Hi all, I have tried to compile qmail-ldap with control patch on slamd64 ( slackware 64bit ) and got following error
./compile -DALTQUEUE -DBIGBROTHER -DBIGTODO -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS -DIGNOREVERISIGN -DSMTPEXECCHECK -DCOURIER -DDEBUG -DUSE_CONTROLDB -DUSE_RFC2307 -DUSE_RFC822 -L/opt/openldap/lib -lldap -llber -I/opt/openldap/include control.c control.c: In function `control_ldap_search': control.c:408: warning: assignment makes pointer from integer without a cast control.c:463: warning: assignment makes pointer from integer without a cast control.c: At top level: control.c:672: error: conflicting types for 'flatten_attrib_array' control.c:390: error: previous implicit declaration of 'flatten_attrib_array' was here make: *** [control.o] Error 1 I have patched a clean qmail1-03 with following patches qmail-ldap-1.03-20060201-controls20060403b qmail-ldap-1.03-20060201.patch My Makefile looks like this SNAPSHOOT +++++++++++++++++++++++++++ LDAPFLAGS=-DALTQUEUE -DBIGBROTHER -DBIGTODO -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS -DIGNOREVERISIGN -DSMTPEXECCHECK -DCOURIER SYSLOGAUTH=-DSYSLOGAUTH RFCFLAGS=-DUSE_RFC2307 -DUSE_RFC822 CONTROLDB=-DUSE_CONTROLDB LDAPLIBS=-L/opt/openldap/lib -lldap -llber LDAPINCLUDES=-I/opt/openldap/include ZINCLUDES=-I/usr/include TLS=-DTLS_REMOTE -DTLS_SMTPD TLSINCLUDES=-I/usr/include/openssl TLSLIBS=-L/usr/lib64 -lssl -lcrypto OPENSSLBIN=/usr/bin/openssl OPENSSLBIN=openssl MNW=-DMAKE_NETSCAPE_WORK MDIRMAKE=-DAUTOMAILDIRMAKE HDIRMAKE=-DAUTOHOMEDIRMAKE DEBUG=-DDEBUG BACKUPPATH=/backup/qmail-backup/qmail-ldap.`date "+%Y%m%d-%H%M"`.tar # STOP editing HERE !!! # Don't edit Makefile! Use conf-* for configuration. SHELL=/bin/sh ifdef LDAPFLAGS QLDAPLIB=qldap.a else ifdef SECUREBIND QLDAPLIB=qldap.a else ifdef CONTROLDB QLDAPLIB=qldap.a endif endif endif ifdef SECUREBIND SECUREBINDLIBS=getopt.a substdio.a SECUREBINDLIB1=case_diffb.o constmap.o endif ifdef CONTROLDB NEWLDAPPROGLIBS=control.o stralloc.a fs.a ifdef DEBUG CONTROLLIBS=read-ctrl.o case.a env.a else CONTROLLIBS=read-ctrl.o case.a endif endif # This sums it up nice and correctly, I think! LDAPFLAGS := $(LDAPFLAGS) $(DEBUG) $(CONTROLDB) $(RFCFLAGS) $(SECUREBIND) $(LDAPLIBS) $(LDAPINCLUDES) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++ When i check control.c i think that "flatten_attrib_array" is twice defined Control.c line 68 char *flatten_attrib_arry(const char *attrs[]); Control.c line 652 #ifdef USE_CONTROLDB /* This function will return TRUE if file is OK to fetch from LDAP */ int verify_ldap_file_check(const char *fn) { if(!strstr(fn, ".cdb") && (strstr(fn, "me") == fn) && (strstr(fn, "ldapserver") == fn) && (strstr(fn, "ldapcontroldn") == fn) && (strstr(fn, "ldaplogin") == fn) && (strstr(fn, "ldappassword") == fn) #if defined(SECUREBIND_SASL) || defined(SECUREBIND_SSL) || defined(SECUREBIND_TLS) || defined(SECUREBIND_ALL) && (strstr(fn, "ldapsecurebind") == fn) #endif /* Do we have what we need for an LDAP search!? */ && ldap_controldn.len && (me.len || ldap_me.len) && q->ld) return 1; return 0; } char *flatten_attrib_array(const char *attrs[]) { int i; stralloc string = {0}; for(i=0; attrs[i]; i++) { logit(256, " attrs[%d]: '%s'\n", i, attrs[i]); if(! stralloc_copys(&string, attrs[i]) ) _exit(QLX_NOMEM); if(attrs[i+1]) if(! stralloc_cats(&string, ", ") ) _exit(QLX_NOMEM); } if(! stralloc_0(&string)) _exit(QLX_NOMEM); logit(256, " string: '%s'\n", string.s); return(string.s); } #endif Sorry for the long post , hope anyone could give me a hint Best regards Stefan