mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
tools: Give mime parser callbacks access to the rfc822 parser.
* tools/mime-parser.c (mime_parser_context_s): Add field MSG. (parse_message_cb): Set it. (mime_parser_rfc822parser): New. * tools/mime-parser.h: Declare rfc822parse_t for the new prototype. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
9e6f8a55ed
commit
4ac138c84d
@ -64,6 +64,9 @@ struct mime_parser_context_s
|
|||||||
/* The callback to collect a signature. */
|
/* The callback to collect a signature. */
|
||||||
gpg_error_t (*collect_signature) (void *cookie, const char *data);
|
gpg_error_t (*collect_signature) (void *cookie, const char *data);
|
||||||
|
|
||||||
|
/* The RFC822 parser context is stored here during callbacks. */
|
||||||
|
rfc822parse_t msg;
|
||||||
|
|
||||||
/* Helper to convey error codes from user callbacks. */
|
/* Helper to convey error codes from user callbacks. */
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
|
|
||||||
@ -189,6 +192,9 @@ parse_message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
|
|||||||
const char *s;
|
const char *s;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
/* Make the RFC822 parser context availabale for callbacks. */
|
||||||
|
ctx->msg = msg;
|
||||||
|
|
||||||
if (ctx->debug)
|
if (ctx->debug)
|
||||||
show_message_parser_event (event);
|
show_message_parser_event (event);
|
||||||
|
|
||||||
@ -475,6 +481,8 @@ parse_message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx->msg = NULL;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,6 +607,15 @@ mime_parser_set_collect_signature (mime_parser_t ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the RFC888 parser context. This is only available inside a
|
||||||
|
* callback. */
|
||||||
|
rfc822parse_t
|
||||||
|
mime_parser_rfc822parser (mime_parser_t ctx)
|
||||||
|
{
|
||||||
|
return ctx->msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Read and parse a message from FP and call the appropriate
|
/* Read and parse a message from FP and call the appropriate
|
||||||
* callbacks. */
|
* callbacks. */
|
||||||
gpg_error_t
|
gpg_error_t
|
||||||
|
@ -48,5 +48,12 @@ void mime_parser_set_collect_signature (mime_parser_t ctx,
|
|||||||
gpg_error_t mime_parser_parse (mime_parser_t ctx, estream_t fp);
|
gpg_error_t mime_parser_parse (mime_parser_t ctx, estream_t fp);
|
||||||
|
|
||||||
|
|
||||||
|
/* Duplicated declaration of the RFC822 parser context. */
|
||||||
|
struct rfc822parse_context;
|
||||||
|
typedef struct rfc822parse_context *rfc822parse_t;
|
||||||
|
|
||||||
|
rfc822parse_t mime_parser_rfc822parser (mime_parser_t ctx);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /*GNUPG_MIME_PARSER_H*/
|
#endif /*GNUPG_MIME_PARSER_H*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user