# HG changeset patch # User Stephan Bosch # Date 1477263679 -7200 # Node ID c7b8d82390d47cd493c2271e1c5aef6898f2f275 # Parent 30aacb0df12f0cee3ffa10179a5dd49cb028fc61 lib-mail: message-part-data: Implemented message_part_data_get_filename(). Gets the message part's filename if it has any. diff -r 30aacb0df12f -r c7b8d82390d4 src/lib-mail/message-part-data.c --- 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 */ diff -r 30aacb0df12f -r c7b8d82390d4 src/lib-mail/message-part-data.h --- 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 */