GMimeMessage *mime_message;
/* Context provided by the caller. */
-#ifdef GMIME_ATLEAST_26
- GMimeCryptoContext *cryptoctx;
-#else
- GMimeCipherContext *cryptoctx;
-#endif
+ notmuch_crypto_context_t *cryptoctx;
notmuch_bool_t decrypt;
} mime_node_context_t;
notmuch_status_t
mime_node_open (const void *ctx, notmuch_message_t *message,
-#ifdef GMIME_ATLEAST_26
- GMimeCryptoContext *cryptoctx,
-#else
- GMimeCipherContext *cryptoctx,
-#endif
- notmuch_bool_t decrypt, mime_node_t **root_out)
+ notmuch_crypto_t *crypto, mime_node_t **root_out)
{
const char *filename = notmuch_message_get_filename (message);
mime_node_context_t *mctx;
}
mctx->stream = g_mime_stream_file_new (mctx->file);
+ if (!mctx->stream) {
+ fprintf (stderr, "Out of memory.\n");
+ status = NOTMUCH_STATUS_OUT_OF_MEMORY;
+ goto DONE;
+ }
g_mime_stream_file_set_owner (GMIME_STREAM_FILE (mctx->stream), FALSE);
mctx->parser = g_mime_parser_new_with_stream (mctx->stream);
+ if (!mctx->parser) {
+ fprintf (stderr, "Out of memory.\n");
+ status = NOTMUCH_STATUS_OUT_OF_MEMORY;
+ goto DONE;
+ }
mctx->mime_message = g_mime_parser_construct_message (mctx->parser);
+ if (!mctx->mime_message) {
+ fprintf (stderr, "Failed to parse %s\n", filename);
+ status = NOTMUCH_STATUS_FILE_ERROR;
+ goto DONE;
+ }
- mctx->cryptoctx = cryptoctx;
- mctx->decrypt = decrypt;
+ mctx->cryptoctx = crypto->gpgctx;
+ mctx->decrypt = crypto->decrypt;
/* Create the root node */
root->part = GMIME_OBJECT (mctx->mime_message);