]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: message-part-data: Implemented message_part_data_get_filename().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 23 Oct 2016 23:01:19 +0000 (01:01 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 20 Feb 2017 09:28:03 +0000 (11:28 +0200)
Gets the message part's filename if it has any.

src/lib-mail/message-part-data.c
src/lib-mail/message-part-data.h

index 17c6f0a94ae99223698e729fb1044f8fccefba19..abd05cfea19fc148993744a6dff984cf769a1a5f 100644 (file)
@@ -63,6 +63,30 @@ bool message_part_data_is_plain_7bit(const struct message_part *part)
        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
  */
index 539d3f4ec8619136309e6abf8e42f5d31a036670..ea436baa2cb53e6df860c896d595eb3dd9a1c073 100644 (file)
@@ -49,6 +49,11 @@ extern const char *message_part_envelope_headers[];
 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
  */