changeset 19742:b6804ea019a6

lib-storage: Added missing %{userdb:*:default} handling
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 10 Feb 2016 19:08:11 +0200
parents 7b9c6dd8e41d
children 26c805d628f8
files src/lib-storage/mail-storage-service.c
diffstat 1 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mail-storage-service.c	Wed Feb 10 19:06:14 2016 +0200
+++ b/src/lib-storage/mail-storage-service.c	Wed Feb 10 19:08:11 2016 +0200
@@ -725,14 +725,27 @@
 	i_set_failure_prefix("%s", ctx->default_log_prefix);
 }
 
+static const char *field_get_default(const char *data)
+{
+	const char *p;
+
+	p = strchr(data, ':');
+	if (p == NULL)
+		return "";
+	else {
+		/* default value given */
+		return p+1;
+	}
+}
+
 const char *mail_storage_service_fields_var_expand(const char *data,
 						   const char *const *fields)
 {
-	const char *field_name = data;
+	const char *field_name = t_strcut(data, ':');
 	unsigned int i, field_name_len;
 
 	if (fields == NULL)
-		return NULL;
+		return field_get_default(data);
 
 	field_name_len = strlen(field_name);
 	for (i = 0; fields[i] != NULL; i++) {
@@ -740,7 +753,7 @@
 		    fields[i][field_name_len] == '=')
 			return fields[i] + field_name_len+1;
 	}
-	return NULL;
+	return field_get_default(data);
 }
 
 static const char *