# HG changeset patch # User Aki Tuomi # Date 1512378915 -7200 # Node ID 024c9456f8e5ca8fc395cda9ec2026815f70c8f5 # Parent 8dcf3b113b6d19f231204a429a4e794858736929 pop3: Simplify logout format variable handling diff -r 8dcf3b113b6d -r 024c9456f8e5 src/pop3/pop3-client.c --- a/src/pop3/pop3-client.c Mon Dec 04 11:04:09 2017 +0200 +++ b/src/pop3/pop3-client.c Mon Dec 04 11:15:15 2017 +0200 @@ -519,46 +519,28 @@ static const char *client_stats(struct client *client) { - static struct var_expand_table static_tab[] = { - { 'p', NULL, "top_bytes" }, - { 't', NULL, "top_count" }, - { 'b', NULL, "retr_bytes" }, - { 'r', NULL, "retr_count" }, - { 'd', NULL, "deleted_count" }, - { 'm', NULL, "message_count" }, - { 's', NULL, "message_bytes" }, - { 'i', NULL, "input" }, - { 'o', NULL, "output" }, - { 'u', NULL, "uidl_change" }, - { '\0', NULL, "session" }, - { 'd', NULL, "deleted_bytes" }, + const char *uidl_change = ""; + if (var_has_key(client->set->pop3_logout_format, + 'o', "uidl_change")) + uidl_change = client_build_uidl_change_string(client); + + const struct var_expand_table tab[] = { + { 'p', dec2str(client->top_bytes), "top_bytes" }, + { 't', dec2str(client->top_count), "top_count" }, + { 'b', dec2str(client->retr_bytes), "retr_bytes" }, + { 'r', dec2str(client->retr_count), "retr_count" }, + { 'd', !client->delete_success ? "0" : + dec2str(client->deleted_count), "deleted_count" }, + { 'm', dec2str(client->messages_count), "message_count" }, + { 's', dec2str(client->total_size), "message_bytes" }, + { 'i', dec2str(client->input->v_offset), "input" }, + { 'o', dec2str(client->output->offset), "output" }, + { 'u', uidl_change, "uidl_change" }, + { '\0', client->session_id, "session" }, + { 'd', !client->delete_success ? "0" : + dec2str(client->deleted_size), "deleted_bytes" }, { '\0', NULL, NULL } }; - struct var_expand_table *tab; - string_t *str; - - tab = t_malloc(sizeof(static_tab)); - memcpy(tab, static_tab, sizeof(static_tab)); - - tab[0].value = dec2str(client->top_bytes); - tab[1].value = dec2str(client->top_count); - tab[2].value = dec2str(client->retr_bytes); - tab[3].value = dec2str(client->retr_count); - tab[4].value = client->delete_success ? - dec2str(client->deleted_count) : "0"; - tab[5].value = dec2str(client->messages_count); - tab[6].value = dec2str(client->total_size); - tab[7].value = dec2str(client->input->v_offset); - tab[8].value = dec2str(client->output->offset); - if (var_has_key(client->set->pop3_logout_format, - tab[9].key, tab[9].long_key)) - tab[9].value = client_build_uidl_change_string(client); - else - tab[9].value = ""; - tab[10].value = client->session_id; - tab[11].value = client->delete_success ? - dec2str(client->deleted_size) : "0"; - str = t_str_new(128); var_expand(str, client->set->pop3_logout_format, tab); return str_c(str);