Mercurial > dovecot > core-2.2
changeset 21636:c7b8d82390d4
lib-mail: message-part-data: Implemented message_part_data_get_filename().
Gets the message part's filename if it has any.
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Mon, 24 Oct 2016 01:01:19 +0200 |
parents | 30aacb0df12f |
children | 140000f0ba69 |
files | src/lib-mail/message-part-data.c src/lib-mail/message-part-data.h |
diffstat | 2 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-part-data.c Mon Oct 24 00:19:05 2016 +0200 +++ b/src/lib-mail/message-part-data.c Mon Oct 24 01:01:19 2016 +0200 @@ -63,6 +63,30 @@ return TRUE; } +bool message_part_data_get_filename(const struct message_part *part, + const char **filename_r) +{ + const struct message_part_data *data = part->data; + const struct message_part_param *params; + unsigned int params_count, i; + + params = data->content_disposition_params; + params_count = data->content_disposition_params_count; + + if (data->content_disposition != NULL && + strcasecmp(data->content_disposition, "attachment") != 0) { + return FALSE; + } + for (i = 0; i < params_count; i++) { + if (strcasecmp(params[i].name, "filename") == 0 && + params[i].value != NULL) { + *filename_r = params[i].value; + return TRUE; + } + } + return FALSE; +} + /* * Header parsing */
--- a/src/lib-mail/message-part-data.h Mon Oct 24 00:19:05 2016 +0200 +++ b/src/lib-mail/message-part-data.h Mon Oct 24 01:01:19 2016 +0200 @@ -49,6 +49,11 @@ bool message_part_data_is_plain_7bit(const struct message_part *part) ATTR_PURE; +/* Returns TRUE if this message part has a filename. The filename is + returned in filename_r. */ +bool message_part_data_get_filename(const struct message_part *part, + const char **filename_r); + /* * Header parsing */