Mercurial > dovecot > core-2.2
changeset 22703:fe760efc829a
pop3: Include mail user variables in logout format
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Mon, 04 Dec 2017 11:18:24 +0200 |
parents | 024c9456f8e5 |
children | a6c0bec02b57 |
files | src/pop3/pop3-client.c |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/pop3/pop3-client.c Mon Dec 04 11:15:15 2017 +0200 +++ b/src/pop3/pop3-client.c Mon Dec 04 11:18:24 2017 +0200 @@ -524,7 +524,7 @@ 'o', "uidl_change")) uidl_change = client_build_uidl_change_string(client); - const struct var_expand_table tab[] = { + const struct var_expand_table logout_tab[] = { { 'p', dec2str(client->top_bytes), "top_bytes" }, { 't', dec2str(client->top_count), "top_count" }, { 'b', dec2str(client->retr_bytes), "retr_bytes" }, @@ -539,10 +539,23 @@ { '\0', client->session_id, "session" }, { 'd', !client->delete_success ? "0" : dec2str(client->deleted_size), "deleted_bytes" }, - { '\0', NULL, NULL } }; + ARRAY(struct var_expand_table) tab; + const struct var_expand_table *user_tab = + mail_user_var_expand_table(client->user); + string_t *str; + size_t n; + + t_array_init(&tab, 32); + array_append(&tab, logout_tab, N_ELEMENTS(logout_tab)); + /* count elements */ + for(n = 0; user_tab[n].long_key != NULL; n++) + ; + array_append(&tab, user_tab, n); + array_append_zero(&tab); + str = t_str_new(128); - var_expand(str, client->set->pop3_logout_format, tab); + var_expand(str, client->set->pop3_logout_format, array_idx(&tab, 0)); return str_c(str); }