This is a code reorganization that should have no functional effect, but will make future changes simpler, because a future commit will reuse the _mime_node_set_up_part functionality.
In the course of splitting out this function, I noticed a comment in the codebase that referred to the original name of _mime_node_create, where this functionality originally resided. I've fixed that comment to refer to the new function instead. Signed-off-by: Daniel Kahn Gillmor <d...@fifthhorseman.net> --- mime-node.c | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/mime-node.c b/mime-node.c index a48a2119..b8143b27 100644 --- a/mime-node.c +++ b/mime-node.c @@ -264,13 +264,36 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part) g_error_free (err); } +static bool +_mime_node_set_up_part (mime_node_t *node, GMimeObject *part) { + /* Deal with the different types of parts */ + if (GMIME_IS_PART (part)) { + node->part = part; + node->nchildren = 0; + } else if (GMIME_IS_MULTIPART (part)) { + node->part = part; + node->nchildren = g_mime_multipart_get_count (GMIME_MULTIPART (part)); + } else if (GMIME_IS_MESSAGE_PART (part)) { + /* Promote part to an envelope and open it */ + GMimeMessagePart *message_part = GMIME_MESSAGE_PART (part); + GMimeMessage *message = g_mime_message_part_get_message (message_part); + node->envelope_part = message_part; + node->part = GMIME_OBJECT (message); + node->nchildren = 1; + } else { + fprintf (stderr, "Warning: Unknown mime part type: %s.\n", + g_type_name (G_OBJECT_TYPE (part))); + return false; + } + return true; +} + static mime_node_t * _mime_node_create (mime_node_t *parent, GMimeObject *part, int numchild) { mime_node_t *node = talloc_zero (parent, mime_node_t); /* Set basic node properties */ - node->part = part; node->ctx = parent->ctx; if (!talloc_reference (node, node->ctx)) { fprintf (stderr, "Out of memory.\n"); @@ -281,21 +304,7 @@ _mime_node_create (mime_node_t *parent, GMimeObject *part, int numchild) node->part_num = node->next_part_num = -1; node->next_child = 0; - /* Deal with the different types of parts */ - if (GMIME_IS_PART (part)) { - node->nchildren = 0; - } else if (GMIME_IS_MULTIPART (part)) { - node->nchildren = g_mime_multipart_get_count (GMIME_MULTIPART (part)); - } else if (GMIME_IS_MESSAGE_PART (part)) { - /* Promote part to an envelope and open it */ - GMimeMessagePart *message_part = GMIME_MESSAGE_PART (part); - GMimeMessage *message = g_mime_message_part_get_message (message_part); - node->envelope_part = message_part; - node->part = GMIME_OBJECT (message); - node->nchildren = 1; - } else { - fprintf (stderr, "Warning: Unknown mime part type: %s.\n", - g_type_name (G_OBJECT_TYPE (part))); + if (! _mime_node_set_up_part (node, part)) { talloc_free (node); return NULL; } @@ -344,7 +353,7 @@ mime_node_child (mime_node_t *parent, int child) } else if (GMIME_IS_MESSAGE (parent->part)) { sub = g_mime_message_get_mime_part (GMIME_MESSAGE (parent->part)); } else { - /* This should have been caught by message_part_create */ + /* This should have been caught by _mime_node_set_up_part */ INTERNAL_ERROR ("Unexpected GMimeObject type: %s", g_type_name (G_OBJECT_TYPE (parent->part))); } -- 2.20.1 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch