[dovecot-cvs] dovecot/src/master imap-process.c,1.18,1.19

cras at procontrol.fi cras at procontrol.fi
Fri Dec 20 06:47:41 EET 2002


Update of /home/cvs/dovecot/src/master
In directory danu:/tmp/cvs-serv24373/src/master

Modified Files:
	imap-process.c 
Log Message:
default_mail_env behaviour changed. We use %u instead of $U now. Added also
several other variables which can be used. Ideas based on David Champion's
mailpath library.



Index: imap-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/imap-process.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- imap-process.c	20 Dec 2002 01:47:11 -0000	1.18
+++ imap-process.c	20 Dec 2002 04:47:39 -0000	1.19
@@ -68,7 +68,8 @@
 				   const char *home)
 {
 	TempString *str;
-	const char *p;
+	const char *p, *var;
+	unsigned int width;
 
 	str = t_string_new(256);
 
@@ -89,13 +90,45 @@
 		env++;
 	}
 
-	/* expand $U if found */
+	/* expand %vars */
 	for (; *env != '\0'; env++) {
-		if (*env == '$' && env[1] == 'U') {
-			t_string_append(str, user);
-			env++;
-		} else {
+		if (*env != '%')
 			t_string_append_c(str, *env);
+		else {
+			width = 0;
+			while (env[1] >= '0' && env[1] <= '9') {
+				width = width*10 + (env[1] - '0');
+				env++;
+			}
+
+			switch (env[1]) {
+			case '%':
+				var = "%";
+				break;
+			case 'u':
+				var = user;
+				break;
+			case 'h':
+				var = home;
+				break;
+			case 'n':
+				var = t_strcut(user, '@');
+				break;
+			case 'd':
+				var = strchr(user, '@');
+				if (var != NULL) var++;
+				break;
+			default:
+				var = NULL;
+				break;
+			}
+
+			if (var != NULL) {
+				if (width == 0)
+					t_string_append(str, var);
+				else
+					t_string_append_n(str, var, width);
+			}
 		}
 	}
 




More information about the dovecot-cvs mailing list