[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