[PATCH 4/6] mime-node: split out _mime_node_set_up_part
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Thu May 30 21:28:23 PDT 2019
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 <dkg at 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
More information about the notmuch
mailing list