packages: postfix/postfix-config.patch, postfix/postfix-dictname.patch, pos...

adamg adamg at pld-linux.org
Mon Feb 6 00:10:33 CET 2012


Author: adamg                        Date: Sun Feb  5 23:10:33 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- updated to 2.9.0 (by shadzik)

---- Files affected:
packages/postfix:
   postfix-config.patch (1.18 -> 1.19) , postfix-dictname.patch (1.1 -> 1.2) , postfix-dynamicmaps.patch (1.17 -> 1.18) , postfix-ident.patch (1.8 -> 1.9) 

---- Diffs:

================================================================
Index: packages/postfix/postfix-config.patch
diff -u packages/postfix/postfix-config.patch:1.18 packages/postfix/postfix-config.patch:1.19
--- packages/postfix/postfix-config.patch:1.18	Mon Sep 10 16:00:47 2007
+++ packages/postfix/postfix-config.patch	Mon Feb  6 00:10:27 2012
@@ -1,16 +1,36 @@
-diff -dur postfix-2.1.3.orig/conf/main.cf postfix-2.1.3/conf/main.cf
---- postfix-2.1.3.orig/conf/main.cf	2004-06-06 23:53:58.000000000 +0200
-+++ postfix-2.1.3/conf/main.cf	2004-06-22 14:23:20.533313840 +0200
-@@ -38,7 +38,7 @@
+diff -dur postfix-2.1.3.orig/src/global/mail_params.h postfix-2.1.3/src/global/mail_params.h
+--- postfix-2.1.3.orig/src/global/mail_params.h	2004-06-22 14:20:57.890585644 +0200
++++ postfix-2.1.3/src/global/mail_params.h	2004-06-22 14:21:17.963422126 +0200
+@@ -64,7 +64,7 @@
+ extern gid_t var_owner_gid;
+ 
+ #define VAR_SGID_GROUP		"setgid_group"
+-#define DEF_SGID_GROUP		"postdrop"
++#define DEF_SGID_GROUP		"maildrop"
+ extern char *var_sgid_group;
+ extern gid_t var_sgid_gid;
+ 
+#@@ -231,7 +231,7 @@
+#   */
+# #define VAR_CONFIG_DIR		"config_directory"
+# #ifndef DEF_CONFIG_DIR
+#-#define DEF_CONFIG_DIR		"/etc/postfix"
+#+#define DEF_CONFIG_DIR		"/etc/mail"
+# #endif
+# extern char *var_config_dir;
+# 
+--- postfix-2.9.0/conf/main.cf.orig	2012-02-04 19:05:20.960656539 +0100
++++ postfix-2.9.0/conf/main.cf	2012-02-04 19:12:31.810624906 +0100
+@@ -39,7 +39,7 @@
  # daemon programs (i.e. programs listed in the master.cf file). This
  # directory must be owned by root.
  #
 -daemon_directory = /usr/libexec/postfix
 +daemon_directory = /usr/lib/postfix
  
- # QUEUE AND PROCESS OWNERSHIP
- #
-@@ -56,7 +56,7 @@
+ # The data_directory parameter specifies the location of Postfix-writable
+ # data files (caches, random numbers). This directory must be owned
+@@ -63,7 +63,7 @@
  # These rights are used in the absence of a recipient user context.
  # DO NOT SPECIFY A PRIVILEGED USER OR THE POSTFIX OWNER.
  #
@@ -19,7 +39,7 @@
  
  # INTERNET HOST AND DOMAIN NAMES
  # 
-@@ -88,7 +88,7 @@
+@@ -95,7 +95,7 @@
  # myorigin also specifies the default domain name that is appended
  # to recipient addresses that have no @domain part.
  #
@@ -28,7 +48,7 @@
  #myorigin = $mydomain
  
  # RECEIVING MAIL
-@@ -372,7 +372,7 @@
+@@ -379,7 +379,7 @@
  # "postfix reload" to eliminate the delay.
  #
  #alias_maps = dbm:/etc/aliases
@@ -37,7 +57,7 @@
  #alias_maps = hash:/etc/aliases, nis:mail.aliases
  #alias_maps = netinfo:/aliases
  
-@@ -383,7 +383,7 @@
+@@ -390,7 +390,7 @@
  #
  #alias_database = dbm:/etc/aliases
  #alias_database = dbm:/etc/mail/aliases
@@ -46,7 +66,7 @@
  #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
  
  # ADDRESS EXTENSIONS (e.g., user+foo)
-@@ -411,7 +411,7 @@
+@@ -418,7 +418,7 @@
  # UNIX-style mailboxes are kept. The default setting depends on the
  # system type.
  #
@@ -55,7 +75,7 @@
  #mail_spool_directory = /var/spool/mail
  
  # The mailbox_command parameter specifies the optional external
-@@ -433,8 +433,8 @@
+@@ -440,8 +440,8 @@
  # IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
  # ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
  #
@@ -66,11 +86,12 @@
  
  # The mailbox_transport specifies the optional transport in master.cf
  # to use after processing aliases and .forward files. This parameter
-@@ -588,44 +588,22 @@
- #	echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
- #	>$config_directory/$process_name.$process_id.log & sleep 5
+@@ -613,45 +613,24 @@
+ #	-dmS $process_name gdb $daemon_directory/$process_name
+ #	$process_id & sleep 1
  
 +biff = no
++
  # INSTALL-TIME CONFIGURATION INFORMATION
  #
  # The following parameters are used when installing a new Postfix version.
@@ -95,7 +116,8 @@
  # is not shared with other accounts, not even with the Postfix account.
  #
 -setgid_group =
--
++setgid_group = maildrop
+ 
 -# html_directory: The location of the Postfix HTML documentation.
 -#
 -html_directory =
@@ -103,54 +125,30 @@
 -# manpage_directory: The location of the Postfix on-line manual pages.
 -#
 -manpage_directory =
--
++inet_protocols = ipv4
+ 
 -# sample_directory: The location of the Postfix sample configuration files.
 -# This parameter is obsolete as of Postfix 2.1.
--#
--sample_directory =
-+setgid_group = maildrop
- 
--# readme_directory: The location of the Postfix README files.
--#
--readme_directory =
 +# The unknown_address_reject_code parameter specifies the SMTP server
 +# response when a client violates the reject_unknown_sender_domain
 +# or reject_unknown_recipient_domain restrictions.
-+#
+ #
+-sample_directory =
+-
+-# readme_directory: The location of the Postfix README files.
 +# Contrary to what Wietse thinks (450) this should be 550
-+#
+ #
+-readme_directory =
+-inet_protocols = ipv4
 +unknown_address_reject_code = 550
-+
-diff -dur postfix-2.1.3.orig/src/global/mail_params.h postfix-2.1.3/src/global/mail_params.h
---- postfix-2.1.3.orig/src/global/mail_params.h	2004-06-22 14:20:57.890585644 +0200
-+++ postfix-2.1.3/src/global/mail_params.h	2004-06-22 14:21:17.963422126 +0200
-@@ -64,7 +64,7 @@
- extern gid_t var_owner_gid;
- 
- #define VAR_SGID_GROUP		"setgid_group"
--#define DEF_SGID_GROUP		"postdrop"
-+#define DEF_SGID_GROUP		"maildrop"
- extern char *var_sgid_group;
- extern gid_t var_sgid_gid;
- 
-#@@ -231,7 +231,7 @@
-#   */
-# #define VAR_CONFIG_DIR		"config_directory"
-# #ifndef DEF_CONFIG_DIR
-#-#define DEF_CONFIG_DIR		"/etc/postfix"
-#+#define DEF_CONFIG_DIR		"/etc/mail"
-# #endif
-# extern char *var_config_dir;
-# 
-diff -dur postfix-2.1.3.orig/src/util/sys_defs.h postfix-2.1.3/src/util/sys_defs.h
---- postfix-2.1.3.orig/src/util/sys_defs.h	2004-06-22 14:20:58.094573821 +0200
-+++ postfix-2.1.3/src/util/sys_defs.h	2004-06-22 14:21:17.966421952 +0200
-@@ -550,7 +550,7 @@
- #define HAS_FSYNC
- #define HAS_DB
- #define DEF_DB_TYPE	"hash"
+--- postfix-2.9.0/src/util/sys_defs.h.orig	2012-02-04 19:05:23.000000000 +0100
++++ postfix-2.9.0/src/util/sys_defs.h	2012-02-04 19:15:31.153933031 +0100
+@@ -54,7 +54,7 @@
+ #define ALIAS_DB_MAP   "hash:/etc/mail/aliases"	/* OpenBSD 2.7 */
+ #endif
+ #ifndef ALIAS_DB_MAP
 -#define ALIAS_DB_MAP	"hash:/etc/aliases"
 +#define ALIAS_DB_MAP	"hash:/etc/mail/aliases"
- #define HAS_NIS
+ #endif
  #define GETTIMEOFDAY(t)	gettimeofday(t,(struct timezone *) 0)
  #define ROOT_PATH	"/bin:/usr/bin:/sbin:/usr/sbin"

================================================================
Index: packages/postfix/postfix-dictname.patch
diff -u packages/postfix/postfix-dictname.patch:1.1 packages/postfix/postfix-dictname.patch:1.2
--- packages/postfix/postfix-dictname.patch:1.1	Tue Jul 25 12:41:31 2006
+++ packages/postfix/postfix-dictname.patch	Mon Feb  6 00:10:28 2012
@@ -1,11 +1,11 @@
---- postfix-2.3.0/src/util/dict_open.c~	2006-07-25 13:36:17.245609587 +0300
-+++ postfix-2.3.0/src/util/dict_open.c	2006-07-25 13:38:52.429059090 +0300
-@@ -327,7 +327,7 @@
- 	lib=vstring_alloc(1);
- 	vstring_sprintf(lib,dl->soname,dict_type);
- 	if (stat(vstring_str(lib),&st) < 0) {
--	    msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-%s package installed?)",
-+	    msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-dict-%s package installed?)",
- 		myname, dict_type, vstring_str(lib), dict_type);
- 	}
- 	func=vstring_alloc(1);
+--- postfix-2.9.0/src/util/dict_open.c.orig	2012-02-04 19:42:26.000000000 +0100
++++ postfix-2.9.0/src/util/dict_open.c	2012-02-04 19:43:42.937093038 +0100
+@@ -365,7 +365,7 @@
+        lib=vstring_alloc(1);
+        vstring_sprintf(lib,dl->soname,dict_type);
+        if (stat(vstring_str(lib),&st) < 0) {
+-           msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-%s package installed?)",
++           msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-dict-%s package installed?)",
+                myname, dict_type, vstring_str(lib), dict_type);
+        }
+        func=vstring_alloc(1);

================================================================
Index: packages/postfix/postfix-dynamicmaps.patch
diff -u packages/postfix/postfix-dynamicmaps.patch:1.17 packages/postfix/postfix-dynamicmaps.patch:1.18
--- packages/postfix/postfix-dynamicmaps.patch:1.17	Tue May 17 14:53:28 2011
+++ packages/postfix/postfix-dynamicmaps.patch	Mon Feb  6 00:10:28 2012
@@ -91,164 +91,6 @@
   /*
    * High-level interface, with logical dictionary names.
    */
-diff -durN postfix-2.1.3.orig/src/util/dict_open.c postfix-2.1.3/src/util/dict_open.c
---- postfix-2.1.3.orig/src/util/dict_open.c	2004-06-22 15:38:57.069468247 +0200
-+++ postfix-2.1.3/src/util/dict_open.c	2004-06-22 15:39:24.254859679 +0200
-@@ -158,6 +158,9 @@
- #include <strings.h>
- #endif
- 
-+#include <sys/stat.h>
-+#include <unistd.h>
-+
- /* Utility library. */
- 
- #include <argv.h>
-@@ -181,6 +184,14 @@
- #include <split_at.h>
- #include <htable.h>
- 
-+#ifndef NO_DYNAMIC_MAPS
-+#include <load_lib.h>
-+#include <vstring.h>
-+#include <vstream.h>
-+#include <vstring_vstream.h>
-+#include <mvect.h>
-+#endif
-+
-  /*
-   * lookup table for available map types.
-   */
-@@ -212,9 +223,11 @@
- #ifdef HAS_NETINFO
-     DICT_TYPE_NETINFO, dict_ni_open,
- #endif
-+#ifndef MAX_DYNAMIC_MAPS
- #ifdef HAS_PCRE
-     DICT_TYPE_PCRE, dict_pcre_open,
- #endif
-+#endif /* MAX_DYNAMIC_MAPS */
- #ifdef HAS_POSIX_REGEXP
-     DICT_TYPE_REGEXP, dict_regexp_open,
- #endif
-@@ -269,8 +282,38 @@
- 
-     if (dict_open_hash == 0)
- 	dict_open_init();
--    if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0)
--	msg_fatal("unsupported dictionary type: %s", dict_type);
-+    if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) {
-+#ifndef NO_DYNAMIC_MAPS
-+	struct stat st;
-+	VSTRING *lib, *func;
-+	LIB_FN fn[2];
-+	DICT *(*open) (const char *, int, int);
-+	DLINFO *dl=dict_open_dlfind(dict_type);
-+	if (!dl)
-+#endif
-+	    msg_fatal("%s: unsupported dictionary type: %s", myname, dict_type);
-+#ifndef NO_DYNAMIC_MAPS
-+	lib=vstring_alloc(1);
-+	vstring_sprintf(lib,dl->soname,dict_type);
-+	if (stat(vstring_str(lib),&st) < 0) {
-+	    msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-%s package installed?)",
-+		myname, dict_type, vstring_str(lib), dict_type);
-+	}
-+	func=vstring_alloc(1);
-+	vstring_sprintf(func,dl->openfunc,dict_type);
-+	fn[0].name = vstring_str(func);
-+	fn[0].ptr  = (void**)&open;
-+	fn[1].name = NULL;
-+	load_library_symbols(vstring_str(lib), fn, NULL);
-+	dict_open_register(dict_type, open);
-+	dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type);
-+	vstring_free(lib);
-+	vstring_free(func);
-+#endif
-+    }
-+    if (msg_verbose>1) {
-+	msg_info("%s: calling %s open routine",myname,dict_type);
-+    }
-     if ((dict = dp->open(dict_name, open_flags, dict_flags)) == 0)
- 	msg_fatal("opening %s:%s %m", dict_type, dict_name);
-     if (msg_verbose)
-@@ -317,6 +360,76 @@
-     return mapnames;
- }
- 
-+#ifndef NO_DYNAMIC_MAPS
-+static DLINFO  *dict_dlinfo;
-+
-+void dict_open_dlinfo(const char *path)
-+{
-+    char    *myname="dict_open_dlinfo";
-+    VSTREAM *conf_fp=vstream_fopen(path,O_RDONLY,0);
-+    VSTRING *buf = vstring_alloc(100);
-+    char    *cp;
-+    ARGV    *argv;
-+    MVECT    vector;
-+    int      nelm=0;
-+    int      linenum=0;
-+
-+    dict_dlinfo=(DLINFO*)mvect_alloc(&vector,sizeof(DLINFO),3,NULL,NULL);
-+
-+    if (!conf_fp) {
-+	msg_warn("%s: cannot open %s.  No dynamic maps will be allowed.",
-+		myname, path);
-+    } else {
-+	while (vstring_get_nonl(buf,conf_fp) != VSTREAM_EOF) {
-+	    cp = vstring_str(buf);
-+	    linenum++;
-+	    if (*cp == '#' || *cp == '\0')
-+		continue;
-+	    argv = argv_split(cp, " \t");
-+	    if (argv->argc != 3) {
-+		msg_fatal("%s: Expected \"pattern .so-name function\" at line %d",
-+			  myname, linenum);
-+	    }
-+	    if (argv->argv[1][0] != '/') {
-+		msg_fatal("%s: .so name must begin with a \"/\" at line %d",
-+			  myname, linenum);
-+	    }
-+	    if (nelm >= vector.nelm) {
-+		dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+3);
-+	    }
-+	    dict_dlinfo[nelm].pattern  = mystrdup(argv->argv[0]);
-+	    dict_dlinfo[nelm].soname   = mystrdup(argv->argv[1]);
-+	    dict_dlinfo[nelm].openfunc = mystrdup(argv->argv[2]);
-+	    nelm++;
-+	    argv_free(argv);
-+	}
-+    }
-+    if (nelm >= vector.nelm) {
-+	dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+1);
-+    }
-+    dict_dlinfo[nelm].pattern  = NULL;
-+    dict_dlinfo[nelm].soname   = NULL;
-+    dict_dlinfo[nelm].openfunc = NULL;
-+    if (conf_fp)
-+	vstream_fclose(conf_fp);
-+    vstring_free(buf);
-+}
-+
-+DLINFO *dict_open_dlfind(const char *type)
-+{
-+    DLINFO *dp;
-+
-+    if (!dict_dlinfo)
-+	return NULL;
-+
-+    for (dp=dict_dlinfo; dp->pattern; dp++) {
-+	if (strcmp(dp->pattern,type)==0 || strcmp(dp->pattern,"*")==0)
-+	    return dp;
-+    }
-+    return NULL;
-+}
-+#endif /* !NO_DYNAMIC_MAPS */
-+
- #ifdef TEST
- 
-  /*
 diff -durN postfix-2.1.3.orig/src/util/load_lib.c postfix-2.1.3/src/util/load_lib.c
 --- postfix-2.1.3.orig/src/util/load_lib.c	1970-01-01 01:00:00.000000000 +0100
 +++ postfix-2.1.3/src/util/load_lib.c	2004-06-22 15:39:24.257859501 +0200
@@ -538,8 +380,241 @@
  #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
  #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
  #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
---- postfix-2.8.3/src/util/Makefile.in~	2011-05-17 13:59:05.580000068 +0200
-+++ postfix-2.8.3/src/util/Makefile.in	2011-05-17 14:10:13.870000068 +0200
+--- postfix-2.8.3/src/global/Makefile.in~	2011-05-17 14:11:58.243333401 +0200
++++ postfix-2.8.3/src/global/Makefile.in	2011-05-17 14:27:36.783333538 +0200
+@@ -35,7 +35,7 @@
+ 	canon_addr.o cfg_parser.o cleanup_strerror.o cleanup_strflags.o \
+ 	clnt_stream.o conv_time.o db_common.o debug_peer.o debug_process.o \
+ 	defer.o deliver_completed.o deliver_flock.o deliver_pass.o \
+-	deliver_request.o dict_ldap.o dict_mysql.o dict_pgsql.o \
++	deliver_request.o \
+ 	dict_proxy.o dict_sqlite.o domain_list.o dot_lockfile.o dot_lockfile_as.o \
+ 	dsb_scan.o dsn.o dsn_buf.o dsn_mask.o dsn_print.o dsn_util.o \
+ 	ehlo_mask.o ext_prop.o file_id.o flush_clnt.o header_opts.o \
+@@ -106,8 +106,12 @@
+ LIB_DIR	= ../../lib
+ INC_DIR	= ../../include
+ MAKES	=
++LDAPSO  = dict_ldap.so
++MYSQLSO = dict_mysql.so
++PGSQLSO	= dict_pgsql.so
++SQLITESO= dict_sqlite.so
+ 
+-.c.o:;	$(CC) $(CFLAGS) -c $*.c
++.c.o:; $(CC) -fPIC $(CFLAGS) -c $*.c
+ 
+ all: $(LIB)
+ 
+@@ -119,14 +123,36 @@
+ test:	$(TESTPROG)
+ 
+ $(LIB):	$(OBJS)
+-	$(AR) $(ARFL) $(LIB) $?
+-	$(RANLIB) $(LIB)
++	gcc -shared -Wl,-soname,libpostfix-global.so.1 -o $(LIB) $(OBJS)
++
++$(LDAPSO): dict_ldap.o $(LIB)
++	gcc -shared -Wl,-soname,dict_ldap.so -o $@ $? -lldap -llber -L../../lib -lutil -L. -lglobal
++
++$(MYSQLSO): dict_mysql.o $(LIB)
++	gcc -shared -Wl,-soname,dict_mysql.so -o $@ $? -lmysqlclient -L../../lib -lutil -L. -lglobal
++
++$(PGSQLSO): dict_pgsql.o $(LIB)
++	gcc -shared -Wl,-soname,dict_pgsql.so -o $@ $? -lpq -L../../lib -lutil -L. -lglobal
++
++$(SQLITESO): dict_sqlite.o $(LIB)
++	gcc -shared -Wl,-soname,dict_sqlite.so -o $@ $? -lsqlite3 -L../../lib -lutil -L. -lglobal
+ 
+ $(LIB_DIR)/$(LIB): $(LIB)
+ 	cp $(LIB) $(LIB_DIR)
+-	$(RANLIB) $(LIB_DIR)/$(LIB)
+ 
+-update: $(LIB_DIR)/$(LIB) $(HDRS)
++$(LIB_DIR)/$(LDAPSO): $(LDAPSO)
++	cp $(LDAPSO) $(LIB_DIR)
++
++$(LIB_DIR)/$(MYSQLSO): $(MYSQLSO)
++	cp $(MYSQLSO) $(LIB_DIR)
++
++$(LIB_DIR)/$(PGSQLSO): $(PGSQLSO)
++	cp $(PGSQLSO) $(LIB_DIR)
++
++$(LIB_DIR)/$(SQLITESO): $(SQLITESO)
++	cp $(SQLITESO) $(LIB_DIR)
++
++update: $(LIB_DIR)/$(LIB) $(LIB_DIR)/${LDAPSO} $(LIB_DIR)/${MYSQLSO} $(LIB_DIR)/${PGSQLSO} $(LIB_DIR)/${SQLITESO} $(HDRS)
+ 	-for i in $(HDRS); \
+ 	do \
+ 	  cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \
+@@ -497,7 +523,7 @@
+ 	lint $(DEFS) $(SRCS) $(LINTFIX)
+ 
+ clean:
+-	rm -f *.o $(LIB) *core $(TESTPROG) junk
++	rm -f *.o $(LIB) $(LDAPSO) $(MYSQLSO) $(PGSQLSO) $(SQLITESO) *core $(TESTPROG) junk
+ 	rm -rf printfck
+ 
+ tidy:	clean
+--- postfix-2.9.0/src/util/dict_open.c.orig	2012-02-04 19:16:54.231837262 +0100
++++ postfix-2.9.0/src/util/dict_open.c	2012-02-04 19:27:54.884124599 +0100
+@@ -213,6 +213,9 @@
+ #include <strings.h>
+ #endif
+ 
++#include <sys/stat.h>
++#include <unistd.h>
++
+ /* Utility library. */
+ 
+ #include <argv.h>
+@@ -241,6 +244,14 @@
+ #include <htable.h>
+ #include <myflock.h>
+ 
++#ifndef NO_DYNAMIC_MAPS
++#include <load_lib.h>
++#include <vstring.h>
++#include <vstream.h>
++#include <vstring_vstream.h>
++#include <mvect.h>
++#endif
++
+  /*
+   * lookup table for available map types.
+   */
+@@ -276,9 +287,11 @@
+ #ifdef HAS_NETINFO
+     DICT_TYPE_NETINFO, dict_ni_open,
+ #endif
++#ifndef MAX_DYNAMIC_MAPS
+ #ifdef HAS_PCRE
+     DICT_TYPE_PCRE, dict_pcre_open,
+ #endif
++#endif /* MAX_DYNAMIC_MAPS */
+ #ifdef HAS_POSIX_REGEXP
+     DICT_TYPE_REGEXP, dict_regexp_open,
+ #endif
+@@ -338,9 +351,38 @@
+ 		  dict_type, dict_name);
+     if (dict_open_hash == 0)
+ 	dict_open_init();
+-    if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0)
+-	return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags,
+-			     "unsupported dictionary type: %s", dict_type));
++    if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) {
++#ifndef NO_DYNAMIC_MAPS
++       struct stat st;
++       VSTRING *lib, *func;
++       LIB_FN fn[2];
++       DICT *(*open) (const char *, int, int);
++       DLINFO *dl=dict_open_dlfind(dict_type);
++       if (!dl)
++#endif
++           msg_fatal("%s: unsupported dictionary type: %s", myname, dict_type);
++#ifndef NO_DYNAMIC_MAPS
++       lib=vstring_alloc(1);
++       vstring_sprintf(lib,dl->soname,dict_type);
++       if (stat(vstring_str(lib),&st) < 0) {
++           msg_fatal("%s: unsupported dictionary type: %s (%s not found.  Is the postfix-%s package installed?)",
++               myname, dict_type, vstring_str(lib), dict_type);
++       }
++       func=vstring_alloc(1);
++       vstring_sprintf(func,dl->openfunc,dict_type);
++       fn[0].name = vstring_str(func);
++       fn[0].ptr  = (void**)&open;
++       fn[1].name = NULL;
++       load_library_symbols(vstring_str(lib), fn, NULL);
++       dict_open_register(dict_type, open);
++       dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type);
++       vstring_free(lib);
++       vstring_free(func);
++#endif
++    }
++    if (msg_verbose>1) {
++       msg_info("%s: calling %s open routine",myname,dict_type);
++    }
+     if ((dict = dp->open(dict_name, open_flags, dict_flags)) == 0)
+ 	return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags,
+ 			    "cannot open %s:%s: %m", dict_type, dict_name));
+@@ -407,6 +449,76 @@
+     return mapnames;
+ }
+ 
++#ifndef NO_DYNAMIC_MAPS
++static DLINFO  *dict_dlinfo;
++
++void dict_open_dlinfo(const char *path)
++{
++    char    *myname="dict_open_dlinfo";
++    VSTREAM *conf_fp=vstream_fopen(path,O_RDONLY,0);
++    VSTRING *buf = vstring_alloc(100);
++    char    *cp;
++    ARGV    *argv;
++    MVECT    vector;
++    int      nelm=0;
++    int      linenum=0;
++
++    dict_dlinfo=(DLINFO*)mvect_alloc(&vector,sizeof(DLINFO),3,NULL,NULL);
++
++    if (!conf_fp) {
++	msg_warn("%s: cannot open %s.  No dynamic maps will be allowed.",
++		myname, path);
++    } else {
++	while (vstring_get_nonl(buf,conf_fp) != VSTREAM_EOF) {
++	    cp = vstring_str(buf);
++	    linenum++;
++	    if (*cp == '#' || *cp == '\0')
++		continue;
++	    argv = argv_split(cp, " \t");
++	    if (argv->argc != 3) {
++		msg_fatal("%s: Expected \"pattern .so-name function\" at line %d",
++			  myname, linenum);
++	    }
++	    if (argv->argv[1][0] != '/') {
++		msg_fatal("%s: .so name must begin with a \"/\" at line %d",
++			  myname, linenum);
++	    }
++	    if (nelm >= vector.nelm) {
++		dict_dlinfo=(DLINFO*)mvect_realloc(&vector,vector.nelm+3);
++	    }
++	    dict_dlinfo[nelm].pattern  = mystrdup(argv->argv[0]);
++	    dict_dlinfo[nelm].soname   = mystrdup(argv->argv[1]);
++	    dict_dlinfo[nelm].openfunc = mystrdup(argv->argv[2]);
++	    nelm++;
++	    argv_free(argv);
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postfix/postfix-config.patch?r1=1.18&r2=1.19&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postfix/postfix-dictname.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postfix/postfix-dynamicmaps.patch?r1=1.17&r2=1.18&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/postfix/postfix-ident.patch?r1=1.8&r2=1.9&f=u



More information about the pld-cvs-commit mailing list