        This is against the ZMailer CVS repository at 18-Jan-2001 7 PM
        local time at Helsinki (UTC+2h).

        The intention has been to *remove* implicite WHITESPACE (IFS)
        tokenization when associated with unquoted string expansions
        at command parameters.



Index: libsh/builtins.c
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/libsh/builtins.c,v
retrieving revision 1.22
diff -u -r1.22 builtins.c
--- libsh/builtins.c	2000/03/28 20:47:41	1.22
+++ libsh/builtins.c	2001/01/18 17:28:13
@@ -59,6 +59,7 @@
 static conscell *sh_last	CSARGS2;
 static conscell *sh_lappend     CSARGS2;
 static conscell *sh_lreplace    CSARGS2;
+static conscell *sh_ifssplit    CSARGS2;
 extern conscell *sh_glob	CSARGS2; /* expand.c */
 
 #define CSARGV2 __((int argc, const char *argv[]))
@@ -95,6 +96,7 @@
 {	"elements",	NULL,	sh_elements,	NULL,	SH_ARGV		},
 {	"get",		NULL,	sh_get,		NULL,	SH_ARGV		},
 {	"length",	NULL,	sh_length,	NULL,	SH_ARGV		},
+{	"ifssplit",	NULL,	sh_ifssplit,	NULL,	SH_ARGV		},
 {	"[",		sh_test,	NULL,	NULL,	0		},
 {	"test",		sh_test,	NULL,	NULL,	0		},
 {	"echo",		sh_echo,	NULL,	NULL,	0		},
@@ -451,6 +453,7 @@
 	return d;
 }
 
+/* This is NUMBER OF ELEMENTS in a chain! */
 static conscell *
 sh_length(avl, il)
 	conscell *avl, *il;
@@ -458,7 +461,8 @@
 	char buf[10];
 	int len = 0;
 
-	if ((il = cdar(avl)) && LIST(il)) {
+	il = cdar(avl);
+	if (il && LIST(il)) {
 		for (il = car(il); il != NULL; il = cdr(il))
 			++len;
 	}
@@ -469,6 +473,58 @@
 	return avl;
 }
 
+/* This splits incoming string at WHITESPACEs to a list of strings */
+
+static conscell *
+sh_ifssplit(avl, il)
+	conscell *avl, *il;
+{
+	int len, l;
+	conscell *tmp, *reply, *t;
+	const char *p, *p0;
+	GCVARS1;
+
+	if (ifs == NULL)
+		ifs_flush();
+
+	il = cdar(avl);
+	/* 'il' is supposedly a single string */
+
+	if (!il || !STRING(il)) return il;
+	p0  = il->cstring;
+	len = il->slen;
+	if (!p0) return il;
+
+
+	reply = t = NULL;
+	GCPRO1(reply);
+
+	for (;len > 0; ++p0, --len) {
+
+	  if (WHITESPACE(*p0)) continue;
+	  p = p0;
+	  while (len > 0 && !WHITESPACE(*p)) ++p, --len;
+
+	  l = p - p0; /* Will always be at least 1 ! */
+
+	  tmp = newstring(dupnstr(p0, l), l);
+	  tmp->flags |= QUOTEDSTRING|ELEMENT;
+
+	  p0 = p;
+
+	  if (!t)
+	    reply = t = tmp;
+	  else {
+	    cdr(t) = tmp;
+	    t = tmp;
+	  }
+
+	}
+
+	UNGCPRO1;
+	return reply;
+}
+
 /* returns -- return ALWAYS a string [mea] */
 conscell *
 sh_returns(avl, il, statusp)
@@ -749,7 +805,7 @@
 	}
 	/* if (buf[0] == '\0') return 1; */
 	if (eoinp) return 1;
-eoinput:
+/* eoinput: */
 	while (argc-- > 0) v_set(*argv++, "");
 	return 0;
 }
Index: libsh/variables.c
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/libsh/variables.c,v
retrieving revision 1.6
diff -u -r1.6 variables.c
--- libsh/variables.c	1999/05/30 04:05:58	1.6
+++ libsh/variables.c	2001/01/18 15:31:51
@@ -150,6 +150,9 @@
  */
 
 
+#define ALWAYS_QUOTE_EXPANDS
+
+
 conscell *
 v_expand(s, caller, retcode)
 	const char *s;			/* variable name */
@@ -160,6 +163,7 @@
 	register int n;
 	register char *cp;
 	char np[CHARSETSIZE+1]; /* each possible option, plus last NUL */
+	int noquote = 0;
 
 	GCVARS3;
 	GCPRO3(d,l,tmp);
@@ -172,6 +176,7 @@
 	 */
 	switch (*s) {
 	case '@':
+		noquote = NOQUOTEIFQUOTED;
 	case '*':
 		if (caller == NULL || cdar(caller->argv) == NULL) {
 			goto end_v_expand;
@@ -180,9 +185,13 @@
 		for (l = d; l != NULL && cdr(l) != NULL ; l = cdr(l)) {
 			tmp = conststring(" ",1);
 			cdr(tmp) = cdr(l);
-			l = cdr(l) = tmp;
-			if (*s == '@')
-				tmp->flags |= NOQUOTEIFQUOTED;
+			cdr(l)   = tmp;
+			l        = cdr(l);
+			tmp->flags |= noquote;
+#ifdef ALWAYS_QUOTE_EXPANDS
+			if (!noquote)
+			  tmp->flags |= QUOTEDSTRING;
+#endif
 		}
 		/* grindef("ARGW = ", ncons(d)); */
 		goto end_v_expand;
@@ -198,6 +207,9 @@
 		}
 		d = copycell(d);
 		cdr(d) = NULL;
+#ifdef ALWAYS_QUOTE_EXPANDS
+		d->flags |= QUOTEDSTRING;
+#endif
 		/* d = s_copy_tree(d); */ /* XXX: Needed ? */
 		goto end_v_expand;
 
@@ -260,6 +272,10 @@
 	if ((d = v_find(s)) != NULL) {
 		d = copycell(cdr(d));
 		cdr(d) = NULL;
+#ifdef ALWAYS_QUOTE_EXPANDS
+		if (STRING(d))
+		  d->flags |= QUOTEDSTRING;
+#endif
 	}
  end_v_expand:
 
Index: proto/Makefile.in
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/Makefile.in,v
retrieving revision 1.41
diff -u -r1.41 Makefile.in
--- proto/Makefile.in	2000/10/20 17:07:30	1.41
+++ proto/Makefile.in	2001/01/17 22:50:04
@@ -220,7 +220,8 @@
 clean:	FRC
 	rm -f ./+* *~
 distclean: clean
-	rm -f Makefile sm.conf zmailer.sh \
-		newfqdnaliases newaliases newdb mailrm.sh \
-		scheduler.conf post-install.sh smtp-tls.conf
+	rm -f Makefile sm.conf zmailer.sh
+	rm -f newfqdnaliases newaliases newdb mailrm.sh
+	rm -f scheduler.conf post-install.sh smtp-tls.conf
+	rm -f smtpserver.conf
 depend:
Index: proto/cf/SMTP+UUCP.cf.in
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/SMTP+UUCP.cf.in,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 SMTP+UUCP.cf.in
--- proto/cf/SMTP+UUCP.cf.in	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/SMTP+UUCP.cf.in	2001/01/18 14:35:28
@@ -16,8 +16,9 @@
 squirrel badheader
 
 # The transport preference order
+# This is a LIST of protocols
 
-protocols='routes smtp uucp'
+protocols=(routes smtp uucp)
 
 # Will the  MAILVAR/lists/listname  show out sender identity as
 # either:  owner-listname, or:  listname-owner ?
@@ -39,8 +40,9 @@
 # We may want .forward and mailing list files to be private, i.e., we ignore
 # the current privileges when checking the privileges of such files.
 # Don't add 'include' to this list, since anyone can :include: any file.
+# This is a LIST of keywords
 
-private='.forward maillist'
+private=('.forward' 'maillist')
 
 # Set up the dependency checking
 
@@ -55,7 +57,7 @@
 # Load the databases so they and the variables defined (e.g. network-specific
 # node names for this host) can be used in the site specific configuration.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	test -f $MAILSHARE/cf/i-${method}.cf && . i-${method}.cf
 done
@@ -109,7 +111,7 @@
 . rrouter.cf
 . crossbar.cf
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	. p-${method}.cf
 done
Index: proto/cf/SMTP.cf.in
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/SMTP.cf.in,v
retrieving revision 1.1
diff -u -r1.1 SMTP.cf.in
--- proto/cf/SMTP.cf.in	1998/06/01 09:37:16	1.1
+++ proto/cf/SMTP.cf.in	2001/01/18 14:34:32
@@ -16,8 +16,9 @@
 squirrel badheader
 
 # The transport preference order
+# This is a LIST of protocols
 
-protocols='routes smtp'
+protocols=('routes' 'smtp')
 
 # Will the  MAILVAR/lists/listname  show out sender identity as
 # either:  owner-listname, or:  listname-owner ?
@@ -39,8 +40,9 @@
 # We may want .forward and mailing list files to be private, i.e., we ignore
 # the current privileges when checking the privileges of such files.
 # Don't add 'include' to this list, since anyone can :include: any file.
+# This is a LIST of keywords
 
-private='.forward maillist'
+private=('.forward' 'maillist')
 
 # Set up the dependency checking
 
@@ -55,9 +57,9 @@
 # Load the databases so they and the variables defined (e.g. network-specific
 # node names for this host) can be used in the site specific configuration.
 
-for method in $protocols
+for method in ($elements $protocols)
 do
-	test -f $MAILSHARE/cf/i-${method}.cf && . i-${method}.cf
+	test -f "$MAILSHARE/cf/i-${method}.cf" && . i-${method}.cf
 done
 
 mailconf () {
Index: proto/cf/TELE-FI.cf.in
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/TELE-FI.cf.in,v
retrieving revision 1.2
diff -u -r1.2 TELE-FI.cf.in
--- proto/cf/TELE-FI.cf.in	1998/02/15 04:32:08	1.2
+++ proto/cf/TELE-FI.cf.in	2001/01/18 14:36:05
@@ -17,7 +17,7 @@
 
 # The transport preference order
 
-protocols='routes smtp uucp usenet'
+protocols=(routes smtp uucp usenet)
 
 # Will the  MAILVAR/lists/listname  show out sender identity as
 # either:  owner-listname, or:  listname-owner ?
@@ -40,7 +40,7 @@
 # the current privileges when checking the privileges of such files.
 # Don't add 'include' to this list, since anyone can :include: any file.
 
-private='.forward maillist'
+private=(.forward maillist)
 
 # Set up the dependency checking
 
@@ -55,7 +55,7 @@
 # Load the databases so they and the variables defined (e.g. network-specific
 # node names for this host) can be used in the site specific configuration.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	test -f $MAILSHARE/cf/i-${method}.cf && . i-${method}.cf
 done
@@ -109,7 +109,7 @@
 . rrouter.cf
 . crossbar.cf
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	. p-${method}.cf
 done
Index: proto/cf/UTAI.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/UTAI.cf,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 UTAI.cf
--- proto/cf/UTAI.cf	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/UTAI.cf	2001/01/18 15:26:36
@@ -35,7 +35,7 @@
 
 # The transport preference order
 
-protocols='routes smtp ean uucp usenet'
+protocols=(routes smtp ean uucp usenet)
 
 #| The list of protocols given here are exactly the list that will be
 #| supported in the configuration being loaded, and in the specified
@@ -48,7 +48,7 @@
 # the current privileges when checking the privileges of such files.
 # Don't add 'include' to this list, since anyone can :include: any file.
 
-#private='.forward maillist'
+#private=(.forward maillist)
 
 #| This variable is used in the alias expansion (in the routeuser
 #| function) to determine how to use the privilege level associated with
@@ -78,7 +78,7 @@
 #| can be used to declare and check dependencies between modules
 #| (configuration files).
 
-require siteinfo router crossbar process server
+require siteinfo rrouter crossbar process server
 
 #| The modules we require here are the configuration files whose contents
 #| are essential to the proper functioning of the router.
@@ -102,7 +102,7 @@
 # Load the databases so they and the variables defined (e.g. network-specific
 # node names for this host) can be used in the site specific configuration.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	test -f $MAILSHARE/cf/i-${method}.cf && . i-${method}.cf
 done
@@ -176,7 +176,7 @@
 #| and rewrite addresses.  They use other manipulation functions that are
 #| specific to the varius message transfer protocols.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	. p-${method}.cf
 done
Index: proto/cf/UTGPU.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/UTGPU.cf,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 UTGPU.cf
--- proto/cf/UTGPU.cf	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/UTGPU.cf	2001/01/18 15:26:44
@@ -36,7 +36,7 @@
 # Set up the dependency checking
 
 . consist.cf
-require siteinfo router crossbar process server
+require siteinfo rrouter crossbar process server
 
 # The following are standard setup files and must be loaded in this order
 
Index: proto/cf/UTdefault.cf.in
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/UTdefault.cf.in,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 UTdefault.cf.in
--- proto/cf/UTdefault.cf.in	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/UTdefault.cf.in	2001/01/18 14:38:00
@@ -33,7 +33,7 @@
 
 # The transport preference order
 
-protocols='routes smtp uucp'
+protocols=(routes smtp uucp)
 
 #| The list of protocols given here are exactly the list that will be
 #| supported in the configuration being loaded, and in the specified
@@ -47,7 +47,7 @@
 # checking the privileges of such files.  Don't add 'include' to this list,
 # since anyone can :include: any file.
 
-#private='.forward maillist'
+#private=('.forward' maillist)
 
 #| This variable is used in the alias expansion (in the routeuser
 #| function) to determine how to use the privilege level associated with
@@ -95,7 +95,7 @@
 # Load the databases so they and the variables defined (e.g. network-specific
 # node names for this host) can be used in the site specific configuration.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	test -f $MAILSHARE/cf/i-${method}.cf && . i-${method}.cf
 done
@@ -169,7 +169,7 @@
 #| and rewrite addresses.  They use other manipulation functions that are
 #| specific to the varius message transfer protocols.
 
-for method in $protocols
+for method in $(elements $protocols)
 do
 	. p-${method}.cf
 done
Index: proto/cf/aliases-new.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/aliases-new.cf,v
retrieving revision 1.14
diff -u -r1.14 aliases-new.cf
--- proto/cf/aliases-new.cf	2000/10/10 21:00:58	1.14
+++ proto/cf/aliases-new.cf	2001/01/18 14:47:20
@@ -21,7 +21,7 @@
 # some other value:
 
 if [ -z "$localprotocols" ]; then
-	localprotocols="include aliases mboxmap lists uid_trap punthost local"
+	localprotocols=(include aliases mboxmap lists uid_trap punthost local)
 fi
 
 #
@@ -336,7 +336,7 @@
 		;;
 	tfiss
 
-	for func in $localprotocols; do
+	for func in ($elements $localprotocols); do
 	    if [ -z "$didexpand" ]; then
 		a=$(localexpand "$func" "$user" "$host" "$attr" "$key") &&
 			return $a
@@ -780,7 +780,7 @@
 
 getpriv (maxperm, priv, file, type) {
 #echo "getpriv($maxperm, $priv, $file, $type)" > /dev/tty
-	for ptype in $private
+	for ptype in $(elements $private)
 	do
 		if [ $type = $ptype ]; then
 			filepriv -M $maxperm "$file"
Index: proto/cf/aliases.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/aliases.cf,v
retrieving revision 1.38
diff -u -r1.38 aliases.cf
--- proto/cf/aliases.cf	2000/12/30 12:34:40	1.38
+++ proto/cf/aliases.cf	2001/01/18 16:17:23
@@ -215,9 +215,11 @@
 	local plustail2 forward priv hashomedir type
 
 	plustail2=""
-	attr="$(attributes $quad)"
-	chan="$(channel $quad)"
-	host="$(host $quad)"
+
+	attr=$(attributes $quad)
+	chan=$(channel $quad)
+	host=$(host $quad)
+	user=$(user $quad)
 	
 	# For the expansions control tag we can use only
 	# the 'channel',  and the 'username' strings, we CAN'T
@@ -225,13 +227,12 @@
 	# will have subsequently DIFFERENT values for it.
 	# Use of 'host' field means we can't use 
 
-	user="$(user $quad)"
 	key="$user"
 
 	type="$(get $attr type)"
 	sender="$(get $attr sender)"
 
-	case "$type" in
+	case $type in
 	sender)
 		a=$(userdb "$user:mailname") \
 		  || return ((("$chan" "$host" "$user$plustail$domain" $attr)))
@@ -245,22 +246,20 @@
 
 	al=()
 
-	case "$(channel $quad)" in
-	#smtp)	mxh=$(mxhosts $(host $quad).)
-	#	user="$(user $quad)"
-	#	attr="$(attributes $quad)"
+	case $chan in
+	#smtp)	mxh=$(mxhosts $host.)
 	#	case $#mxh in
 	#	[1-9]*)	# make the XOR list
-	#		for host in $(elements $mxh)
+	#		for hostx in $(elements $mxh)
 	#		do
 	#			case $#al in
 	#			0)	al=$(rrouter "$address" "$address" $attr "" "") ;;
 	#			*)	set $(cdr $(last $al)) \
-	#				    (((smtp "$host" "$user" $attr))) ;;
+	#				    (((smtp $hostx $user $attr))) ;;
 	#			esac
 	#		done
 	#		return $al
-	#		#a=((x) (smtp '$x' "$(user $quad)" $attr))
+	#		#a=((x) (smtp '$x' $user $attr))
 	#		#mapcar $a $mxhosts
 	#		;;
 	#	esac
@@ -270,15 +269,15 @@
 		;;
 	esac
 
-	user="$(condquote "$(user $quad)")"
-	host="$(condquote "$(host $quad)")"
+	user=$(condquote $user)
+	host=$(condquote $host)
 
 # echo "routeuser: host=$host, user=$user" >> /dev/tty
 
 	[ -n "$FORCEPUNT" ] &&
 		return $(rrouter "$user@$FORCEPUNT" "$host" $attr "" "")
 
-	ssift "$(dequote "$user")" in
+	ssift $(dequote $user) in
 	\\(.*)	user="\1" # Back-quoted username -- most likely
 		#didexpand=local
 		;;
@@ -290,7 +289,7 @@
 		  # sendmail-like :include: expansion
 		  db add expansions "$key.:include:" 1
 		  nattr=$(newattribute $attr privilege $priv)
-		  $(zapDSNnotify $nattr expanded "$sender" "$lcuser$domain")
+		  $(zapDSNnotify $nattr expanded "$sender" "$user$domain")
 		  defer=''
 		  a=$(runas $priv cat "\1" | \
 		      listexpand -E "postmaster" -e root -p $priv	\
@@ -325,7 +324,7 @@
 	if $(didexpand aliases) && a="$(aliases "$user")" ; then
 		db add expansions "$key.aliases" 1
 		nattr=$(newattribute $attr privilege $priv)
-		$(zapDSNnotify $nattr expanded "$sender" "$lcuser$domain")
+		$(zapDSNnotify $nattr expanded "$sender" "$user$domain")
 
 		a=$(echo "$a" |				\
 		    listaddresses	-E "root"	\
@@ -342,7 +341,7 @@
 	if $(didexpand fullnamemap) && a="$(fullnamemap "$user")" ; then
 		db add expansions "$key.fullnamemap" 1
 		nattr=$(newattribute $attr privilege $priv)
-		$(zapDSNnotify $nattr expanded "$sender" "$lcuser$domain")
+		$(zapDSNnotify $nattr expanded "$sender" "$user$domain")
 
 		a=$(rrouter "$a" "$user" $nattr "$plustail" "$domain")
 		postzapDSNnotify a
@@ -781,7 +780,7 @@
 
 getpriv (maxperm, priv, file, type) {
 #echo "getpriv($maxperm, $priv, $file, $type)" > /dev/tty
-	for ptype in $private
+	for ptype in $(elements $private)
 	do
 		if [ $type = $ptype ]; then
 			filepriv -M $maxperm "$file"
Index: proto/cf/consist.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/consist.cf,v
retrieving revision 1.3
diff -u -r1.3 consist.cf
--- proto/cf/consist.cf	1998/05/26 14:31:10	1.3
+++ proto/cf/consist.cf	2001/01/18 15:59:06
@@ -11,22 +11,32 @@
 require=()
 provide=()
 
-declare (plist, modules) {
-	local a
-	for m in $modules
+declare (plist, m) {
+	lreplace $plist $m $m
+}
+
+require () {
+	for x in $@
 	do
-		lreplace $plist $m $m
-		#a=$(setf $(get $plist $m) $m)
+		declare require $x
 	done
 }
 
-require (modules) { declare require $modules }
-provide (module) { declare provide $module }
+provide () {
+	for x in $@
+	do
+		declare provide $x
+	done
+}
 
 consist () {
 	local rval
 
+#grind $require
+#grind $provide
+
 	rval=0
+	# Scan for EVERY SECOND token of the array..
 	while [ $#require -gt 0 ];
 	do
 		want=$(car $require)
Index: proto/cf/fuzzy-aliases.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/fuzzy-aliases.cf,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 fuzzy-aliases.cf
--- proto/cf/fuzzy-aliases.cf	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/fuzzy-aliases.cf	2001/01/18 14:57:46
@@ -198,7 +198,7 @@
 # that they couldn't access otherwise.  If private='.forward maillist' then
 # people stop complainig about the former behaviour...
 getpriv (priv, file, type) {
-	for ptype in $private
+	for ptype in $(elements $private)
 	do
 		if [ $type = $ptype ]; then
 			filepriv "$file"
Index: proto/cf/process.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/process.cf,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 process.cf
--- proto/cf/process.cf	1998/02/10 21:01:49	1.1.1.1
+++ proto/cf/process.cf	2001/01/18 15:28:24
@@ -18,7 +18,7 @@
 #| our feet, we flush the cached information every once in a while (in this
 #| case, before every message).
 
-	LOGMSG=''
+	LOGMSG=()   # This is a LIST of files where to log..
 
 #| The LOGMSG variable is used by the intercept facility (in crossbar.cf)
 #| to make sure only a single copy of a message is saved when required.
@@ -59,7 +59,7 @@
 #| list in its entirety, except for the file name, and the message id, both
 #| of which were logged earlier (in C code).
 
-	for f in $LOGMSG
+	for f in $(elements $LOGMSG)
 	do
 		{ echo "==${file}==$(rfc822date)==" ;
 		  /bin/cat ../queue/"$file" } >> $f && log saved "$file" in $f
@@ -69,3 +69,5 @@
 
 }
 
+provide process
+# require XX XX XX
Index: proto/cf/rrouter.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/rrouter.cf,v
retrieving revision 1.18
diff -u -r1.18 rrouter.cf
--- proto/cf/rrouter.cf	2001/01/15 14:29:13	1.18
+++ proto/cf/rrouter.cf	2001/01/18 14:28:58
@@ -178,9 +178,9 @@
 
 		didhostexpand=$(hostexpansions "\2")
 
-		for method in $protocols
+		for method in $(elements $protocols)
 		do
-		   	tmp=$(${method}_neighbour "\2" "$address" $A) &&
+		   	tmp=$("${method}_neighbour" "\2" "$address" $A) &&
 				return $tmp
 		done
 
Index: proto/cf/server.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/server.cf,v
retrieving revision 1.7
diff -u -r1.7 server.cf
--- proto/cf/server.cf	1999/11/04 21:44:05	1.7
+++ proto/cf/server.cf	2001/01/18 15:36:19
@@ -151,3 +151,6 @@
 	esac
 }
 
+
+provide server
+require rrouter
Index: proto/cf/standard.cf
===================================================================
RCS file: /home/mea/src/CVSROOT/zmailer/proto/cf/standard.cf,v
retrieving revision 1.19
diff -u -r1.19 standard.cf
--- proto/cf/standard.cf	2000/10/10 21:00:58	1.19
+++ proto/cf/standard.cf	2001/01/18 14:23:09
@@ -288,7 +288,7 @@
 #| Domains with these toplevels will not be canonicalized via DNS lookup
 #| This list is from ISOC table of 16-April-95  + "su" + bitnet + uucp
 
-toplevels="ad ae af ag ai al am an ao aq ar as at au aw az ba
+toplevels=(ad ae af ag ai al am an ao aq ar as at au aw az ba
 	bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz
 	ca cc cf cg ch ci ck cl cm cn co com cr cu cv cx cy cz
 	de dj dk dm do dz ec edu ee eg eh es et fi fj fk fm fo
@@ -301,10 +301,10 @@
 	pw py qa re ro ru rw sa sb sc sd se sg sh si sj sk sl
 	sm sn so sr st su sv sy sz tc td tf tg th tj tk tm tn
 	to tp tr tt tv tw tz ua ug uk um us uy uz va vc ve vg
-	vi vn vu wf ws ye yu za zm zr zw uucp bitnet"
+	vi vn vu wf ws ye yu za zm zr zw uucp bitnet)
 
 relation -lbt incore istoplevel
-for x in $toplevels
+for x in $(elements $toplevels)
 do
 	db add istoplevel $x 1
 done
