Mercurial > dovecot > core-2.2
changeset 19741:7b9c6dd8e41d
lib-storage: Deduplicate %{userdb:*} handling for mail_user and mail_storage_service_user
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 10 Feb 2016 19:06:14 +0200 |
parents | 722216cfad93 |
children | b6804ea019a6 |
files | src/lib-storage/mail-storage-service.c src/lib-storage/mail-storage-service.h src/lib-storage/mail-user.c |
diffstat | 3 files changed, 23 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-storage-service.c Wed Feb 10 18:27:52 2016 +0200 +++ b/src/lib-storage/mail-storage-service.c Wed Feb 10 19:06:14 2016 +0200 @@ -725,24 +725,31 @@ i_set_failure_prefix("%s", ctx->default_log_prefix); } +const char *mail_storage_service_fields_var_expand(const char *data, + const char *const *fields) +{ + const char *field_name = data; + unsigned int i, field_name_len; + + if (fields == NULL) + return NULL; + + field_name_len = strlen(field_name); + for (i = 0; fields[i] != NULL; i++) { + if (strncmp(fields[i], field_name, field_name_len) == 0 && + fields[i][field_name_len] == '=') + return fields[i] + field_name_len+1; + } + return NULL; +} + static const char * mail_storage_service_input_var_userdb(const char *data, void *context) { struct mail_storage_service_user *user = context; - const char *field_name = data; - unsigned int i, field_name_len; - if (user == NULL || user->input.userdb_fields == NULL) - return NULL; - - field_name_len = strlen(field_name); - for (i = 0; user->input.userdb_fields[i] != NULL; i++) { - if (strncmp(user->input.userdb_fields[i], field_name, - field_name_len) == 0 && - user->input.userdb_fields[i][field_name_len] == '=') - return user->input.userdb_fields[i] + field_name_len+1; - } - return NULL; + return mail_storage_service_fields_var_expand(data, + user == NULL ? NULL : user->input.userdb_fields); } static void
--- a/src/lib-storage/mail-storage-service.h Wed Feb 10 18:27:52 2016 +0200 +++ b/src/lib-storage/mail-storage-service.h Wed Feb 10 19:06:14 2016 +0200 @@ -139,6 +139,8 @@ const struct var_expand_table * mail_storage_service_get_var_expand_table(struct mail_storage_service_ctx *ctx, struct mail_storage_service_input *input); +const char *mail_storage_service_fields_var_expand(const char *data, + const char *const *fields); /* Return the settings pointed to by set_root parameter in _init() */ void *mail_storage_service_get_settings(struct master_service *service);
--- a/src/lib-storage/mail-user.c Wed Feb 10 18:27:52 2016 +0200 +++ b/src/lib-storage/mail-user.c Wed Feb 10 19:06:14 2016 +0200 @@ -268,20 +268,8 @@ mail_user_var_expand_func_userdb(const char *data, void *context) { struct mail_user *user = context; - const char *field_name = data; - unsigned int i, field_name_len; - if (user->userdb_fields == NULL) - return NULL; - - field_name_len = strlen(field_name); - for (i = 0; user->userdb_fields[i] != NULL; i++) { - if (strncmp(user->userdb_fields[i], field_name, - field_name_len) == 0 && - user->userdb_fields[i][field_name_len] == '=') - return user->userdb_fields[i] + field_name_len+1; - } - return NULL; + return mail_storage_service_fields_var_expand(data, user->userdb_fields); } void mail_user_set_home(struct mail_user *user, const char *home)