diff --git a/exim-4.43-pamconfig.patch b/exim-4.43-pamconfig.patch index 08d4c78..3c76bd8 100644 --- a/exim-4.43-pamconfig.patch +++ b/exim-4.43-pamconfig.patch @@ -1,6 +1,7 @@ ---- exim-4.43/src/configure.default.pam 2004-12-16 13:27:55.000000000 +0000 -+++ exim-4.43/src/configure.default 2004-12-16 15:41:34.000000000 +0000 -@@ -160,7 +160,7 @@ acl_smtp_data = acl_check_data +diff -uNr exim-4.69-new/src/configure.default exim-4.69/src/configure.default +--- exim-4.69-new/src/configure.default 2008-08-13 15:15:01.000000000 +0100 ++++ exim-4.69/src/configure.default 2008-08-13 15:16:44.000000000 +0100 +@@ -140,7 +140,7 @@ # Allow any client to use TLS. @@ -9,7 +10,7 @@ # Specify the location of the Exim server's TLS certificate and private key. # The private key must not be encrypted (password protected). You can put -@@ -168,8 +168,8 @@ acl_smtp_data = acl_check_data +@@ -148,8 +148,8 @@ # need the first setting, or in separate files, in which case you need both # options. @@ -20,7 +21,7 @@ # In order to support roaming users who wish to send email from anywhere, # you may want to make Exim listen on other ports as well as port 25, in -@@ -180,8 +180,8 @@ acl_smtp_data = acl_check_data +@@ -160,8 +160,8 @@ # them you should also allow TLS-on-connect on the traditional but # non-standard port 465. @@ -31,9 +32,9 @@ # Specify the domain you want to be added to all unqualified addresses -@@ -238,6 +238,24 @@ +@@ -219,6 +219,24 @@ - timeout_frozen_after = 7d + host_lookup = * +# This setting, if uncommented, allows users to authenticate using +# their system passwords against saslauthd if they connect over a @@ -54,9 +55,9 @@ +# +auth_advertise_hosts = - - ###################################################################### -@@ -850,7 +837,7 @@ begin authenticators + # The settings below, which are actually the same as the defaults in the + # code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP +@@ -756,7 +774,7 @@ # driver = plaintext # server_set_id = $auth2 # server_prompts = : @@ -65,7 +66,7 @@ # server_advertise_condition = ${if def:tls_cipher } # LOGIN authentication has traditional prompts and responses. There is no -@@ -862,7 +849,7 @@ begin authenticators +@@ -768,7 +786,7 @@ # driver = plaintext # server_set_id = $auth1 # server_prompts = <| Username: | Password: diff --git a/exim-4.50-config.patch b/exim-4.50-config.patch index 558f6f4..ef39e17 100644 --- a/exim-4.50-config.patch +++ b/exim-4.50-config.patch @@ -1,5 +1,18 @@ ---- exim-4.50/src/EDITME 2005-02-22 19:12:14.000000000 +0000 -+++ exim-4.50/src/EDITME 2005-02-22 19:15:10.000000000 +0000 +diff -uNr exim-4.69.orig/scripts/Configure-Makefile exim-4.69/scripts/Configure-Makefile +--- exim-4.69.orig/scripts/Configure-Makefile 2005-09-19 15:42:31.000000000 +0100 ++++ exim-4.69/scripts/Configure-Makefile 2008-08-13 14:44:59.000000000 +0100 +@@ -131,7 +131,7 @@ + + mv $mft $mftt + echo "PERL_CC=`$PERL_COMMAND -MConfig -e 'print $Config{cc}'`" >>$mft +- echo "PERL_CCOPTS=`$PERL_COMMAND -MExtUtils::Embed -e ccopts`" >>$mft ++ echo "PERL_CCOPTS=`$PERL_COMMAND -MExtUtils::Embed -e ccopts` \$(CFLAGS)" >>$mft + echo "PERL_LIBS=`$PERL_COMMAND -MExtUtils::Embed -e ldopts`" >>$mft + echo "" >>$mft + cat $mftt >> $mft +diff -uNr exim-4.69.orig/src/EDITME exim-4.69/src/EDITME +--- exim-4.69.orig/src/EDITME 2007-01-22 16:29:54.000000000 +0000 ++++ exim-4.69/src/EDITME 2008-08-13 14:44:59.000000000 +0100 @@ -100,7 +100,7 @@ # /usr/local/sbin. The installation script will try to create this directory, # and any superior directories, if they do not exist. @@ -36,7 +49,7 @@ # Many sites define a user called "exim", with an appropriate default group, # and use -@@ -229,7 +229,7 @@ +@@ -235,7 +235,7 @@ # This one is special-purpose, and commonly not required, so it is not # included by default. @@ -45,7 +58,7 @@ #------------------------------------------------------------------------------ -@@ -238,9 +238,9 @@ +@@ -244,9 +244,9 @@ # MBX, is included only when requested. If you do not know what this is about, # leave these settings commented out. @@ -58,7 +71,7 @@ #------------------------------------------------------------------------------ -@@ -255,17 +255,20 @@ +@@ -261,25 +261,28 @@ LOOKUP_DBM=yes LOOKUP_LSEARCH=yes @@ -70,26 +83,26 @@ +LOOKUP_DSEARCH=yes # LOOKUP_IBASE=yes -# LOOKUP_LDAP=yes +-# LOOKUP_MYSQL=yes +-# LOOKUP_NIS=yes +-# LOOKUP_NISPLUS=yes +LOOKUP_LDAP=yes +LDAP_LIB_TYPE=OPENLDAP2 +LOOKUP_INCLUDE=-I/usr/include/mysql +LOOKUP_LIBS=-lldap -llber -lsqlite3 -L/usr/$(_lib)/mysql -lmysqlclient -lpq --# LOOKUP_MYSQL=yes +LOOKUP_MYSQL=yes --# LOOKUP_NIS=yes --# LOOKUP_NISPLUS=yes +LOOKUP_NIS=yes +LOOKUP_NISPLUS=yes # LOOKUP_ORACLE=yes -# LOOKUP_PASSWD=yes -+LOOKUP_PASSWD=yes -# LOOKUP_PGSQL=yes -+LOOKUP_PGSQL=yes -# LOOKUP_SQLITE=yes ++LOOKUP_PASSWD=yes ++LOOKUP_PGSQL=yes +LOOKUP_SQLITE=yes # LOOKUP_WHOSON=yes -@@ -272,7 +274,7 @@ + # These two settings are obsolete; all three lookups are compiled when # LOOKUP_LSEARCH is enabled. However, we retain these for backward # compatibility. Setting one forces LOOKUP_LSEARCH if it is not set. @@ -98,7 +111,7 @@ # LOOKUP_NWILDLSEARCH=yes -@@ -321,14 +323,14 @@ +@@ -330,14 +333,14 @@ # and the MIME ACL. Please read the documentation to learn more about these # features. @@ -115,7 +128,7 @@ #------------------------------------------------------------------------------ # Compiling Exim with experimental features. These are documented in -@@ -464,11 +466,11 @@ +@@ -473,11 +476,11 @@ # included in the Exim binary. You will then need to set up the run time # configuration to make use of the mechanism(s) selected. @@ -132,7 +145,7 @@ #------------------------------------------------------------------------------ -@@ -484,7 +486,7 @@ +@@ -494,7 +497,7 @@ # one that is set in the headers_charset option. The default setting is # defined by this setting: @@ -141,7 +154,7 @@ # If you are going to make use of $header_xxx expansions in your configuration # file, or if your users are going to use them in filter files, and the normal -@@ -504,7 +506,7 @@ +@@ -514,7 +517,7 @@ # the Sieve filter support. For those OS where iconv() is known to be installed # as standard, the file in OS/Makefile-xxxx contains # @@ -150,7 +163,7 @@ # # If you are not using one of those systems, but have installed iconv(), you # need to uncomment that line above. In some cases, you may find that iconv() -@@ -553,10 +555,11 @@ +@@ -576,10 +579,11 @@ # leave these settings commented out. # This setting is required for any TLS support (either OpenSSL or GnuTLS) @@ -164,7 +177,7 @@ # Uncomment these settings if you are using GnuTLS # USE_GNUTLS=yes -@@ -607,7 +610,7 @@ +@@ -630,7 +634,7 @@ # Once you have done this, "make install" will build the info files and # install them in the directory you have defined. @@ -173,7 +186,7 @@ #------------------------------------------------------------------------------ -@@ -620,7 +623,7 @@ +@@ -643,7 +647,7 @@ # %s. This will be replaced by one of the strings "main", "panic", or "reject" # to form the final file names. Some installations may want something like this: @@ -182,7 +195,7 @@ # which results in files with names /var/log/exim_mainlog, etc. The directory # in which the log files are placed must exist; Exim does not try to create -@@ -669,7 +672,7 @@ +@@ -692,7 +696,7 @@ # files. Both the name of the command and the suffix that it adds to files # need to be defined here. See also the EXICYCLOG_MAX configuration. @@ -191,7 +204,7 @@ COMPRESS_SUFFIX=gz -@@ -677,7 +680,7 @@ +@@ -700,7 +704,7 @@ # If the exigrep utility is fed compressed log files, it tries to uncompress # them using this command. @@ -200,7 +213,7 @@ #------------------------------------------------------------------------------ -@@ -686,7 +689,7 @@ +@@ -709,7 +713,7 @@ # (version 5.004 or later) installed, set EXIM_PERL to perl.o. Using embedded # Perl costs quite a lot of resources. Only do this if you really need it. @@ -209,7 +222,7 @@ #------------------------------------------------------------------------------ -@@ -691,7 +696,7 @@ EXIM_PERL=perl.o +@@ -719,7 +723,7 @@ # that the local_scan API is made available by the linker. You may also need # to add -ldl to EXTRALIBS so that dlopen() is available to Exim. @@ -218,7 +231,7 @@ #------------------------------------------------------------------------------ -@@ -696,7 +699,7 @@ +@@ -729,7 +733,7 @@ # support, which is intended for use in conjunction with the SMTP AUTH # facilities, is included only when requested by the following setting: @@ -227,7 +240,7 @@ # You probably need to add -lpam to EXTRALIBS, and in some releases of # GNU/Linux -ldl is also needed. -@@ -757,7 +760,7 @@ +@@ -797,7 +801,7 @@ # group. Once you have installed saslauthd, you should arrange for it to be # started by root at boot time. @@ -236,7 +249,7 @@ #------------------------------------------------------------------------------ -@@ -770,9 +773,9 @@ +@@ -810,9 +814,9 @@ # You may well also have to specify a local "include" file and an additional # library for TCP wrappers, so you probably need something like this: # @@ -244,12 +257,12 @@ -# CFLAGS=-O -I/usr/local/include -# EXTRALIBS_EXIM=-L/usr/local/lib -lwrap +USE_TCP_WRAPPERS=yes -+CFLAGS += $(RPM_OPT_FLAGS) $(PIE) ++CFLAGS+=$(RPM_OPT_FLAGS) $(PIE) +EXTRALIBS_EXIM=-lwrap -lpam -ldl # # but of course there may need to be other things in CFLAGS and EXTRALIBS_EXIM # as well. -@@ -817,13 +820,13 @@ +@@ -857,13 +861,13 @@ # is "yes", as well as supporting line editing, a history of input lines in the # current run is maintained. @@ -265,7 +278,7 @@ ############################################################################### # THINGS YOU ALMOST NEVER NEED TO MENTION # -@@ -844,11 +847,12 @@ +@@ -884,11 +888,12 @@ # haven't got Perl, Exim will still build and run; you just won't be able to # use those utilities. @@ -283,7 +296,7 @@ #------------------------------------------------------------------------------ -@@ -1042,7 +1046,7 @@ +@@ -1082,7 +1087,7 @@ # (process id) to a file so that it can easily be identified. The path of the # file can be specified here. Some installations may want something like this: @@ -292,14 +305,3 @@ # If PID_FILE_PATH is not defined, Exim writes a file in its spool directory # using the name "exim-daemon.pid". ---- exim-4.50/scripts/Configure-Makefile.conf 2005-02-17 14:49:11.000000000 +0000 -+++ exim-4.50/scripts/Configure-Makefile 2005-02-22 19:12:21.000000000 +0000 -@@ -131,7 +131,7 @@ - - mv $mft $mftt - echo "PERL_CC=`$PERL_COMMAND -MConfig -e 'print $Config{cc}'`" >>$mft -- echo "PERL_CCOPTS=`$PERL_COMMAND -MExtUtils::Embed -e ccopts`" >>$mft -+ echo "PERL_CCOPTS=`$PERL_COMMAND -MExtUtils::Embed -e ccopts` \$(CFLAGS)" >>$mft - echo "PERL_LIBS=`$PERL_COMMAND -MExtUtils::Embed -e ldopts`" >>$mft - echo "" >>$mft - cat $mftt >> $mft diff --git a/exim-4.50-spamdconf.patch b/exim-4.50-spamdconf.patch index 36fe304..98cafdd 100644 --- a/exim-4.50-spamdconf.patch +++ b/exim-4.50-spamdconf.patch @@ -1,14 +1,15 @@ ---- exim-4.50/src/configure.default.orig 2005-02-22 19:49:15.000000000 +0000 -+++ exim-4.50/src/configure.default 2005-02-22 19:46:55.000000000 +0000 -@@ -108,6 +108,7 @@ +diff -uNr exim-4.69-old/src/configure.default exim-4.69/src/configure.default +--- exim-4.69-old/src/configure.default 2008-08-13 15:20:18.000000000 +0100 ++++ exim-4.69/src/configure.default 2008-08-13 15:20:36.000000000 +0100 +@@ -107,6 +107,7 @@ acl_smtp_rcpt = acl_check_rcpt acl_smtp_data = acl_check_data +acl_smtp_mime = acl_check_mime - # You should not change that setting until you understand how ACLs work. + # You should not change those settings until you understand how ACLs work. -@@ -120,7 +120,7 @@ acl_smtp_mime = acl_check_mime +@@ -119,7 +120,7 @@ # of what to set for other virus scanners. The second modification is in the # acl_check_data access control list (see below). @@ -17,7 +18,7 @@ # For spam scanning, there is a similar option that defines the interface to -@@ -365,7 +365,8 @@ acl_check_rcpt: +@@ -380,7 +381,8 @@ accept local_parts = postmaster domains = +local_domains @@ -27,7 +28,7 @@ require verify = sender -@@ -455,26 +456,62 @@ acl_check_rcpt: +@@ -470,27 +472,63 @@ acl_check_data: @@ -86,7 +87,7 @@ accept -+ + +acl_check_mime: + + # File extension filtering. @@ -97,6 +98,7 @@ + {1}{0}} + + accept ++ ###################################################################### # ROUTERS CONFIGURATION # diff --git a/exim-4.52-dynamic-pcre.patch b/exim-4.52-dynamic-pcre.patch index c2ca9d3..5de73da 100644 --- a/exim-4.52-dynamic-pcre.patch +++ b/exim-4.52-dynamic-pcre.patch @@ -1,6 +1,19 @@ ---- exim-4.52/OS/Makefile-Base.pcre 2005-07-01 12:09:15.000000000 +0100 -+++ exim-4.52/OS/Makefile-Base 2005-08-25 14:28:19.000000000 +0100 -@@ -96,14 +96,14 @@ config.h: Makefile buildconfig ../src/co +diff -uNr exim-4.69-old/exim_monitor/em_hdr.h exim-4.69/exim_monitor/em_hdr.h +--- exim-4.69-old/exim_monitor/em_hdr.h 2007-01-08 10:50:17.000000000 +0000 ++++ exim-4.69/exim_monitor/em_hdr.h 2008-08-13 15:22:37.000000000 +0100 +@@ -87,7 +87,7 @@ + + /* Regular expression include */ + +-#include "pcre/pcre.h" ++#include + + /* Includes from the main source of Exim. We need to have MAXPACKET defined for + the benefit of structs.h. One of these days I should tidy up this interface so +diff -uNr exim-4.69-old/OS/Makefile-Base exim-4.69/OS/Makefile-Base +--- exim-4.69-old/OS/Makefile-Base 2007-11-12 13:02:19.000000000 +0000 ++++ exim-4.69/OS/Makefile-Base 2008-08-13 15:22:37.000000000 +0100 +@@ -96,14 +96,14 @@ # therefore always be run, even if the files exist. This shouldn't in fact be a # problem, but it does no harm. Other make programs will just ignore this. @@ -17,7 +30,7 @@ exigrep eximstats exipick exiqgrep exiqsumm \ transport-filter.pl convert4r3 convert4r4 \ exim_checkaccess \ -@@ -314,7 +314,7 @@ OBJ_EXIM = acl.o child.o crypt16.o daemo +@@ -314,7 +314,7 @@ local_scan.o $(EXIM_PERL) $(OBJ_WITH_CONTENT_SCAN) \ $(OBJ_WITH_OLD_DEMIME) $(OBJ_EXPERIMENTAL) @@ -26,7 +39,7 @@ routers/routers.a transports/transports.a \ $(OBJ_EXIM) version.c @echo " " -@@ -325,7 +325,7 @@ exim: pcre/libpcre.a lookups/lookups.a +@@ -325,7 +325,7 @@ rm -f exim @echo "$(LNCC) -o exim" $(FE)$(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \ @@ -35,7 +48,7 @@ routers/routers.a transports/transports.a lookups/lookups.a \ auths/auths.a \ $(LIBRESOLV) $(LIBS) $(LIBS_EXIM) $(IPV6_LIBS) $(EXTRALIBS) \ -@@ -429,14 +429,14 @@ MONBIN = em_StripChart.o $(EXIMON_TEXTPO +@@ -429,14 +429,14 @@ OBJ_MONBIN = util-spool_in.o util-store.o util-string.o tod.o tree.o $(MONBIN) @@ -52,9 +65,10 @@ $(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc @if [ x"$(STRIP_COMMAND)" != x"" ]; then \ echo $(STRIP_COMMAND) eximon.bin; \ ---- exim-4.52/src/exim.h.pcre 2005-07-01 12:09:15.000000000 +0100 -+++ exim-4.52/src/exim.h 2005-08-25 14:26:40.000000000 +0100 -@@ -414,7 +414,7 @@ extern int ferror(FILE *); +diff -uNr exim-4.69-old/src/exim.h exim-4.69/src/exim.h +--- exim-4.69-old/src/exim.h 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/exim.h 2008-08-13 15:22:37.000000000 +0100 +@@ -422,7 +422,7 @@ /* The header from the PCRE regex package */ @@ -62,15 +76,4 @@ +#include /* Exim includes are in several files. Note that local_scan.h #includes - mytypes.h and store.h, so we don't need to mention them explicitly. */ ---- exim-4.52/exim_monitor/em_hdr.h.pcre 2005-07-01 12:09:15.000000000 +0100 -+++ exim-4.52/exim_monitor/em_hdr.h 2005-08-25 14:26:40.000000000 +0100 -@@ -87,7 +87,7 @@ anything. */ - - /* Regular expression include */ - --#include "pcre/pcre.h" -+#include - - /* Includes from the main source of Exim. We need to have MAXPACKET defined for - the benefit of structs.h. One of these days I should tidy up this interface so + config.h, mytypes.h, and store.h, so we don't need to mention them explicitly. diff --git a/exim-4.62-dlopen-localscan.patch b/exim-4.62-dlopen-localscan.patch index 03010eb..7a7c9d2 100644 --- a/exim-4.62-dlopen-localscan.patch +++ b/exim-4.62-dlopen-localscan.patch @@ -1,18 +1,19 @@ -The initial version of this patch was originally posted David Woodhouse, and -dman gets the credit for first integrating it with SA-Exim. - -I have since then maintained it by first making a few minor changes, and -later switching it to a major/minor number scheme to support upgrades in -the exim API that don't affect backward compatibility (you can rely on -a feature denoted by the minor number and be compatible with future versions -of exim until Philip has to break the API and increase the major number) - -Marc MERLIN - -diff -urN exim-4.14-0/src/EDITME exim-4.14-1/src/EDITME ---- exim-4.14-0/src/EDITME Tue Mar 11 04:20:18 2003 -+++ exim-4.14-1/src/EDITME Sun Mar 23 15:34:15 2003 -@@ -388,6 +388,20 @@ +diff -uNr exim-4.69-old/src/config.h.defaults exim-4.69/src/config.h.defaults +--- exim-4.69-old/src/config.h.defaults 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/config.h.defaults 2008-08-13 15:25:31.000000000 +0100 +@@ -27,6 +27,8 @@ + + #define AUTH_VARS 3 + ++#define DLOPEN_LOCAL_SCAN ++ + #define BIN_DIRECTORY + + #define CONFIGURE_FILE +diff -uNr exim-4.69-old/src/EDITME exim-4.69/src/EDITME +--- exim-4.69-old/src/EDITME 2008-08-13 15:25:05.000000000 +0100 ++++ exim-4.69/src/EDITME 2008-08-13 15:25:31.000000000 +0100 +@@ -619,6 +619,20 @@ #------------------------------------------------------------------------------ @@ -33,22 +34,10 @@ diff -urN exim-4.14-0/src/EDITME exim-4.14-1/src/EDITME # The default distribution of Exim contains only the plain text form of the # documentation. Other forms are available separately. If you want to install # the documentation in "info" format, first fetch the Texinfo documentation -diff -urNad 50_localscan_dlopen.tmp/src/config.h.defaults 50_localscan_dlopen/src/config.h.defaults ---- 50_localscan_dlopen.tmp/src/config.h.defaults Sun Dec 29 11:55:42 2002 -+++ 50_localscan_dlopen/src/config.h.defaults Sun Dec 29 11:56:44 2002 -@@ -17,6 +17,8 @@ - #define AUTH_PLAINTEXT - #define AUTH_SPA - -+#define DLOPEN_LOCAL_SCAN -+ - #define BIN_DIRECTORY - - #define CONFIGURE_FILE -diff -urN exim-4.14-0/src/globals.c exim-4.14-1/src/globals.c ---- exim-4.14-0/src/globals.c Tue Mar 11 04:20:20 2003 -+++ exim-4.14-1/src/globals.c Sun Mar 23 15:34:15 2003 -@@ -103,6 +103,9 @@ +diff -uNr exim-4.69-old/src/globals.c exim-4.69/src/globals.c +--- exim-4.69-old/src/globals.c 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/globals.c 2008-08-13 15:25:31.000000000 +0100 +@@ -128,6 +128,9 @@ uschar *tls_verify_hosts = NULL; #endif @@ -58,10 +47,10 @@ diff -urN exim-4.14-0/src/globals.c exim-4.14-1/src/globals.c /* Input-reading functions for messages, so we can use special ones for incoming TCP/IP. The defaults use stdin. We never need these for any -diff -urN exim-4.14-0/src/globals.h exim-4.14-1/src/globals.h ---- exim-4.14-0/src/globals.h Tue Mar 11 04:20:20 2003 -+++ exim-4.14-1/src/globals.h Sun Mar 23 15:34:15 2003 -@@ -67,6 +67,9 @@ +diff -uNr exim-4.69-old/src/globals.h exim-4.69/src/globals.h +--- exim-4.69-old/src/globals.h 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/globals.h 2008-08-13 15:25:31.000000000 +0100 +@@ -88,6 +88,9 @@ extern uschar *tls_verify_hosts; /* Mandatory client verification */ #endif @@ -71,11 +60,11 @@ diff -urN exim-4.14-0/src/globals.h exim-4.14-1/src/globals.h /* Input-reading functions for messages, so we can use special ones for incoming TCP/IP. */ -diff -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c ---- exim-4.14-0/src/local_scan.c Tue Mar 11 04:20:20 2003 -+++ exim-4.14-1/src/local_scan.c Sun Mar 23 15:34:15 2003 -@@ -5,60 +5,131 @@ - /* Copyright (c) University of Cambridge 1995 - 2003 */ +diff -uNr exim-4.69-old/src/local_scan.c exim-4.69/src/local_scan.c +--- exim-4.69-old/src/local_scan.c 2007-01-08 10:50:18.000000000 +0000 ++++ exim-4.69/src/local_scan.c 2008-08-13 15:25:31.000000000 +0100 +@@ -7,60 +7,131 @@ + /* Copyright (c) University of Cambridge 1995 - 2007 */ /* See the file NOTICE for conditions of use and distribution. */ +#include "exim.h" @@ -249,14 +238,14 @@ diff -urN exim-4.14-0/src/local_scan.c exim-4.14-1/src/local_scan.c + +return TRUE; } -+ -+#endif /* DLOPEN_LOCAL_SCAN */ ++#endif /* DLOPEN_LOCAL_SCAN */ ++ /* End of local_scan.c */ -diff -urN exim-4.14-0/src/readconf.c exim-4.14-1/src/readconf.c ---- exim-4.14-0/src/readconf.c Tue Mar 11 04:20:22 2003 -+++ exim-4.14-1/src/readconf.c Sun Mar 23 15:34:15 2003 -@@ -182,6 +182,9 @@ +diff -uNr exim-4.69-old/src/readconf.c exim-4.69/src/readconf.c +--- exim-4.69-old/src/readconf.c 2007-08-23 12:01:49.000000000 +0100 ++++ exim-4.69/src/readconf.c 2008-08-13 15:25:31.000000000 +0100 +@@ -257,6 +257,9 @@ { "local_from_prefix", opt_stringptr, &local_from_prefix }, { "local_from_suffix", opt_stringptr, &local_from_suffix }, { "local_interfaces", opt_stringptr, &local_interfaces }, diff --git a/exim-4.69-dynlookup-config.patch b/exim-4.69-dynlookup-config.patch index dc02ee7..0792b89 100644 --- a/exim-4.69-dynlookup-config.patch +++ b/exim-4.69-dynlookup-config.patch @@ -1,7 +1,6 @@ -diff -u exim-4.69/src/EDITME exim-4.69/src/EDITME ---- exim-4.69/src/EDITME 2008-04-19 23:48:03.000000000 +0100 -+++ exim-4.69/src/EDITME 2008-04-19 23:54:46.000000000 +0100 -@@ -282,15 +282,17 @@ +--- exim-4.69/src/EDITME.orig 2008-08-13 15:30:05.000000000 +0100 ++++ exim-4.69/src/EDITME 2008-08-13 15:30:56.000000000 +0100 +@@ -282,14 +282,16 @@ # LOOKUP_IBASE=yes LOOKUP_LDAP=yes LDAP_LIB_TYPE=OPENLDAP2 @@ -22,4 +21,3 @@ diff -u exim-4.69/src/EDITME exim-4.69/src/EDITME LOOKUP_SQLITE=yes # LOOKUP_WHOSON=yes - # These two settings are obsolete; all three lookups are compiled when diff --git a/exim-4.69-dynlookup.patch b/exim-4.69-dynlookup.patch index 002a8c8..e3cd669 100644 --- a/exim-4.69-dynlookup.patch +++ b/exim-4.69-dynlookup.patch @@ -1,8 +1,7 @@ -diff --git a/Makefile b/Makefile -index 08d023b..9878b23 100644 ---- a/Makefile -+++ b/Makefile -@@ -77,11 +77,11 @@ clean:; @echo ""; echo '*** "make clean" just removes all .o and .a files' +diff -uNr exim-4.69-old/Makefile exim-4.69/Makefile +--- exim-4.69-old/Makefile 2005-09-12 14:55:54.000000000 +0100 ++++ exim-4.69/Makefile 2008-08-13 15:30:05.000000000 +0100 +@@ -80,11 +80,11 @@ cd build-$(buildname); \ $(RM_COMMAND) -f *.o lookups/*.o lookups/*.a auths/*.o auths/*.a \ routers/*.o routers/*.a transports/*.o transports/*.a \ @@ -16,11 +15,10 @@ index 08d023b..9878b23 100644 distclean:; $(RM_COMMAND) -rf build-* -diff --git a/OS/Makefile-Base b/OS/Makefile-Base -index a2648e5..14b0867 100644 ---- a/OS/Makefile-Base -+++ b/OS/Makefile-Base -@@ -311,6 +311,7 @@ OBJ_EXIM = acl.o child.o crypt16.o daemon.o dbfn.o debug.o deliver.o \ +diff -uNr exim-4.69-old/OS/Makefile-Base exim-4.69/OS/Makefile-Base +--- exim-4.69-old/OS/Makefile-Base 2008-08-13 15:29:21.000000000 +0100 ++++ exim-4.69/OS/Makefile-Base 2008-08-13 15:30:05.000000000 +0100 +@@ -311,6 +311,7 @@ rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o \ route.o search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o \ store.o string.o tls.o tod.o transport.o tree.o verify.o \ @@ -28,11 +26,10 @@ index a2648e5..14b0867 100644 local_scan.o $(EXIM_PERL) $(OBJ_WITH_CONTENT_SCAN) \ $(OBJ_WITH_OLD_DEMIME) $(OBJ_EXPERIMENTAL) -diff --git a/scripts/Configure-Makefile b/scripts/Configure-Makefile -index 01fd316..9cd6d60 100755 ---- a/scripts/Configure-Makefile -+++ b/scripts/Configure-Makefile -@@ -107,7 +107,7 @@ do if test -r ../$f +diff -uNr exim-4.69-old/scripts/Configure-Makefile exim-4.69/scripts/Configure-Makefile +--- exim-4.69-old/scripts/Configure-Makefile 2008-08-13 15:29:21.000000000 +0100 ++++ exim-4.69/scripts/Configure-Makefile 2008-08-13 15:30:05.000000000 +0100 +@@ -107,7 +107,7 @@ echo "# End of $f" echo "" fi @@ -41,11 +38,10 @@ index 01fd316..9cd6d60 100755 # See if there is a definition of EXIM_PERL in what we have built so far. # If so, run Perl to find the default values for PERL_CC, PERL_CCOPTS, -diff --git a/scripts/MakeLinks b/scripts/MakeLinks -index 257652c..f3daee2 100755 ---- a/scripts/MakeLinks -+++ b/scripts/MakeLinks -@@ -204,6 +204,7 @@ ln -s ../src/mytypes.h mytypes.h +diff -uNr exim-4.69-old/scripts/MakeLinks exim-4.69/scripts/MakeLinks +--- exim-4.69-old/scripts/MakeLinks 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/scripts/MakeLinks 2008-08-13 15:30:05.000000000 +0100 +@@ -204,6 +204,7 @@ ln -s ../src/osfunctions.h osfunctions.h ln -s ../src/store.h store.h ln -s ../src/structs.h structs.h @@ -53,44 +49,10 @@ index 257652c..f3daee2 100755 ln -s ../src/acl.c acl.c ln -s ../src/buildconfig.c buildconfig.c -diff --git a/src/EDITME b/src/EDITME -index 1438a38..cb2f7f7 100644 ---- a/src/EDITME -+++ b/src/EDITME -@@ -248,6 +248,9 @@ TRANSPORT_SMTP=yes - # SUPPORT_MAILSTORE=yes - # SUPPORT_MBX=yes - -+#------------------------------------------------------------------------------ -+# See below for dynamic lookup modules. -+# LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/ - - #------------------------------------------------------------------------------ - # These settings determine which file and database lookup methods are included -@@ -257,6 +260,18 @@ TRANSPORT_SMTP=yes - # LOOKUP_DNSDB does *not* refer to general mail routing using the DNS. It is - # for the specialist case of using the DNS as a general database facility (not - # common). -+# If set to "2" instead of "yes" then the corresponding lookup will be -+# built as a module and must be installed into LOOKUP_MODULE_DIR. You need to -+# add -export-dynamic -rdynamic to EXTRALIBS. You may also need to add -ldl to -+# EXTRALIBS so that dlopen() is available to Exim. You need to define -+# LOOKUP_MODULE_DIR above so the exim binary actually loads dynamic lookup -+# modules. -+# Also, instead of adding all the libraries/includes to LOOKUP_INCLUDE and -+# LOOKUP_LIBS, add them to the respective LOOKUP_*_INCLUDE and LOOKUP_*_LIBS -+# (where * is the name as given here in this list). That ensures that only -+# the dynamic library and not the exim binary will be linked against the -+# library. -+# NOTE: LDAP cannot be built as a module! - - LOOKUP_DBM=yes - LOOKUP_LSEARCH=yes -diff --git a/src/config.h.defaults b/src/config.h.defaults -index ccf2696..bd271bf 100644 ---- a/src/config.h.defaults -+++ b/src/config.h.defaults -@@ -90,6 +90,8 @@ it's a default value. */ +diff -uNr exim-4.69-old/src/config.h.defaults exim-4.69/src/config.h.defaults +--- exim-4.69-old/src/config.h.defaults 2008-08-13 15:29:21.000000000 +0100 ++++ exim-4.69/src/config.h.defaults 2008-08-13 15:30:05.000000000 +0100 +@@ -92,6 +92,8 @@ #define LOOKUP_WILDLSEARCH #define LOOKUP_NWILDLSEARCH @@ -99,10 +61,9 @@ index ccf2696..bd271bf 100644 #define MAX_FILTER_SIZE (1024*1024) #define MAX_LOCALHOST_NUMBER 256 #define MAX_INCLUDE_SIZE (1024*1024) -diff --git a/src/drtables.c b/src/drtables.c -index 426933c..dc4e15f 100644 ---- a/src/drtables.c -+++ b/src/drtables.c +diff -uNr exim-4.69-old/src/drtables.c exim-4.69/src/drtables.c +--- exim-4.69-old/src/drtables.c 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/drtables.c 2008-08-13 15:30:05.000000000 +0100 @@ -10,6 +10,8 @@ #include "exim.h" @@ -112,7 +73,7 @@ index 426933c..dc4e15f 100644 /* This module contains tables that define the lookup methods and drivers that are actually included in the binary. Its contents are controlled by -@@ -31,535 +33,8 @@ even pickier compilers complaining about infinite loops. */ +@@ -31,535 +33,8 @@ static void dummy(int x) { dummy(x-1); } @@ -650,7 +611,7 @@ index 426933c..dc4e15f 100644 /* Table of information about all possible authentication mechamisms. All entries are always present if any mechanism is declared, but the functions are -@@ -887,4 +362,226 @@ transport_info transports_available[] = { +@@ -887,4 +362,226 @@ { US"", NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, FALSE } }; @@ -877,11 +838,42 @@ index 426933c..dc4e15f 100644 +} + /* End of drtables.c */ -diff --git a/src/exim.c b/src/exim.c -index 3509b1d..abf59b9 100644 ---- a/src/exim.c -+++ b/src/exim.c -@@ -928,53 +928,53 @@ fprintf(f, "Support for:"); +diff -uNr exim-4.69-old/src/EDITME exim-4.69/src/EDITME +--- exim-4.69-old/src/EDITME 2008-08-13 15:29:21.000000000 +0100 ++++ exim-4.69/src/EDITME 2008-08-13 15:30:05.000000000 +0100 +@@ -248,6 +248,9 @@ + SUPPORT_MAILSTORE=yes + SUPPORT_MBX=yes + ++#------------------------------------------------------------------------------ ++# See below for dynamic lookup modules. ++# LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/ + + #------------------------------------------------------------------------------ + # These settings determine which file and database lookup methods are included +@@ -257,6 +260,18 @@ + # LOOKUP_DNSDB does *not* refer to general mail routing using the DNS. It is + # for the specialist case of using the DNS as a general database facility (not + # common). ++# If set to "2" instead of "yes" then the corresponding lookup will be ++# built as a module and must be installed into LOOKUP_MODULE_DIR. You need to ++# add -export-dynamic -rdynamic to EXTRALIBS. You may also need to add -ldl to ++# EXTRALIBS so that dlopen() is available to Exim. You need to define ++# LOOKUP_MODULE_DIR above so the exim binary actually loads dynamic lookup ++# modules. ++# Also, instead of adding all the libraries/includes to LOOKUP_INCLUDE and ++# LOOKUP_LIBS, add them to the respective LOOKUP_*_INCLUDE and LOOKUP_*_LIBS ++# (where * is the name as given here in this list). That ensures that only ++# the dynamic library and not the exim binary will be linked against the ++# library. ++# NOTE: LDAP cannot be built as a module! + + LOOKUP_DBM=yes + LOOKUP_LSEARCH=yes +diff -uNr exim-4.69-old/src/exim.c exim-4.69/src/exim.c +--- exim-4.69-old/src/exim.c 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/exim.c 2008-08-13 15:30:05.000000000 +0100 +@@ -925,53 +925,53 @@ #endif fprintf(f, "\n"); @@ -952,7 +944,7 @@ index 3509b1d..abf59b9 100644 fprintf(f, " whoson"); #endif fprintf(f, "\n"); -@@ -3427,6 +3427,9 @@ if (opt_perl_at_start && opt_perl_startup != NULL) +@@ -3424,6 +3424,9 @@ } #endif /* EXIM_PERL */ @@ -962,11 +954,10 @@ index 3509b1d..abf59b9 100644 /* Log the arguments of the call if the configuration file said so. This is a debugging feature for finding out what arguments certain MUAs actually use. Don't attempt it if logging is disabled, or if listing variables or if -diff --git a/src/expand.c b/src/expand.c -index 0844e8e..dc98145 100644 ---- a/src/expand.c -+++ b/src/expand.c -@@ -5378,8 +5378,8 @@ while (*s != 0) +diff -uNr exim-4.69-old/src/expand.c exim-4.69/src/expand.c +--- exim-4.69-old/src/expand.c 2007-10-04 14:23:05.000000000 +0100 ++++ exim-4.69/src/expand.c 2008-08-13 15:30:05.000000000 +0100 +@@ -5373,8 +5373,8 @@ goto EXPAND_FAILED; } @@ -977,11 +968,10 @@ index 0844e8e..dc98145 100644 else if (opt != NULL) sub = NULL; if (sub == NULL) -diff --git a/src/globals.h b/src/globals.h -index 9b25958..7d20140 100644 ---- a/src/globals.h -+++ b/src/globals.h -@@ -438,7 +438,7 @@ extern BOOL log_testing_mode; /* TRUE in various testing modes */ +diff -uNr exim-4.69-old/src/globals.h exim-4.69/src/globals.h +--- exim-4.69-old/src/globals.h 2008-08-13 15:29:21.000000000 +0100 ++++ exim-4.69/src/globals.h 2008-08-13 15:30:05.000000000 +0100 +@@ -432,7 +432,7 @@ extern BOOL log_timezone; /* TRUE to include the timezone in log lines */ extern unsigned int log_write_selector;/* Bit map of logging options for log_write() */ extern uschar *login_sender_address; /* The actual sender address */ @@ -990,11 +980,9 @@ index 9b25958..7d20140 100644 extern int lookup_list_count; /* Number of entries in the list */ extern int lookup_open_max; /* Max lookup files to cache */ extern uschar *lookup_value; /* Value looked up from file */ -diff --git a/src/lookupapi.h b/src/lookupapi.h -new file mode 100644 -index 0000000..4dab4c9 ---- /dev/null -+++ b/src/lookupapi.h +diff -uNr exim-4.69-old/src/lookupapi.h exim-4.69/src/lookupapi.h +--- exim-4.69-old/src/lookupapi.h 1970-01-01 01:00:00.000000000 +0100 ++++ exim-4.69/src/lookupapi.h 2008-08-13 15:30:05.000000000 +0100 @@ -0,0 +1,45 @@ +/* The "type" field in each item is a set of bit flags: + @@ -1041,24 +1029,915 @@ index 0000000..4dab4c9 + lookup_info **lookups; + uint lookupcount; +} lookup_module_info; -diff --git a/src/lookups/Makefile b/src/lookups/Makefile -index 75b78d2..e8c9bbd 100644 ---- a/src/lookups/Makefile -+++ b/src/lookups/Makefile +diff -uNr exim-4.69-old/src/lookups/cdb.c exim-4.69/src/lookups/cdb.c +--- exim-4.69-old/src/lookups/cdb.c 2005-06-27 15:29:44.000000000 +0100 ++++ exim-4.69/src/lookups/cdb.c 2008-08-13 15:30:05.000000000 +0100 +@@ -56,7 +56,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "cdb.h" + + #ifdef HAVE_MMAP + # include +@@ -144,7 +143,9 @@ + return num; + } + +-void * ++static void cdb_close(void *handle); ++ ++static void * + cdb_open(uschar *filename, + uschar **errmsg) + { +@@ -245,7 +246,7 @@ + * Check entry point * + *************************************************/ + +-BOOL ++static BOOL + cdb_check(void *handle, + uschar *filename, + int modemask, +@@ -270,7 +271,7 @@ + * Find entry point * + *************************************************/ + +-int ++static int + cdb_find(void *handle, + uschar *filename, + uschar *keystring, +@@ -418,7 +419,7 @@ + + /* See local README for interface description */ + +-void ++static void + cdb_close(void *handle) + { + struct cdb_state * cdbp = handle; +@@ -434,4 +435,22 @@ + (void)close(cdbp->fileno); + } + ++lookup_info cdb_lookup_info = { ++ US"cdb", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ cdb_open, /* open function */ ++ cdb_check, /* check function */ ++ cdb_find, /* find function */ ++ cdb_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define cdb_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &cdb_lookup_info }; ++lookup_module_info cdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; ++ + /* End of lookups/cdb.c */ +diff -uNr exim-4.69-old/src/lookups/cdb.h exim-4.69/src/lookups/cdb.h +--- exim-4.69-old/src/lookups/cdb.h 2004-10-07 14:10:01.000000000 +0100 ++++ exim-4.69/src/lookups/cdb.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,59 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/cdb.h,v 1.1 2004/10/07 13:10:01 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* +- * $Id: cdb.h,v 1.2.2.1 1998/05/29 16:21:36 cvs Exp $ +- * +- * Exim - CDB database lookup module +- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +- * +- * Copyright (c) 1998 Nigel Metheringham, Planet Online Ltd +- * +- * This program is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License +- * as published by the Free Software Foundation; either version 2 +- * of the License, or (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +- * 02111-1307, USA. +- * +- * +- * This code implements Dan Bernstein's Constant DataBase (cdb) spec. +- * Information, the spec and sample code for cdb can be obtained from +- * http://www.pobox.com/~djb/cdb.html +- * +- * This implementation borrows some code from Dan Bernstein's +- * implementation (which has no license restrictions applied to it). +- * This (read-only) implementation is completely contained within +- * cdb.[ch] it does *not* link against an external cdb library. +- * +- * +- * There are 2 varients included within this code. One uses MMAP and +- * should give better performance especially for multiple lookups on a +- * modern machine. The other is the default implementation which is +- * used in the case where the MMAP fails or if MMAP was not compiled +- * in. this implementation is the same as the original reference cdb +- * implementation. +- * +- */ +- +- +-/* Functions for reading exim cdb files */ +- +-extern void *cdb_open(uschar *, uschar **); +-extern BOOL cdb_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); +-extern int cdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +-extern void cdb_close(void *); +- +-/* End of cdb.h */ +diff -uNr exim-4.69-old/src/lookups/dbmdb.c exim-4.69/src/lookups/dbmdb.c +--- exim-4.69-old/src/lookups/dbmdb.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/dbmdb.c 2008-08-13 15:30:05.000000000 +0100 +@@ -9,7 +9,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "dbmdb.h" + + + /************************************************* +@@ -18,7 +17,7 @@ + + /* See local README for interface description */ + +-void * ++static void * + dbmdb_open(uschar *filename, uschar **errmsg) + { + EXIM_DB *yield; +@@ -45,7 +44,7 @@ + the same. Otherwise, for safety, we have to check for x.db or x.dir and x.pag. + */ + +-BOOL ++static BOOL + dbmdb_check(void *handle, uschar *filename, int modemask, uid_t *owners, + gid_t *owngroups, uschar **errmsg) + { +@@ -88,7 +87,7 @@ + /* See local README for interface description. This function adds 1 to + the keylength in order to include the terminating zero. */ + +-int ++static int + dbmdb_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -121,7 +120,7 @@ + + /* See local README for interface description */ + +-int ++static int + dbmnz_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -137,10 +136,39 @@ + + /* See local README for interface description */ + +-void ++static void + dbmdb_close(void *handle) + { + EXIM_DBCLOSE((EXIM_DB *)handle); + } + ++lookup_info dbm_lookup_info = { ++ US"dbm", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ dbmdb_open, /* open function */ ++ dbmdb_check, /* check function */ ++ dbmdb_find, /* find function */ ++ dbmdb_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++lookup_info dbmz_lookup_info = { ++ US"dbmnz", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ dbmdb_open, /* sic */ /* open function */ ++ dbmdb_check, /* sic */ /* check function */ ++ dbmnz_find, /* find function */ ++ dbmdb_close, /* sic */ /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define dbmdb_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &dbm_lookup_info, &dbmz_lookup_info }; ++lookup_module_info dbmdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 2 }; ++ + /* End of lookups/dbmdb.c */ +diff -uNr exim-4.69-old/src/lookups/dbmdb.h exim-4.69/src/lookups/dbmdb.h +--- exim-4.69-old/src/lookups/dbmdb.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/dbmdb.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,21 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/dbmdb.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the dbm lookup. Use dbmdb in the code to avoid name +-clashes with external library names. */ +- +-extern void *dbmdb_open(uschar *, uschar **); +-extern BOOL dbmdb_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); +-extern int dbmdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +-extern int dbmnz_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +-extern void dbmdb_close(void *); +- +-/* End of lookups/dbmdb.h */ +diff -uNr exim-4.69-old/src/lookups/dkim.c exim-4.69/src/lookups/dkim.c +--- exim-4.69-old/src/lookups/dkim.c 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/lookups/dkim.c 2008-08-13 15:30:05.000000000 +0100 +@@ -8,7 +8,6 @@ + /* See the file NOTICE for conditions of use and distribution. */ + + #include "../exim.h" +-#include "dkim.h" + + + +@@ -18,7 +17,7 @@ + + /* See local README for interface description */ + +-void * ++static void * + dkim_open(uschar *filename, uschar **errmsg) + { + filename = filename; /* Keep picky compilers happy */ +@@ -35,7 +34,7 @@ + + /* See local README for interface description */ + +-int ++static int + dkim_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -49,4 +48,22 @@ + #endif + } + ++lookup_info cdb_lookup_info = { ++ US"dkim", /* lookup name */ ++ lookup_querystyle, /* query style */ ++ dkim_open, /* open function */ ++ NULL, /* check function */ ++ dkim_find, /* find function */ ++ NULL, /* no close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define cdb_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &dkim_lookup_info }; ++lookup_module_info cdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; ++ + /* End of lookups/dkim.c */ +diff -uNr exim-4.69-old/src/lookups/dkim.h exim-4.69/src/lookups/dkim.h +--- exim-4.69-old/src/lookups/dkim.h 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/lookups/dkim.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,16 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/dkim.h,v 1.1 2007/09/28 12:21:57 tom Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the DKIM lookup */ +- +-extern void *dkim_open(uschar *, uschar **); +-extern int dkim_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +- +-/* End of lookups/dkim.h */ +diff -uNr exim-4.69-old/src/lookups/dnsdb.c exim-4.69/src/lookups/dnsdb.c +--- exim-4.69-old/src/lookups/dnsdb.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/dnsdb.c 2008-08-13 15:30:05.000000000 +0100 +@@ -9,8 +9,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "dnsdb.h" +- + + + /* Ancient systems (e.g. SunOS4) don't appear to have T_TXT defined in their +@@ -67,7 +65,7 @@ + + /* See local README for interface description. */ + +-void * ++static void * + dnsdb_open(uschar *filename, uschar **errmsg) + { + filename = filename; /* Keep picky compilers happy */ +@@ -102,7 +100,7 @@ + which may start with '<' in order to set a specific separator. The default + separator, as always, is colon. */ + +-int ++static int + dnsdb_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -394,4 +392,22 @@ + return OK; + } + ++static lookup_info _lookup_info = { ++ US"dnsdb", /* lookup name */ ++ lookup_querystyle, /* query style */ ++ dnsdb_open, /* open function */ ++ NULL, /* check function */ ++ dnsdb_find, /* find function */ ++ NULL, /* no close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define dnsdb_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &_lookup_info }; ++lookup_module_info dnsdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; ++ + /* End of lookups/dnsdb.c */ +diff -uNr exim-4.69-old/src/lookups/dnsdb.h exim-4.69/src/lookups/dnsdb.h +--- exim-4.69-old/src/lookups/dnsdb.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/dnsdb.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,16 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/dnsdb.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the dnsdb lookup */ +- +-extern void *dnsdb_open(uschar *, uschar **); +-extern int dnsdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +- +-/* End of lookups/dnsdb.h */ +diff -uNr exim-4.69-old/src/lookups/dsearch.c exim-4.69/src/lookups/dsearch.c +--- exim-4.69-old/src/lookups/dsearch.c 2007-05-31 13:42:07.000000000 +0100 ++++ exim-4.69/src/lookups/dsearch.c 2008-08-13 15:30:05.000000000 +0100 +@@ -14,8 +14,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "dsearch.h" +- + + + /************************************************* +@@ -27,7 +25,7 @@ + it open, because the "search" can be done by a call to lstat() rather than + actually scanning through the list of files. */ + +-void * ++static void * + dsearch_open(uschar *dirname, uschar **errmsg) + { + DIR *dp = opendir(CS dirname); +@@ -50,7 +48,7 @@ + /* The handle will always be (void *)(-1), but don't try casting it to an + integer as this gives warnings on 64-bit systems. */ + +-BOOL ++static BOOL + dsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners, + gid_t *owngroups, uschar **errmsg) + { +@@ -68,7 +66,7 @@ + scanning the directory, as it is hopefully faster to let the OS do the scanning + for us. */ + +-int ++static int + dsearch_find(void *handle, uschar *dirname, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -114,10 +112,28 @@ + + /* See local README for interface description */ + +-void ++static void + dsearch_close(void *handle) + { + handle = handle; /* Avoid compiler warning */ + } + ++static lookup_info _lookup_info = { ++ US"dsearch", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ dsearch_open, /* open function */ ++ dsearch_check, /* check function */ ++ dsearch_find, /* find function */ ++ dsearch_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define dsearch_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &_lookup_info }; ++lookup_module_info dsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; ++ + /* End of lookups/dsearch.c */ +diff -uNr exim-4.69-old/src/lookups/dsearch.h exim-4.69/src/lookups/dsearch.h +--- exim-4.69-old/src/lookups/dsearch.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/dsearch.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,18 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/dsearch.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the dsearch lookup */ +- +-extern void *dsearch_open(uschar *, uschar **); +-extern BOOL dsearch_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); +-extern int dsearch_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +-extern void dsearch_close(void *); +- +-/* End of lookups/dsearch.h */ +diff -uNr exim-4.69-old/src/lookups/ibase.c exim-4.69/src/lookups/ibase.c +--- exim-4.69-old/src/lookups/ibase.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/ibase.c 2008-08-13 15:30:05.000000000 +0100 +@@ -11,14 +11,7 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "ibase.h" + +-#ifndef LOOKUP_IBASE +-static void dummy(int x) +-{ +- dummy(x - 1); +-} +-#else + #include /* The system header */ + + /* Structure and anchor for caching connections. */ +@@ -40,7 +33,7 @@ + + /* See local README for interface description. */ + +-void *ibase_open(uschar * filename, uschar ** errmsg) ++static void *ibase_open(uschar * filename, uschar ** errmsg) + { + return (void *) (1); /* Just return something non-null */ + } +@@ -53,7 +46,7 @@ + + /* See local README for interface description. */ + +-void ibase_tidy(void) ++static void ibase_tidy(void) + { + ibase_connection *cn; + ISC_STATUS status[20]; +@@ -458,7 +451,7 @@ + arguments are not used. Loop through a list of servers while the query is + deferred with a retryable error. */ + +-int ++static int + ibase_find(void *handle, uschar * filename, uschar * query, int length, + uschar ** result, uschar ** errmsg, BOOL *do_cache) + { +@@ -510,7 +503,7 @@ + Returns: the processed string or NULL for a bad option + */ + +-uschar *ibase_quote(uschar * s, uschar * opt) ++static uschar *ibase_quote(uschar * s, uschar * opt) + { + register int c; + int count = 0; +@@ -553,6 +546,22 @@ + return quoted; + } + ++static lookup_info _lookup_info = { ++ US"ibase", /* lookup name */ ++ lookup_querystyle, /* query-style lookup */ ++ ibase_open, /* open function */ ++ NULL, /* no check function */ ++ ibase_find, /* find function */ ++ NULL, /* no close function */ ++ ibase_tidy, /* tidy function */ ++ ibase_quote /* quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define ibase_lookup_module_info _lookup_module_info + #endif + ++static lookup_info *_lookup_list[] = { &_lookup_info }; ++lookup_module_info ibase_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; ++ + /* End of lookups/ibase.c */ +diff -uNr exim-4.69-old/src/lookups/ibase.h exim-4.69/src/lookups/ibase.h +--- exim-4.69-old/src/lookups/ibase.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/ibase.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,18 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/ibase.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the Interbase lookup functions */ +- +-extern void *ibase_open(uschar *, uschar **); +-extern int ibase_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); +-extern void ibase_tidy(void); +-extern uschar *ibase_quote(uschar *, uschar *); +- +-/* End of lookups/ibase.h */ +diff -uNr exim-4.69-old/src/lookups/ldap.c exim-4.69/src/lookups/ldap.c +--- exim-4.69-old/src/lookups/ldap.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/ldap.c 2008-08-13 15:30:05.000000000 +0100 +@@ -15,21 +15,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "ldap.h" +- +- +-/* We can't just compile this code and allow the library mechanism to omit the +-functions if they are not wanted, because we need to have the LDAP headers +-available for compiling. Therefore, compile these functions only if LOOKUP_LDAP +-is defined. However, some compilers don't like compiling empty modules, so keep +-them happy with a dummy when skipping the rest. Make it reference itself to +-stop picky compilers complaining that it is unused, and put in a dummy argument +-to stop even pickier compilers complaining about infinite loops. */ +- +-#ifndef LOOKUP_LDAP +-static void dummy(int x) { dummy(x-1); } +-#else +- + + /* Include LDAP headers. The code below uses some "old" LDAP interfaces that + are deprecated in OpenLDAP. I don't know their status in other LDAP +@@ -1196,7 +1181,7 @@ + are handled by a common function, with a flag to differentiate between them. + The handle and filename arguments are not used. */ + +-int ++static int + eldap_find(void *handle, uschar *filename, uschar *ldap_url, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -1205,7 +1190,7 @@ + return(control_ldap_search(ldap_url, SEARCH_LDAP_SINGLE, result, errmsg)); + } + +-int ++static int + eldapm_find(void *handle, uschar *filename, uschar *ldap_url, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -1214,7 +1199,7 @@ + return(control_ldap_search(ldap_url, SEARCH_LDAP_MULTIPLE, result, errmsg)); + } + +-int ++static int + eldapdn_find(void *handle, uschar *filename, uschar *ldap_url, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -1240,7 +1225,7 @@ + + /* See local README for interface description. */ + +-void * ++static void * + eldap_open(uschar *filename, uschar **errmsg) + { + return (void *)(1); /* Just return something non-null */ +@@ -1255,7 +1240,7 @@ + /* See local README for interface description. + Make sure that eldap_dn does not refer to reclaimed or worse, freed store */ + +-void ++static void + eldap_tidy(void) + { + LDAP_CONNECTION *lcp = NULL; +@@ -1351,7 +1336,7 @@ + + + +-uschar * ++static uschar * + eldap_quote(uschar *s, uschar *opt) + { + register int c; +@@ -1470,6 +1455,44 @@ + return quoted; + } + +-#endif /* LOOKUP_LDAP */ ++static lookup_info ldap_lookup_info = { ++ US"ldap", /* lookup name */ ++ lookup_querystyle, /* query-style lookup */ ++ eldap_open, /* open function */ ++ NULL, /* check function */ ++ eldap_find, /* find function */ ++ NULL, /* no close function */ ++ eldap_tidy, /* tidy function */ ++ eldap_quote /* quoting function */ ++}; ++ ++static lookup_info ldapdn_lookup_info = { ++ US"ldapdn", /* lookup name */ ++ lookup_querystyle, /* query-style lookup */ ++ eldap_open, /* sic */ /* open function */ ++ NULL, /* check function */ ++ eldapdn_find, /* find function */ ++ NULL, /* no close function */ ++ eldap_tidy, /* sic */ /* tidy function */ ++ eldap_quote /* sic */ /* quoting function */ ++}; ++ ++static lookup_info ldapm_lookup_info = { ++ US"ldapm", /* lookup name */ ++ lookup_querystyle, /* query-style lookup */ ++ eldap_open, /* sic */ /* open function */ ++ NULL, /* check function */ ++ eldapm_find, /* find function */ ++ NULL, /* no close function */ ++ eldap_tidy, /* sic */ /* tidy function */ ++ eldap_quote /* sic */ /* quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define ldap_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &ldap_lookup_info, &ldapdn_lookup_info, &ldapm_lookup_info }; ++lookup_module_info ldap_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 3 }; + + /* End of lookups/ldap.c */ +diff -uNr exim-4.69-old/src/lookups/ldap.h exim-4.69/src/lookups/ldap.h +--- exim-4.69-old/src/lookups/ldap.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/ldap.h 2008-08-13 15:30:05.000000000 +0100 +@@ -7,18 +7,9 @@ + /* Copyright (c) University of Cambridge 1995 - 2007 */ + /* See the file NOTICE for conditions of use and distribution. */ + +-/* Header for the ldap lookups */ ++/* Header for eldapauth_find */ + +-extern void *eldap_open(uschar *, uschar **); +-extern int eldap_find(void *, uschar *, uschar *, int, uschar **, uschar **, +- BOOL *); + extern int eldapauth_find(void *, uschar *, uschar *, int, uschar **, + uschar **, BOOL *); +-extern int eldapdn_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +-extern int eldapm_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +-extern void eldap_tidy(void); +-extern uschar *eldap_quote(uschar *, uschar *); + + /* End of lookups/ldap.h */ +diff -uNr exim-4.69-old/src/lookups/lsearch.c exim-4.69/src/lookups/lsearch.c +--- exim-4.69-old/src/lookups/lsearch.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/lsearch.c 2008-08-13 15:30:05.000000000 +0100 +@@ -9,7 +9,6 @@ + + #include "../exim.h" + #include "lf_functions.h" +-#include "lsearch.h" + + /* Codes for the different kinds of lsearch that are supported */ + +@@ -28,7 +27,7 @@ + + /* See local README for interface description */ + +-void * ++static void * + lsearch_open(uschar *filename, uschar **errmsg) + { + FILE *f = Ufopen(filename, "rb"); +@@ -48,7 +47,7 @@ + * Check entry point * + *************************************************/ + +-BOOL ++static BOOL + lsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners, + gid_t *owngroups, uschar **errmsg) + { +@@ -320,7 +319,7 @@ + + /* See local README for interface description */ + +-int ++static int + lsearch_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -337,7 +336,7 @@ + + /* See local README for interface description */ + +-int ++static int + wildlsearch_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -354,7 +353,7 @@ + + /* See local README for interface description */ + +-int ++static int + nwildlsearch_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -372,7 +371,7 @@ + + /* See local README for interface description */ + +-int ++static int + iplsearch_find(void *handle, uschar *filename, uschar *keystring, int length, + uschar **result, uschar **errmsg, BOOL *do_cache) + { +@@ -401,10 +400,64 @@ + + /* See local README for interface description */ + +-void ++static void + lsearch_close(void *handle) + { + (void)fclose((FILE *)handle); + } + ++static lookup_info iplsearch_lookup_info = { ++ US"iplsearch", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ lsearch_open, /* open function */ ++ lsearch_check, /* check function */ ++ iplsearch_find, /* find function */ ++ lsearch_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++static lookup_info lsearch_lookup_info = { ++ US"lsearch", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ lsearch_open, /* open function */ ++ lsearch_check, /* check function */ ++ lsearch_find, /* find function */ ++ lsearch_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++static lookup_info nwildlsearch_lookup_info = { ++ US"nwildlsearch", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ lsearch_open, /* open function */ ++ lsearch_check, /* check function */ ++ nwildlsearch_find, /* find function */ ++ lsearch_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++static lookup_info wildlsearch_lookup_info = { ++ US"wildlsearch", /* lookup name */ ++ lookup_absfile, /* uses absolute file name */ ++ lsearch_open, /* open function */ ++ lsearch_check, /* check function */ ++ wildlsearch_find, /* find function */ ++ lsearch_close, /* close function */ ++ NULL, /* no tidy function */ ++ NULL /* no quoting function */ ++}; ++ ++#ifdef DYNLOOKUP ++#define lsearch_lookup_module_info _lookup_module_info ++#endif ++ ++static lookup_info *_lookup_list[] = { &iplsearch_lookup_info, ++ &lsearch_lookup_info, ++ &nwildlsearch_lookup_info, ++ &wildlsearch_lookup_info }; ++lookup_module_info lsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 4 }; ++ + /* End of lookups/lsearch.c */ +diff -uNr exim-4.69-old/src/lookups/lsearch.h exim-4.69/src/lookups/lsearch.h +--- exim-4.69-old/src/lookups/lsearch.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/lsearch.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,25 +0,0 @@ +-/* $Cambridge: exim/exim-src/src/lookups/lsearch.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ +- +-/************************************************* +-* Exim - an Internet mail transport agent * +-*************************************************/ +- +-/* Copyright (c) University of Cambridge 1995 - 2007 */ +-/* See the file NOTICE for conditions of use and distribution. */ +- +-/* Header for the lsearch and wildlsearch lookups */ +- +-extern void *lsearch_open(uschar *, uschar **); +-extern BOOL lsearch_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); +-extern int lsearch_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +-extern void lsearch_close(void *); +- +-extern int wildlsearch_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +-extern int nwildlsearch_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +-extern int iplsearch_find(void *, uschar *, uschar *, int, uschar **, +- uschar **, BOOL *); +- +-/* End of lookups/lsearch.h */ +diff -uNr exim-4.69-old/src/lookups/Makefile exim-4.69/src/lookups/Makefile +--- exim-4.69-old/src/lookups/Makefile 2007-09-28 13:21:57.000000000 +0100 ++++ exim-4.69/src/lookups/Makefile 2008-08-13 15:30:05.000000000 +0100 @@ -1,13 +1,181 @@ - # $Cambridge: exim/exim-src/src/lookups/Makefile,v 1.8 2008/02/14 13:49:35 fanf2 Exp $ + # $Cambridge: exim/exim-src/src/lookups/Makefile,v 1.7 2007/09/28 12:21:57 tom Exp $ -# Make file for building a library containing all the available lookups and -# calling it lookups.a. This is called from the main make file, after cd'ing -# to the lookups subdirectory. When the relevant LOOKUP_ macros are not -# defined, dummy modules get compiled. -+# Make file for building all the available lookups. -+# This is called from the main make file, after cd'ing -+# to the lookups subdirectory. - +- -OBJ = cdb.o dbmdb.o dkim.o dnsdb.o dsearch.o ibase.o ldap.o lsearch.o mysql.o nis.o \ - nisplus.o oracle.o passwd.o pgsql.o spf.o sqlite.o testdb.o whoson.o \ - lf_check_file.o lf_quote.o lf_sqlperform.o ++# Make file for building all the available lookups. ++# This is called from the main make file, after cd'ing ++# to the lookups subdirectory. ++ +# because the variable is EXPERIMENTAL_SPF and not LOOKUP_SPF +# we put this one here by default and compile a dummy if +# EXPERIMENTAL_SPF is not defined @@ -1234,9 +2113,9 @@ index 75b78d2..e8c9bbd 100644 lookups.a: $(OBJ) @$(RM_COMMAND) -f lookups.a -@@ -15,31 +183,54 @@ lookups.a: $(OBJ) - @$(AR) lookups.a $(OBJ) +@@ -16,31 +184,54 @@ $(RANLIB) $@ + @$(RM_COMMAND) -rf ../drtables.o -.SUFFIXES: .o .c +.SUFFIXES: .o .c .so @@ -1308,925 +2187,10 @@ index 75b78d2..e8c9bbd 100644 + # End -diff --git a/src/lookups/cdb.c b/src/lookups/cdb.c -index cb4c727..23d0152 100644 ---- a/src/lookups/cdb.c -+++ b/src/lookups/cdb.c -@@ -56,7 +56,6 @@ - - #include "../exim.h" - #include "lf_functions.h" --#include "cdb.h" - - #ifdef HAVE_MMAP - # include -@@ -144,7 +143,9 @@ cdb_unpack(uschar *buf) - return num; - } - --void * -+static void cdb_close(void *handle); -+ -+static void * - cdb_open(uschar *filename, - uschar **errmsg) - { -@@ -245,7 +246,7 @@ cdb_open(uschar *filename, - * Check entry point * - *************************************************/ - --BOOL -+static BOOL - cdb_check(void *handle, - uschar *filename, - int modemask, -@@ -270,7 +271,7 @@ cdb_check(void *handle, - * Find entry point * - *************************************************/ - --int -+static int - cdb_find(void *handle, - uschar *filename, - uschar *keystring, -@@ -418,7 +419,7 @@ cdb_find(void *handle, - - /* See local README for interface description */ - --void -+static void - cdb_close(void *handle) - { - struct cdb_state * cdbp = handle; -@@ -434,4 +435,22 @@ struct cdb_state * cdbp = handle; - (void)close(cdbp->fileno); - } - -+lookup_info cdb_lookup_info = { -+ US"cdb", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ cdb_open, /* open function */ -+ cdb_check, /* check function */ -+ cdb_find, /* find function */ -+ cdb_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define cdb_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &cdb_lookup_info }; -+lookup_module_info cdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -+ - /* End of lookups/cdb.c */ -diff --git a/src/lookups/cdb.h b/src/lookups/cdb.h -deleted file mode 100644 -index df9fb2c..0000000 ---- a/src/lookups/cdb.h -+++ /dev/null -@@ -1,59 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/cdb.h,v 1.1 2004/10/07 13:10:01 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* -- * $Id: cdb.h,v 1.2.2.1 1998/05/29 16:21:36 cvs Exp $ -- * -- * Exim - CDB database lookup module -- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- * -- * Copyright (c) 1998 Nigel Metheringham, Planet Online Ltd -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License -- * as published by the Free Software Foundation; either version 2 -- * of the License, or (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -- * 02111-1307, USA. -- * -- * -- * This code implements Dan Bernstein's Constant DataBase (cdb) spec. -- * Information, the spec and sample code for cdb can be obtained from -- * http://www.pobox.com/~djb/cdb.html -- * -- * This implementation borrows some code from Dan Bernstein's -- * implementation (which has no license restrictions applied to it). -- * This (read-only) implementation is completely contained within -- * cdb.[ch] it does *not* link against an external cdb library. -- * -- * -- * There are 2 varients included within this code. One uses MMAP and -- * should give better performance especially for multiple lookups on a -- * modern machine. The other is the default implementation which is -- * used in the case where the MMAP fails or if MMAP was not compiled -- * in. this implementation is the same as the original reference cdb -- * implementation. -- * -- */ -- -- --/* Functions for reading exim cdb files */ -- --extern void *cdb_open(uschar *, uschar **); --extern BOOL cdb_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); --extern int cdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); --extern void cdb_close(void *); -- --/* End of cdb.h */ -diff --git a/src/lookups/dbmdb.c b/src/lookups/dbmdb.c -index 0d79522..8e459b9 100644 ---- a/src/lookups/dbmdb.c -+++ b/src/lookups/dbmdb.c -@@ -9,7 +9,6 @@ - - #include "../exim.h" - #include "lf_functions.h" --#include "dbmdb.h" - - - /************************************************* -@@ -18,7 +17,7 @@ - - /* See local README for interface description */ - --void * -+static void * - dbmdb_open(uschar *filename, uschar **errmsg) - { - EXIM_DB *yield; -@@ -45,7 +44,7 @@ file name. If USE_TDB or USE_GDBM is set, we know it is tdb or gdbm, which do - the same. Otherwise, for safety, we have to check for x.db or x.dir and x.pag. - */ - --BOOL -+static BOOL - dbmdb_check(void *handle, uschar *filename, int modemask, uid_t *owners, - gid_t *owngroups, uschar **errmsg) - { -@@ -88,7 +87,7 @@ return rc == 0; - /* See local README for interface description. This function adds 1 to - the keylength in order to include the terminating zero. */ - --int -+static int - dbmdb_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -121,7 +120,7 @@ return FAIL; - - /* See local README for interface description */ - --int -+static int - dbmnz_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -137,10 +136,39 @@ return dbmdb_find(handle, filename, keystring, length-1, result, errmsg, - - /* See local README for interface description */ - --void -+static void - dbmdb_close(void *handle) - { - EXIM_DBCLOSE((EXIM_DB *)handle); - } - -+lookup_info dbm_lookup_info = { -+ US"dbm", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ dbmdb_open, /* open function */ -+ dbmdb_check, /* check function */ -+ dbmdb_find, /* find function */ -+ dbmdb_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+lookup_info dbmz_lookup_info = { -+ US"dbmnz", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ dbmdb_open, /* sic */ /* open function */ -+ dbmdb_check, /* sic */ /* check function */ -+ dbmnz_find, /* find function */ -+ dbmdb_close, /* sic */ /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define dbmdb_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &dbm_lookup_info, &dbmz_lookup_info }; -+lookup_module_info dbmdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 2 }; -+ - /* End of lookups/dbmdb.c */ -diff --git a/src/lookups/dbmdb.h b/src/lookups/dbmdb.h -deleted file mode 100644 -index 26bd792..0000000 ---- a/src/lookups/dbmdb.h -+++ /dev/null -@@ -1,21 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/dbmdb.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the dbm lookup. Use dbmdb in the code to avoid name --clashes with external library names. */ -- --extern void *dbmdb_open(uschar *, uschar **); --extern BOOL dbmdb_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); --extern int dbmdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); --extern int dbmnz_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); --extern void dbmdb_close(void *); -- --/* End of lookups/dbmdb.h */ -diff --git a/src/lookups/dkim.c b/src/lookups/dkim.c -index fa2ecf2..3c55913 100755 ---- a/src/lookups/dkim.c -+++ b/src/lookups/dkim.c -@@ -8,7 +8,6 @@ - /* See the file NOTICE for conditions of use and distribution. */ - - #include "../exim.h" --#include "dkim.h" - - - -@@ -18,7 +17,7 @@ - - /* See local README for interface description */ - --void * -+static void * - dkim_open(uschar *filename, uschar **errmsg) - { - filename = filename; /* Keep picky compilers happy */ -@@ -35,7 +34,7 @@ return (void *)(-1); /* Just return something non-null */ - - /* See local README for interface description */ - --int -+static int - dkim_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -49,4 +48,22 @@ dkim_find(void *handle, uschar *filename, uschar *keystring, int length, - #endif - } - -+lookup_info cdb_lookup_info = { -+ US"dkim", /* lookup name */ -+ lookup_querystyle, /* query style */ -+ dkim_open, /* open function */ -+ NULL, /* check function */ -+ dkim_find, /* find function */ -+ NULL, /* no close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define cdb_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &dkim_lookup_info }; -+lookup_module_info cdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -+ - /* End of lookups/dkim.c */ -diff --git a/src/lookups/dkim.h b/src/lookups/dkim.h -deleted file mode 100755 -index cc57697..0000000 ---- a/src/lookups/dkim.h -+++ /dev/null -@@ -1,16 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/dkim.h,v 1.1 2007/09/28 12:21:57 tom Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the DKIM lookup */ -- --extern void *dkim_open(uschar *, uschar **); --extern int dkim_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); -- --/* End of lookups/dkim.h */ -diff --git a/src/lookups/dnsdb.c b/src/lookups/dnsdb.c -index bda714c..bea9a8c 100644 ---- a/src/lookups/dnsdb.c -+++ b/src/lookups/dnsdb.c -@@ -9,8 +9,6 @@ - - #include "../exim.h" - #include "lf_functions.h" --#include "dnsdb.h" -- - - - /* Ancient systems (e.g. SunOS4) don't appear to have T_TXT defined in their -@@ -67,7 +65,7 @@ static int type_values[] = { - - /* See local README for interface description. */ - --void * -+static void * - dnsdb_open(uschar *filename, uschar **errmsg) - { - filename = filename; /* Keep picky compilers happy */ -@@ -102,7 +100,7 @@ default is "TXT". - which may start with '<' in order to set a specific separator. The default - separator, as always, is colon. */ - --int -+static int - dnsdb_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -394,4 +392,22 @@ yield[ptr] = 0; - return OK; - } - -+static lookup_info _lookup_info = { -+ US"dnsdb", /* lookup name */ -+ lookup_querystyle, /* query style */ -+ dnsdb_open, /* open function */ -+ NULL, /* check function */ -+ dnsdb_find, /* find function */ -+ NULL, /* no close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define dnsdb_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &_lookup_info }; -+lookup_module_info dnsdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -+ - /* End of lookups/dnsdb.c */ -diff --git a/src/lookups/dnsdb.h b/src/lookups/dnsdb.h -deleted file mode 100644 -index 98bdf92..0000000 ---- a/src/lookups/dnsdb.h -+++ /dev/null -@@ -1,16 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/dnsdb.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the dnsdb lookup */ -- --extern void *dnsdb_open(uschar *, uschar **); --extern int dnsdb_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); -- --/* End of lookups/dnsdb.h */ -diff --git a/src/lookups/dsearch.c b/src/lookups/dsearch.c -index 661021d..7befda3 100644 ---- a/src/lookups/dsearch.c -+++ b/src/lookups/dsearch.c -@@ -14,8 +14,6 @@ lstat()) rather than a directory scan). */ - - #include "../exim.h" - #include "lf_functions.h" --#include "dsearch.h" -- - - - /************************************************* -@@ -27,7 +25,7 @@ whether it exists and whether it is searchable. However, we don't need to keep - it open, because the "search" can be done by a call to lstat() rather than - actually scanning through the list of files. */ - --void * -+static void * - dsearch_open(uschar *dirname, uschar **errmsg) - { - DIR *dp = opendir(CS dirname); -@@ -50,7 +48,7 @@ return (void *)(-1); - /* The handle will always be (void *)(-1), but don't try casting it to an - integer as this gives warnings on 64-bit systems. */ - --BOOL -+static BOOL - dsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners, - gid_t *owngroups, uschar **errmsg) - { -@@ -68,7 +66,7 @@ return lf_check_file(-1, filename, S_IFDIR, modemask, owners, owngroups, - scanning the directory, as it is hopefully faster to let the OS do the scanning - for us. */ - --int -+static int - dsearch_find(void *handle, uschar *dirname, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -114,10 +112,28 @@ return DEFER; - - /* See local README for interface description */ - --void -+static void - dsearch_close(void *handle) - { - handle = handle; /* Avoid compiler warning */ - } - -+static lookup_info _lookup_info = { -+ US"dsearch", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ dsearch_open, /* open function */ -+ dsearch_check, /* check function */ -+ dsearch_find, /* find function */ -+ dsearch_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define dsearch_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &_lookup_info }; -+lookup_module_info dsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -+ - /* End of lookups/dsearch.c */ -diff --git a/src/lookups/dsearch.h b/src/lookups/dsearch.h -deleted file mode 100644 -index e686824..0000000 ---- a/src/lookups/dsearch.h -+++ /dev/null -@@ -1,18 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/dsearch.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the dsearch lookup */ -- --extern void *dsearch_open(uschar *, uschar **); --extern BOOL dsearch_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); --extern int dsearch_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); --extern void dsearch_close(void *); -- --/* End of lookups/dsearch.h */ -diff --git a/src/lookups/ibase.c b/src/lookups/ibase.c -index 54699a1..ae9c04f 100644 ---- a/src/lookups/ibase.c -+++ b/src/lookups/ibase.c -@@ -11,14 +11,7 @@ - - #include "../exim.h" - #include "lf_functions.h" --#include "ibase.h" - --#ifndef LOOKUP_IBASE --static void dummy(int x) --{ -- dummy(x - 1); --} --#else - #include /* The system header */ - - /* Structure and anchor for caching connections. */ -@@ -40,7 +33,7 @@ static ibase_connection *ibase_connections = NULL; - - /* See local README for interface description. */ - --void *ibase_open(uschar * filename, uschar ** errmsg) -+static void *ibase_open(uschar * filename, uschar ** errmsg) - { - return (void *) (1); /* Just return something non-null */ - } -@@ -53,7 +46,7 @@ void *ibase_open(uschar * filename, uschar ** errmsg) - - /* See local README for interface description. */ - --void ibase_tidy(void) -+static void ibase_tidy(void) - { - ibase_connection *cn; - ISC_STATUS status[20]; -@@ -458,7 +451,7 @@ always leaves enough room for a terminating zero. */ - arguments are not used. Loop through a list of servers while the query is - deferred with a retryable error. */ - --int -+static int - ibase_find(void *handle, uschar * filename, uschar * query, int length, - uschar ** result, uschar ** errmsg, BOOL *do_cache) - { -@@ -510,7 +503,7 @@ Arguments: - Returns: the processed string or NULL for a bad option - */ - --uschar *ibase_quote(uschar * s, uschar * opt) -+static uschar *ibase_quote(uschar * s, uschar * opt) - { - register int c; - int count = 0; -@@ -553,6 +546,22 @@ uschar *ibase_quote(uschar * s, uschar * opt) - return quoted; - } - -+static lookup_info _lookup_info = { -+ US"ibase", /* lookup name */ -+ lookup_querystyle, /* query-style lookup */ -+ ibase_open, /* open function */ -+ NULL, /* no check function */ -+ ibase_find, /* find function */ -+ NULL, /* no close function */ -+ ibase_tidy, /* tidy function */ -+ ibase_quote /* quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define ibase_lookup_module_info _lookup_module_info - #endif - -+static lookup_info *_lookup_list[] = { &_lookup_info }; -+lookup_module_info ibase_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -+ - /* End of lookups/ibase.c */ -diff --git a/src/lookups/ibase.h b/src/lookups/ibase.h -deleted file mode 100644 -index cc64230..0000000 ---- a/src/lookups/ibase.h -+++ /dev/null -@@ -1,18 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/ibase.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the Interbase lookup functions */ -- --extern void *ibase_open(uschar *, uschar **); --extern int ibase_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); --extern void ibase_tidy(void); --extern uschar *ibase_quote(uschar *, uschar *); -- --/* End of lookups/ibase.h */ -diff --git a/src/lookups/ldap.c b/src/lookups/ldap.c -index f704f88..ec2a3e5 100644 ---- a/src/lookups/ldap.c -+++ b/src/lookups/ldap.c -@@ -15,21 +15,6 @@ researching how to handle the different kinds of error. */ - - #include "../exim.h" - #include "lf_functions.h" --#include "ldap.h" -- -- --/* We can't just compile this code and allow the library mechanism to omit the --functions if they are not wanted, because we need to have the LDAP headers --available for compiling. Therefore, compile these functions only if LOOKUP_LDAP --is defined. However, some compilers don't like compiling empty modules, so keep --them happy with a dummy when skipping the rest. Make it reference itself to --stop picky compilers complaining that it is unused, and put in a dummy argument --to stop even pickier compilers complaining about infinite loops. */ -- --#ifndef LOOKUP_LDAP --static void dummy(int x) { dummy(x-1); } --#else -- - - /* Include LDAP headers. The code below uses some "old" LDAP interfaces that - are deprecated in OpenLDAP. I don't know their status in other LDAP -@@ -1196,7 +1181,7 @@ return DEFER; - are handled by a common function, with a flag to differentiate between them. - The handle and filename arguments are not used. */ - --int -+static int - eldap_find(void *handle, uschar *filename, uschar *ldap_url, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -1205,7 +1190,7 @@ do_cache = do_cache; - return(control_ldap_search(ldap_url, SEARCH_LDAP_SINGLE, result, errmsg)); - } - --int -+static int - eldapm_find(void *handle, uschar *filename, uschar *ldap_url, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -1214,7 +1199,7 @@ do_cache = do_cache; - return(control_ldap_search(ldap_url, SEARCH_LDAP_MULTIPLE, result, errmsg)); - } - --int -+static int - eldapdn_find(void *handle, uschar *filename, uschar *ldap_url, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -1240,7 +1225,7 @@ return(control_ldap_search(ldap_url, SEARCH_LDAP_AUTH, result, errmsg)); - - /* See local README for interface description. */ - --void * -+static void * - eldap_open(uschar *filename, uschar **errmsg) - { - return (void *)(1); /* Just return something non-null */ -@@ -1255,7 +1240,7 @@ return (void *)(1); /* Just return something non-null */ - /* See local README for interface description. - Make sure that eldap_dn does not refer to reclaimed or worse, freed store */ - --void -+static void - eldap_tidy(void) - { - LDAP_CONNECTION *lcp = NULL; -@@ -1351,7 +1336,7 @@ quote_ldap_dn, respectively. */ - - - --uschar * -+static uschar * - eldap_quote(uschar *s, uschar *opt) - { - register int c; -@@ -1470,6 +1455,44 @@ else - return quoted; - } - --#endif /* LOOKUP_LDAP */ -+static lookup_info ldap_lookup_info = { -+ US"ldap", /* lookup name */ -+ lookup_querystyle, /* query-style lookup */ -+ eldap_open, /* open function */ -+ NULL, /* check function */ -+ eldap_find, /* find function */ -+ NULL, /* no close function */ -+ eldap_tidy, /* tidy function */ -+ eldap_quote /* quoting function */ -+}; -+ -+static lookup_info ldapdn_lookup_info = { -+ US"ldapdn", /* lookup name */ -+ lookup_querystyle, /* query-style lookup */ -+ eldap_open, /* sic */ /* open function */ -+ NULL, /* check function */ -+ eldapdn_find, /* find function */ -+ NULL, /* no close function */ -+ eldap_tidy, /* sic */ /* tidy function */ -+ eldap_quote /* sic */ /* quoting function */ -+}; -+ -+static lookup_info ldapm_lookup_info = { -+ US"ldapm", /* lookup name */ -+ lookup_querystyle, /* query-style lookup */ -+ eldap_open, /* sic */ /* open function */ -+ NULL, /* check function */ -+ eldapm_find, /* find function */ -+ NULL, /* no close function */ -+ eldap_tidy, /* sic */ /* tidy function */ -+ eldap_quote /* sic */ /* quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define ldap_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &ldap_lookup_info, &ldapdn_lookup_info, &ldapm_lookup_info }; -+lookup_module_info ldap_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 3 }; - - /* End of lookups/ldap.c */ -diff --git a/src/lookups/ldap.h b/src/lookups/ldap.h -index 9e1d716..62383b8 100644 ---- a/src/lookups/ldap.h -+++ b/src/lookups/ldap.h -@@ -7,18 +7,9 @@ - /* Copyright (c) University of Cambridge 1995 - 2007 */ - /* See the file NOTICE for conditions of use and distribution. */ - --/* Header for the ldap lookups */ -+/* Header for eldapauth_find */ - --extern void *eldap_open(uschar *, uschar **); --extern int eldap_find(void *, uschar *, uschar *, int, uschar **, uschar **, -- BOOL *); - extern int eldapauth_find(void *, uschar *, uschar *, int, uschar **, - uschar **, BOOL *); --extern int eldapdn_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); --extern int eldapm_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); --extern void eldap_tidy(void); --extern uschar *eldap_quote(uschar *, uschar *); - - /* End of lookups/ldap.h */ -diff --git a/src/lookups/lsearch.c b/src/lookups/lsearch.c -index d9ff9d4..4ac7b65 100644 ---- a/src/lookups/lsearch.c -+++ b/src/lookups/lsearch.c -@@ -9,7 +9,6 @@ - - #include "../exim.h" - #include "lf_functions.h" --#include "lsearch.h" - - /* Codes for the different kinds of lsearch that are supported */ - -@@ -28,7 +27,7 @@ enum { - - /* See local README for interface description */ - --void * -+static void * - lsearch_open(uschar *filename, uschar **errmsg) - { - FILE *f = Ufopen(filename, "rb"); -@@ -48,7 +47,7 @@ return f; - * Check entry point * - *************************************************/ - --BOOL -+static BOOL - lsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners, - gid_t *owngroups, uschar **errmsg) - { -@@ -320,7 +319,7 @@ return FAIL; - - /* See local README for interface description */ - --int -+static int - lsearch_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -337,7 +336,7 @@ return internal_lsearch_find(handle, filename, keystring, length, result, - - /* See local README for interface description */ - --int -+static int - wildlsearch_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -354,7 +353,7 @@ return internal_lsearch_find(handle, filename, keystring, length, result, - - /* See local README for interface description */ - --int -+static int - nwildlsearch_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -372,7 +371,7 @@ return internal_lsearch_find(handle, filename, keystring, length, result, - - /* See local README for interface description */ - --int -+static int - iplsearch_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) - { -@@ -401,10 +400,64 @@ else - - /* See local README for interface description */ - --void -+static void - lsearch_close(void *handle) - { - (void)fclose((FILE *)handle); - } - -+static lookup_info iplsearch_lookup_info = { -+ US"iplsearch", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ lsearch_open, /* open function */ -+ lsearch_check, /* check function */ -+ iplsearch_find, /* find function */ -+ lsearch_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+static lookup_info lsearch_lookup_info = { -+ US"lsearch", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ lsearch_open, /* open function */ -+ lsearch_check, /* check function */ -+ lsearch_find, /* find function */ -+ lsearch_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+static lookup_info nwildlsearch_lookup_info = { -+ US"nwildlsearch", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ lsearch_open, /* open function */ -+ lsearch_check, /* check function */ -+ nwildlsearch_find, /* find function */ -+ lsearch_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+static lookup_info wildlsearch_lookup_info = { -+ US"wildlsearch", /* lookup name */ -+ lookup_absfile, /* uses absolute file name */ -+ lsearch_open, /* open function */ -+ lsearch_check, /* check function */ -+ wildlsearch_find, /* find function */ -+ lsearch_close, /* close function */ -+ NULL, /* no tidy function */ -+ NULL /* no quoting function */ -+}; -+ -+#ifdef DYNLOOKUP -+#define lsearch_lookup_module_info _lookup_module_info -+#endif -+ -+static lookup_info *_lookup_list[] = { &iplsearch_lookup_info, -+ &lsearch_lookup_info, -+ &nwildlsearch_lookup_info, -+ &wildlsearch_lookup_info }; -+lookup_module_info lsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 4 }; -+ - /* End of lookups/lsearch.c */ -diff --git a/src/lookups/lsearch.h b/src/lookups/lsearch.h -deleted file mode 100644 -index 7245d4c..0000000 ---- a/src/lookups/lsearch.h -+++ /dev/null -@@ -1,25 +0,0 @@ --/* $Cambridge: exim/exim-src/src/lookups/lsearch.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ -- --/************************************************* --* Exim - an Internet mail transport agent * --*************************************************/ -- --/* Copyright (c) University of Cambridge 1995 - 2007 */ --/* See the file NOTICE for conditions of use and distribution. */ -- --/* Header for the lsearch and wildlsearch lookups */ -- --extern void *lsearch_open(uschar *, uschar **); --extern BOOL lsearch_check(void *, uschar *, int, uid_t *, gid_t *, uschar **); --extern int lsearch_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); --extern void lsearch_close(void *); -- --extern int wildlsearch_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); --extern int nwildlsearch_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); --extern int iplsearch_find(void *, uschar *, uschar *, int, uschar **, -- uschar **, BOOL *); -- --/* End of lookups/lsearch.h */ -diff --git a/src/lookups/mysql.c b/src/lookups/mysql.c -index 9b2dda9..279ee95 100644 ---- a/src/lookups/mysql.c -+++ b/src/lookups/mysql.c -@@ -13,22 +13,6 @@ functions. */ +diff -uNr exim-4.69-old/src/lookups/mysql.c exim-4.69/src/lookups/mysql.c +--- exim-4.69-old/src/lookups/mysql.c 2007-08-23 11:16:51.000000000 +0100 ++++ exim-4.69/src/lookups/mysql.c 2008-08-13 15:30:05.000000000 +0100 +@@ -13,22 +13,6 @@ #include "../exim.h" #include "lf_functions.h" @@ -2249,7 +2213,7 @@ index 9b2dda9..279ee95 100644 #include /* The system header */ -@@ -51,7 +35,7 @@ static mysql_connection *mysql_connections = NULL; +@@ -51,7 +35,7 @@ /* See local README for interface description. */ @@ -2258,7 +2222,7 @@ index 9b2dda9..279ee95 100644 mysql_open(uschar *filename, uschar **errmsg) { return (void *)(1); /* Just return something non-null */ -@@ -65,7 +49,7 @@ return (void *)(1); /* Just return something non-null */ +@@ -65,7 +49,7 @@ /* See local README for interface description. */ @@ -2267,7 +2231,7 @@ index 9b2dda9..279ee95 100644 mysql_tidy(void) { mysql_connection *cn; -@@ -342,7 +326,7 @@ arguments are not used. The code to loop through a list of servers while the +@@ -342,7 +326,7 @@ query is deferred with a retryable error is now in a separate function that is shared with other SQL lookups. */ @@ -2276,7 +2240,7 @@ index 9b2dda9..279ee95 100644 mysql_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -372,7 +356,7 @@ Arguments: +@@ -372,7 +356,7 @@ Returns: the processed string or NULL for a bad option */ @@ -2285,12 +2249,10 @@ index 9b2dda9..279ee95 100644 mysql_quote(uschar *s, uschar *opt) { register int c; -@@ -414,7 +398,24 @@ while ((c = *s++) != 0) +@@ -414,7 +398,24 @@ return quoted; } -- --#endif /* MYSQL_LOOKUP */ +/* These are the lookup_info blocks for this driver */ + +static lookup_info mysql_lookup_info = { @@ -2307,16 +2269,15 @@ index 9b2dda9..279ee95 100644 +#ifdef DYNLOOKUP +#define mysql_lookup_module_info _lookup_module_info +#endif -+ + +-#endif /* MYSQL_LOOKUP */ +static lookup_info *_lookup_list[] = { &mysql_lookup_info }; +lookup_module_info mysql_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/mysql.c */ -diff --git a/src/lookups/mysql.h b/src/lookups/mysql.h -deleted file mode 100644 -index 05c65ce..0000000 ---- a/src/lookups/mysql.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/mysql.h exim-4.69/src/lookups/mysql.h +--- exim-4.69-old/src/lookups/mysql.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/mysql.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/mysql.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2336,10 +2297,9 @@ index 05c65ce..0000000 -extern uschar *mysql_quote(uschar *, uschar *); - -/* End of lookups/mysql.h */ -diff --git a/src/lookups/nis.c b/src/lookups/nis.c -index 3728e20..e64523e 100644 ---- a/src/lookups/nis.c -+++ b/src/lookups/nis.c +diff -uNr exim-4.69-old/src/lookups/nis.c exim-4.69/src/lookups/nis.c +--- exim-4.69-old/src/lookups/nis.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/nis.c 2008-08-13 15:30:05.000000000 +0100 @@ -9,19 +9,6 @@ #include "../exim.h" @@ -2360,7 +2320,7 @@ index 3728e20..e64523e 100644 #include -@@ -33,7 +20,7 @@ static void dummy(int x) { dummy(x-1); } +@@ -33,7 +20,7 @@ /* See local README for interface description. This serves for both the "nis" and "nis0" lookup types. */ @@ -2369,7 +2329,7 @@ index 3728e20..e64523e 100644 nis_open(uschar *filename, uschar **errmsg) { char *nis_domain; -@@ -55,7 +42,7 @@ return nis_domain; +@@ -55,7 +42,7 @@ for nis0 because they are so short it isn't worth trying to use any common code. */ @@ -2378,7 +2338,7 @@ index 3728e20..e64523e 100644 nis_find(void *handle, uschar *filename, uschar *keystring, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -81,7 +68,7 @@ return (rc == YPERR_KEY || rc == YPERR_MAP)? FAIL : DEFER; +@@ -81,7 +68,7 @@ /* See local README for interface description. */ @@ -2387,7 +2347,7 @@ index 3728e20..e64523e 100644 nis0_find(void *handle, uschar *filename, uschar *keystring, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -99,6 +86,33 @@ if ((rc = yp_match(CS handle, CS filename, CS keystring, length + 1, +@@ -99,6 +86,33 @@ return (rc == YPERR_KEY || rc == YPERR_MAP)? FAIL : DEFER; } @@ -2422,11 +2382,9 @@ index 3728e20..e64523e 100644 +lookup_module_info nis_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 2 }; /* End of lookups/nis.c */ -diff --git a/src/lookups/nis.h b/src/lookups/nis.h -deleted file mode 100644 -index b427a71..0000000 ---- a/src/lookups/nis.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/nis.h exim-4.69/src/lookups/nis.h +--- exim-4.69-old/src/lookups/nis.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/nis.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/nis.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2446,10 +2404,9 @@ index b427a71..0000000 - BOOL *); - -/* End of lookups/nis.h */ -diff --git a/src/lookups/nisplus.c b/src/lookups/nisplus.c -index cbf6187..68c122c 100644 ---- a/src/lookups/nisplus.c -+++ b/src/lookups/nisplus.c +diff -uNr exim-4.69-old/src/lookups/nisplus.c exim-4.69/src/lookups/nisplus.c +--- exim-4.69-old/src/lookups/nisplus.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/nisplus.c 2008-08-13 15:30:05.000000000 +0100 @@ -9,21 +9,6 @@ #include "../exim.h" @@ -2472,7 +2429,7 @@ index cbf6187..68c122c 100644 #include -@@ -34,7 +19,7 @@ static void dummy(int x) { dummy(x-1); } +@@ -34,7 +19,7 @@ /* See local README for interface description. */ @@ -2481,7 +2438,7 @@ index cbf6187..68c122c 100644 nisplus_open(uschar *filename, uschar **errmsg) { return (void *)(1); /* Just return something non-null */ -@@ -58,7 +43,7 @@ name tagged on the end after a colon. If there is no result-field name, the +@@ -58,7 +43,7 @@ yield is the concatenation of all the fields, preceded by their names and an equals sign. */ @@ -2490,7 +2447,7 @@ index cbf6187..68c122c 100644 nisplus_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -250,7 +235,7 @@ Arguments: +@@ -250,7 +235,7 @@ Returns: the processed string or NULL for a bad option */ @@ -2499,7 +2456,7 @@ index cbf6187..68c122c 100644 nisplus_quote(uschar *s, uschar *opt) { int count = 0; -@@ -274,6 +259,22 @@ while (*s != 0) +@@ -274,6 +259,22 @@ return quoted; } @@ -2523,11 +2480,9 @@ index cbf6187..68c122c 100644 +lookup_module_info nisplus_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/nisplus.c */ -diff --git a/src/lookups/nisplus.h b/src/lookups/nisplus.h -deleted file mode 100644 -index 9c0f1cb..0000000 ---- a/src/lookups/nisplus.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/nisplus.h exim-4.69/src/lookups/nisplus.h +--- exim-4.69-old/src/lookups/nisplus.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/nisplus.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/nisplus.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2546,11 +2501,10 @@ index 9c0f1cb..0000000 -extern uschar *nisplus_quote(uschar *, uschar *); - -/* End of lookups/nisplus.h */ -diff --git a/src/lookups/oracle.c b/src/lookups/oracle.c -index 7cb2163..f6eadac 100644 ---- a/src/lookups/oracle.c -+++ b/src/lookups/oracle.c -@@ -15,27 +15,12 @@ some comments from my position of Oracle ignorance. */ +diff -uNr exim-4.69-old/src/lookups/oracle.c exim-4.69/src/lookups/oracle.c +--- exim-4.69-old/src/lookups/oracle.c 2007-03-13 09:59:07.000000000 +0000 ++++ exim-4.69/src/lookups/oracle.c 2008-08-13 15:30:05.000000000 +0100 +@@ -15,27 +15,12 @@ #include "../exim.h" @@ -2578,7 +2532,7 @@ index 7cb2163..f6eadac 100644 #define PARSE_NO_DEFER 0 /* parse straight away */ #define PARSE_V7_LNG 2 #define MAX_ITEM_BUFFER_SIZE 1024 /* largest size of a cell of data */ -@@ -212,7 +197,7 @@ return col; +@@ -212,7 +197,7 @@ /* See local README for interface description. */ @@ -2587,7 +2541,7 @@ index 7cb2163..f6eadac 100644 oracle_open(uschar *filename, uschar **errmsg) { return (void *)(1); /* Just return something non-null */ -@@ -226,7 +211,7 @@ return (void *)(1); /* Just return something non-null */ +@@ -226,7 +211,7 @@ /* See local README for interface description. */ @@ -2596,7 +2550,7 @@ index 7cb2163..f6eadac 100644 oracle_tidy(void) { oracle_connection *cn; -@@ -532,7 +517,7 @@ else +@@ -532,7 +517,7 @@ arguments are not used. Loop through a list of servers while the query is deferred with a retryable error. */ @@ -2605,7 +2559,7 @@ index 7cb2163..f6eadac 100644 oracle_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -577,7 +562,7 @@ Arguments: +@@ -577,7 +562,7 @@ Returns: the processed string or NULL for a bad option */ @@ -2614,7 +2568,7 @@ index 7cb2163..f6eadac 100644 oracle_quote(uschar *s, uschar *opt) { register int c; -@@ -619,6 +604,22 @@ while ((c = *s++) != 0) +@@ -619,6 +604,22 @@ return quoted; } @@ -2638,11 +2592,9 @@ index 7cb2163..f6eadac 100644 +lookup_module_info oracle_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/oracle.c */ -diff --git a/src/lookups/oracle.h b/src/lookups/oracle.h -deleted file mode 100644 -index ea87c3f..0000000 ---- a/src/lookups/oracle.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/oracle.h exim-4.69/src/lookups/oracle.h +--- exim-4.69-old/src/lookups/oracle.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/oracle.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/oracle.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2662,10 +2614,9 @@ index ea87c3f..0000000 -extern uschar *oracle_quote(uschar *, uschar *); - -/* End of lookups/oracle.h */ -diff --git a/src/lookups/passwd.c b/src/lookups/passwd.c -index 90f5348..6d64a63 100644 ---- a/src/lookups/passwd.c -+++ b/src/lookups/passwd.c +diff -uNr exim-4.69-old/src/lookups/passwd.c exim-4.69/src/lookups/passwd.c +--- exim-4.69-old/src/lookups/passwd.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/passwd.c 2008-08-13 15:30:05.000000000 +0100 @@ -8,8 +8,6 @@ /* See the file NOTICE for conditions of use and distribution. */ @@ -2684,7 +2635,7 @@ index 90f5348..6d64a63 100644 passwd_open(uschar *filename, uschar **errmsg) { filename = filename; /* Keep picky compilers happy */ -@@ -35,7 +33,7 @@ return (void *)(-1); /* Just return something non-null */ +@@ -35,7 +33,7 @@ /* See local README for interface description */ @@ -2693,7 +2644,7 @@ index 90f5348..6d64a63 100644 passwd_find(void *handle, uschar *filename, uschar *keystring, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -53,4 +51,22 @@ if (!route_finduser(keystring, &pw, NULL)) return FAIL; +@@ -53,4 +51,22 @@ return OK; } @@ -2716,11 +2667,9 @@ index 90f5348..6d64a63 100644 +lookup_module_info passwd_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; + /* End of lookups/passwd.c */ -diff --git a/src/lookups/passwd.h b/src/lookups/passwd.h -deleted file mode 100644 -index 2350842..0000000 ---- a/src/lookups/passwd.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/passwd.h exim-4.69/src/lookups/passwd.h +--- exim-4.69-old/src/lookups/passwd.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/passwd.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/passwd.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2738,11 +2687,10 @@ index 2350842..0000000 - BOOL *); - -/* End of lookups/passwd.h */ -diff --git a/src/lookups/pgsql.c b/src/lookups/pgsql.c -index f53cca0..c39086e 100644 ---- a/src/lookups/pgsql.c -+++ b/src/lookups/pgsql.c -@@ -13,21 +13,6 @@ socket extension. */ +diff -uNr exim-4.69-old/src/lookups/pgsql.c exim-4.69/src/lookups/pgsql.c +--- exim-4.69-old/src/lookups/pgsql.c 2007-08-23 11:16:51.000000000 +0100 ++++ exim-4.69/src/lookups/pgsql.c 2008-08-13 15:30:05.000000000 +0100 +@@ -13,21 +13,6 @@ #include "../exim.h" #include "lf_functions.h" @@ -2764,7 +2712,7 @@ index f53cca0..c39086e 100644 #include /* The system header */ -@@ -49,7 +34,7 @@ static pgsql_connection *pgsql_connections = NULL; +@@ -49,7 +34,7 @@ /* See local README for interface description. */ @@ -2773,7 +2721,7 @@ index f53cca0..c39086e 100644 pgsql_open(uschar *filename, uschar **errmsg) { return (void *)(1); /* Just return something non-null */ -@@ -63,7 +48,7 @@ return (void *)(1); /* Just return something non-null */ +@@ -63,7 +48,7 @@ /* See local README for interface description. */ @@ -2782,7 +2730,7 @@ index f53cca0..c39086e 100644 pgsql_tidy(void) { pgsql_connection *cn; -@@ -414,7 +399,7 @@ arguments are not used. The code to loop through a list of servers while the +@@ -414,7 +399,7 @@ query is deferred with a retryable error is now in a separate function that is shared with other SQL lookups. */ @@ -2791,7 +2739,7 @@ index f53cca0..c39086e 100644 pgsql_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -454,7 +439,7 @@ Arguments: +@@ -454,7 +439,7 @@ Returns: the processed string or NULL for a bad option */ @@ -2800,7 +2748,7 @@ index f53cca0..c39086e 100644 pgsql_quote(uschar *s, uschar *opt) { register int c; -@@ -501,6 +486,22 @@ while ((c = *s++) != 0) +@@ -501,6 +486,22 @@ return quoted; } @@ -2824,11 +2772,9 @@ index f53cca0..c39086e 100644 +lookup_module_info pgsql_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/pgsql.c */ -diff --git a/src/lookups/pgsql.h b/src/lookups/pgsql.h -deleted file mode 100644 -index a4f0792..0000000 ---- a/src/lookups/pgsql.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/pgsql.h exim-4.69/src/lookups/pgsql.h +--- exim-4.69-old/src/lookups/pgsql.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/pgsql.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/pgsql.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -2848,11 +2794,10 @@ index a4f0792..0000000 -extern uschar *pgsql_quote(uschar *, uschar *); - -/* End of lookups/pgsql.h */ -diff --git a/src/lookups/spf.c b/src/lookups/spf.c -index 9bd65c5..8b4d8e9 100644 ---- a/src/lookups/spf.c -+++ b/src/lookups/spf.c -@@ -24,7 +24,6 @@ static void dummy(int x) { dummy(x-1); } +diff -uNr exim-4.69-old/src/lookups/spf.c exim-4.69/src/lookups/spf.c +--- exim-4.69-old/src/lookups/spf.c 2005-06-27 19:01:02.000000000 +0100 ++++ exim-4.69/src/lookups/spf.c 2008-08-13 15:30:05.000000000 +0100 +@@ -24,7 +24,6 @@ #else #include "lf_functions.h" @@ -2860,7 +2805,7 @@ index 9bd65c5..8b4d8e9 100644 #ifndef HAVE_NS_TYPE #define HAVE_NS_TYPE #endif -@@ -32,7 +31,7 @@ static void dummy(int x) { dummy(x-1); } +@@ -32,7 +31,7 @@ #include #include @@ -2869,7 +2814,7 @@ index 9bd65c5..8b4d8e9 100644 SPF_server_t *spf_server = NULL; spf_server = SPF_server_new(SPF_DNS_CACHE, 0); if (spf_server == NULL) { -@@ -42,13 +41,14 @@ void *spf_open(uschar *filename, uschar **errmsg) { +@@ -42,13 +41,14 @@ return (void *) spf_server; } @@ -2887,7 +2832,7 @@ index 9bd65c5..8b4d8e9 100644 SPF_server_t *spf_server = handle; SPF_request_t *spf_request = NULL; SPF_response_t *spf_response = NULL; -@@ -75,4 +75,22 @@ int spf_find(void *handle, uschar *filename, uschar *keystring, int key_len, +@@ -75,4 +75,22 @@ return OK; } @@ -2910,11 +2855,9 @@ index 9bd65c5..8b4d8e9 100644 +lookup_module_info spf_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; + #endif /* EXPERIMENTAL_SPF */ -diff --git a/src/lookups/spf.h b/src/lookups/spf.h -deleted file mode 100644 -index 5280f52..0000000 ---- a/src/lookups/spf.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/spf.h exim-4.69/src/lookups/spf.h +--- exim-4.69-old/src/lookups/spf.h 2005-05-25 21:07:55.000000000 +0100 ++++ exim-4.69/src/lookups/spf.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/spf.h,v 1.1 2005/05/25 20:07:55 tom Exp $ */ - @@ -2942,10 +2885,9 @@ index 5280f52..0000000 -extern int spf_find(void *, uschar *, uschar *, int, uschar **, uschar **, - BOOL *); - -diff --git a/src/lookups/sqlite.c b/src/lookups/sqlite.c -index e4aa4ea..b5d4175 100644 ---- a/src/lookups/sqlite.c -+++ b/src/lookups/sqlite.c +diff -uNr exim-4.69-old/src/lookups/sqlite.c exim-4.69/src/lookups/sqlite.c +--- exim-4.69-old/src/lookups/sqlite.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/sqlite.c 2008-08-13 15:30:05.000000000 +0100 @@ -9,11 +9,7 @@ #include "../exim.h" @@ -2958,7 +2900,7 @@ index e4aa4ea..b5d4175 100644 #include -@@ -23,7 +19,7 @@ static void dummy(int x) { dummy(x-1); } +@@ -23,7 +19,7 @@ /* See local README for interface description. */ @@ -2967,7 +2909,7 @@ index e4aa4ea..b5d4175 100644 sqlite_open(uschar *filename, uschar **errmsg) { sqlite3 *db = NULL; -@@ -85,7 +81,7 @@ return 0; +@@ -85,7 +81,7 @@ } @@ -2976,7 +2918,7 @@ index e4aa4ea..b5d4175 100644 sqlite_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -113,7 +109,7 @@ return OK; +@@ -113,7 +109,7 @@ /* See local README for interface description. */ @@ -2985,7 +2927,7 @@ index e4aa4ea..b5d4175 100644 { sqlite3_close(handle); } -@@ -134,7 +130,7 @@ Arguments: +@@ -134,7 +130,7 @@ Returns: the processed string or NULL for a bad option */ @@ -2994,7 +2936,7 @@ index e4aa4ea..b5d4175 100644 sqlite_quote(uschar *s, uschar *opt) { register int c; -@@ -159,6 +155,22 @@ while ((c = *s++) != 0) +@@ -159,6 +155,22 @@ return quoted; } @@ -3018,11 +2960,9 @@ index e4aa4ea..b5d4175 100644 +lookup_module_info sqlite_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/sqlite.c */ -diff --git a/src/lookups/sqlite.h b/src/lookups/sqlite.h -deleted file mode 100644 -index 1f3b421..0000000 ---- a/src/lookups/sqlite.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/sqlite.h exim-4.69/src/lookups/sqlite.h +--- exim-4.69-old/src/lookups/sqlite.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/sqlite.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/sqlite.h,v 1.3 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -3042,10 +2982,9 @@ index 1f3b421..0000000 -extern uschar *sqlite_quote(uschar *, uschar *); - -/* End of lookups/sqlite.h */ -diff --git a/src/lookups/testdb.c b/src/lookups/testdb.c -index c20275f..ca29a37 100644 ---- a/src/lookups/testdb.c -+++ b/src/lookups/testdb.c +diff -uNr exim-4.69-old/src/lookups/testdb.c exim-4.69/src/lookups/testdb.c +--- exim-4.69-old/src/lookups/testdb.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/testdb.c 2008-08-13 15:30:05.000000000 +0100 @@ -9,8 +9,6 @@ #include "../exim.h" @@ -3055,7 +2994,7 @@ index c20275f..ca29a37 100644 /* These are not real lookup functions; they are just a way of testing the rest of Exim by providing an easy way of specifying particular yields from -@@ -23,7 +21,7 @@ the find function. */ +@@ -23,7 +21,7 @@ /* See local README for interface description. */ @@ -3064,7 +3003,7 @@ index c20275f..ca29a37 100644 testdb_open(uschar *filename, uschar **errmsg) { filename = filename; /* Keep picky compilers happy */ -@@ -39,7 +37,7 @@ return (void *)(1); /* Just return something non-null */ +@@ -39,7 +37,7 @@ /* See local README for interface description. */ @@ -3073,7 +3012,7 @@ index c20275f..ca29a37 100644 testdb_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -66,4 +64,22 @@ if (Ustrcmp(query, "nocache") == 0) *do_cache = FALSE; +@@ -66,4 +64,22 @@ return OK; } @@ -3096,11 +3035,9 @@ index c20275f..ca29a37 100644 +lookup_module_info testdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; + /* End of lookups/testdb.c */ -diff --git a/src/lookups/testdb.h b/src/lookups/testdb.h -deleted file mode 100644 -index 39c0e41..0000000 ---- a/src/lookups/testdb.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/testdb.h exim-4.69/src/lookups/testdb.h +--- exim-4.69-old/src/lookups/testdb.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/testdb.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/testdb.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -3118,10 +3055,9 @@ index 39c0e41..0000000 - BOOL *); - -/* End of lookups/testdb.h */ -diff --git a/src/lookups/whoson.c b/src/lookups/whoson.c -index 298937c..6517f9d 100644 ---- a/src/lookups/whoson.c -+++ b/src/lookups/whoson.c +diff -uNr exim-4.69-old/src/lookups/whoson.c exim-4.69/src/lookups/whoson.c +--- exim-4.69-old/src/lookups/whoson.c 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/whoson.c 2008-08-13 15:30:05.000000000 +0100 @@ -12,23 +12,7 @@ #include "../exim.h" @@ -3146,7 +3082,7 @@ index 298937c..6517f9d 100644 /************************************************* * Open entry point * -@@ -36,7 +20,7 @@ static void dummy(int x) { dummy(x-1); } +@@ -36,7 +20,7 @@ /* See local README for interface description. */ @@ -3155,7 +3091,7 @@ index 298937c..6517f9d 100644 whoson_open(uschar *filename, uschar **errmsg) { filename = filename; /* Keep picky compilers happy */ -@@ -51,7 +35,7 @@ return (void *)(1); /* Just return something non-null */ +@@ -51,7 +35,7 @@ /* See local README for interface description. */ @@ -3164,7 +3100,7 @@ index 298937c..6517f9d 100644 whoson_find(void *handle, uschar *filename, uschar *query, int length, uschar **result, uschar **errmsg, BOOL *do_cache) { -@@ -77,6 +61,22 @@ switch (wso_query(query, CS buffer, sizeof(buffer))) +@@ -77,6 +61,22 @@ } } @@ -3188,11 +3124,9 @@ index 298937c..6517f9d 100644 +lookup_module_info whoson_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; /* End of lookups/whoson.c */ -diff --git a/src/lookups/whoson.h b/src/lookups/whoson.h -deleted file mode 100644 -index 3490383..0000000 ---- a/src/lookups/whoson.h -+++ /dev/null +diff -uNr exim-4.69-old/src/lookups/whoson.h exim-4.69/src/lookups/whoson.h +--- exim-4.69-old/src/lookups/whoson.h 2007-01-08 10:50:19.000000000 +0000 ++++ exim-4.69/src/lookups/whoson.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -/* $Cambridge: exim/exim-src/src/lookups/whoson.h,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - @@ -3210,11 +3144,10 @@ index 3490383..0000000 - BOOL *); - -/* End of lookups/whoson.h */ -diff --git a/src/macros.h b/src/macros.h -index 4ca353c..a70aa85 100644 ---- a/src/macros.h -+++ b/src/macros.h -@@ -96,7 +96,7 @@ don't make the file descriptors two-way. */ +diff -uNr exim-4.69-old/src/macros.h exim-4.69/src/macros.h +--- exim-4.69-old/src/macros.h 2007-08-22 11:10:23.000000000 +0100 ++++ exim-4.69/src/macros.h 2008-08-13 15:30:05.000000000 +0100 +@@ -96,7 +96,7 @@ /* A macro to simplify testing bits in lookup types */ @@ -3223,11 +3156,10 @@ index 4ca353c..a70aa85 100644 /* Debugging control */ -diff --git a/src/search.c b/src/search.c -index 8181285..3510d33 100644 ---- a/src/search.c -+++ b/src/search.c -@@ -71,7 +71,7 @@ int top = lookup_list_count; +diff -uNr exim-4.69-old/src/search.c exim-4.69/src/search.c +--- exim-4.69-old/src/search.c 2007-08-29 15:02:22.000000000 +0100 ++++ exim-4.69/src/search.c 2008-08-13 15:30:05.000000000 +0100 +@@ -71,7 +71,7 @@ while (top > bot) { int mid = (top + bot)/2; @@ -3236,7 +3168,7 @@ index 8181285..3510d33 100644 /* If c == 0 we have matched the incoming name with the start of the search type name. However, some search types are substrings of others (e.g. nis and -@@ -81,9 +81,9 @@ while (top > bot) +@@ -81,9 +81,9 @@ are testing. By leaving c == 0 when the lengths are different, and doing a > 0 test below, this all falls out correctly. */ @@ -3248,7 +3180,7 @@ index 8181285..3510d33 100644 search_error_message = string_sprintf("lookup type \"%.*s\" is not " "available (not in the binary - check buildtime LOOKUP configuration)", len, name); -@@ -237,8 +237,8 @@ if (t->left != NULL) tidyup_subtree(t->left); +@@ -237,8 +237,8 @@ if (t->right != NULL) tidyup_subtree(t->right); if (c != NULL && c->handle != NULL && @@ -3259,7 +3191,7 @@ index 8181285..3510d33 100644 } -@@ -270,7 +270,7 @@ open_filecount = 0; +@@ -270,7 +270,7 @@ /* Call the general tidyup entry for any drivers that have one. */ for (i = 0; i < lookup_list_count; i++) @@ -3268,7 +3200,7 @@ index 8181285..3510d33 100644 if (search_reset_point != NULL) store_reset(search_reset_point); search_reset_point = NULL; -@@ -335,7 +335,7 @@ search_open(uschar *filename, int search_type, int modemask, uid_t *owners, +@@ -335,7 +335,7 @@ void *handle; tree_node *t; search_cache *c; @@ -3277,7 +3209,7 @@ index 8181285..3510d33 100644 uschar keybuffer[256]; int old_pool = store_pool; -@@ -388,7 +388,7 @@ if (lk->type == lookup_absfile && open_filecount >= lookup_open_max) +@@ -388,7 +388,7 @@ ((search_cache *)(open_bot->data.ptr))->down = NULL; else open_top = NULL; @@ -3286,7 +3218,7 @@ index 8181285..3510d33 100644 c->handle = NULL; open_filecount--; } -@@ -480,7 +480,7 @@ search_find_defer = FALSE; +@@ -480,7 +480,7 @@ DEBUG(D_lookup) debug_printf("internal_search_find: file=\"%s\"\n " "type=%s key=\"%s\"\n", filename, @@ -3295,7 +3227,7 @@ index 8181285..3510d33 100644 /* Insurance. If the keystring is empty, just fail. */ -@@ -511,7 +511,7 @@ if ((t = tree_search(c->item_cache, keystring)) == NULL) +@@ -511,7 +511,7 @@ like FAIL, except that search_find_defer is set so the caller can distinguish if necessary. */ @@ -3304,7 +3236,7 @@ index 8181285..3510d33 100644 &data, &search_error_message, &do_cache) == DEFER) { search_find_defer = TRUE; -@@ -622,7 +622,7 @@ DEBUG(D_lookup) +@@ -622,7 +622,7 @@ that opens real files. */ if (open_top != (tree_node *)handle && @@ -3313,11 +3245,10 @@ index 8181285..3510d33 100644 { search_cache *c = (search_cache *)(t->data.ptr); tree_node *up = c->up; -diff --git a/src/structs.h b/src/structs.h -index 2000e04..915e100 100644 ---- a/src/structs.h -+++ b/src/structs.h -@@ -322,34 +322,7 @@ typedef struct router_info { +diff -uNr exim-4.69-old/src/structs.h exim-4.69/src/structs.h +--- exim-4.69-old/src/structs.h 2007-06-18 14:57:50.000000000 +0100 ++++ exim-4.69/src/structs.h 2008-08-13 15:30:05.000000000 +0100 +@@ -322,34 +322,7 @@ /* Structure for holding information about a lookup type. */ @@ -3353,11 +3284,10 @@ index 2000e04..915e100 100644 /* Structure for holding information about the configured authentication -diff --git a/src/verify.c b/src/verify.c -index fcbcd04..95bcc73 100644 ---- a/src/verify.c -+++ b/src/verify.c -@@ -2219,7 +2219,7 @@ if (iplookup) +diff -uNr exim-4.69-old/src/verify.c exim-4.69/src/verify.c +--- exim-4.69-old/src/verify.c 2007-06-14 15:18:19.000000000 +0100 ++++ exim-4.69/src/verify.c 2008-08-13 15:30:05.000000000 +0100 +@@ -2219,7 +2219,7 @@ } else /* Single-key style */ { diff --git a/exim-rhl.patch b/exim-rhl.patch index a9d2ccf..8143c0d 100644 --- a/exim-rhl.patch +++ b/exim-rhl.patch @@ -1,6 +1,7 @@ ---- exim-4.32/src/configure.default.rhl 2004-04-15 04:27:01.000000000 -0400 -+++ exim-4.32/src/configure.default 2004-04-15 12:30:03.367749456 -0400 -@@ -411,7 +411,7 @@ +diff -uNr exim-4.69.orig/src/configure.default exim-4.69/src/configure.default +--- exim-4.69.orig/src/configure.default 2007-06-26 12:21:36.000000000 +0100 ++++ exim-4.69/src/configure.default 2008-08-13 14:41:14.000000000 +0100 +@@ -548,7 +548,7 @@ driver = redirect allow_fail allow_defer @@ -9,7 +10,7 @@ # user = exim file_transport = address_file pipe_transport = address_pipe -@@ -491,8 +491,8 @@ +@@ -643,8 +643,8 @@ delivery_date_add envelope_to_add return_path_add diff --git a/exim.spec b/exim.spec index b27cf3e..283985d 100644 --- a/exim.spec +++ b/exim.spec @@ -12,7 +12,7 @@ Summary: The exim mail transfer agent Name: exim Version: 4.69 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv2+ Url: http://www.exim.org/ Group: System Environment/Daemons @@ -44,7 +44,6 @@ Patch12: exim-4.33-cyrus.patch Patch13: exim-4.43-pamconfig.patch Patch14: exim-4.50-spamdconf.patch Patch15: exim-4.52-dynamic-pcre.patch -Patch17: exim-4.61-ldap-deprecated.patch Patch18: exim-4.62-dlopen-localscan.patch Patch19: exim-4.63-procmail.patch Patch20: exim-4.63-allow-filter.patch @@ -169,7 +168,6 @@ greylisting unconditional. %patch13 -p1 -b .pam %patch14 -p1 -b .spamd %patch15 -p1 -b .pcre -%patch17 -p1 -b .ldap %patch18 -p1 -b .dl %patch19 -p1 -b .procmail %patch20 -p1 -b .filter @@ -483,6 +481,9 @@ test "$1" = 0 || %{_initrddir}/clamd.exim condrestart >/dev/null || : %{_sysconfdir}/cron.daily/greylist-tidy.sh %changelog +* Wed Aug 13 2008 David Woodhouse 4.69-7 +- Rediff all patches to cope with new zero-fuzz policy + * Wed Aug 13 2008 David Woodhouse 4.69-6 - Add $RPM_OPT_FLAGS in config instead of overriding on make command line. (to fix the setting of largefile options which we were killing)