Mercurial > dovecot > core-2.2
changeset 21630:e630e1ba2e17
lib-imap: imap-evenvelope: Changed imap_envelope_get_field() into a private equivalent.
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Sun, 23 Oct 2016 18:10:01 +0200 |
parents | 4a61612dab4f |
children | 65907879d3d5 |
files | src/lib-imap/imap-envelope.c src/lib-imap/imap-envelope.h |
diffstat | 2 files changed, 45 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-envelope.c Sun Oct 23 17:51:59 2016 +0200 +++ b/src/lib-imap/imap-envelope.c Sun Oct 23 18:10:01 2016 +0200 @@ -17,67 +17,81 @@ const char *in_reply_to, *message_id; }; +enum envelope_field { + ENVELOPE_FIELD_DATE = 0, + ENVELOPE_FIELD_SUBJECT, + ENVELOPE_FIELD_FROM, + ENVELOPE_FIELD_SENDER, + ENVELOPE_FIELD_REPLY_TO, + ENVELOPE_FIELD_TO, + ENVELOPE_FIELD_CC, + ENVELOPE_FIELD_BCC, + ENVELOPE_FIELD_IN_REPLY_TO, + ENVELOPE_FIELD_MESSAGE_ID, + + ENVELOPE_FIELD_UNKNOWN +}; + const char *imap_envelope_headers[] = { "Date", "Subject", "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "In-Reply-To", "Message-ID", NULL }; -bool imap_envelope_get_field(const char *name, enum imap_envelope_field *ret) +static enum envelope_field +envelope_get_field(const char *name) { - *ret = (enum imap_envelope_field)-1; - switch (*name) { case 'B': case 'b': if (strcasecmp(name, "Bcc") == 0) - *ret = IMAP_ENVELOPE_BCC; + return ENVELOPE_FIELD_BCC; break; case 'C': case 'c': if (strcasecmp(name, "Cc") == 0) - *ret = IMAP_ENVELOPE_CC; + return ENVELOPE_FIELD_CC; break; case 'D': case 'd': if (strcasecmp(name, "Date") == 0) - *ret = IMAP_ENVELOPE_DATE; + return ENVELOPE_FIELD_DATE; break; case 'F': case 'f': if (strcasecmp(name, "From") == 0) - *ret = IMAP_ENVELOPE_FROM; + return ENVELOPE_FIELD_FROM; break; case 'I': case 'i': if (strcasecmp(name, "In-reply-to") == 0) - *ret = IMAP_ENVELOPE_IN_REPLY_TO; + return ENVELOPE_FIELD_IN_REPLY_TO; break; case 'M': case 'm': if (strcasecmp(name, "Message-id") == 0) - *ret = IMAP_ENVELOPE_MESSAGE_ID; + return ENVELOPE_FIELD_MESSAGE_ID; break; case 'R': case 'r': if (strcasecmp(name, "Reply-to") == 0) - *ret = IMAP_ENVELOPE_REPLY_TO; + return ENVELOPE_FIELD_REPLY_TO; break; case 'S': case 's': if (strcasecmp(name, "Subject") == 0) - *ret = IMAP_ENVELOPE_SUBJECT; + return ENVELOPE_FIELD_SUBJECT; if (strcasecmp(name, "Sender") == 0) - *ret = IMAP_ENVELOPE_SENDER; + return ENVELOPE_FIELD_SENDER; break; case 'T': case 't': if (strcasecmp(name, "To") == 0) - *ret = IMAP_ENVELOPE_TO; + return ENVELOPE_FIELD_TO; break; } - return *ret != (enum imap_envelope_field)-1; + return ENVELOPE_FIELD_UNKNOWN; } void imap_envelope_parse_header(pool_t pool, @@ -85,7 +99,7 @@ struct message_header_line *hdr) { struct message_part_envelope_data *d; - enum imap_envelope_field field; + enum envelope_field field; struct message_address **addr_p; const char **str_p; @@ -93,7 +107,10 @@ *data = p_new(pool, struct message_part_envelope_data, 1); } - if (hdr == NULL || !imap_envelope_get_field(hdr->name, &field)) + if (hdr == NULL) + return; + field = envelope_get_field(hdr->name); + if (field == ENVELOPE_FIELD_UNKNOWN) return; if (hdr->continues) { @@ -105,39 +122,39 @@ d = *data; addr_p = NULL; str_p = NULL; switch (field) { - case IMAP_ENVELOPE_DATE: + case ENVELOPE_FIELD_DATE: str_p = &d->date; break; - case IMAP_ENVELOPE_SUBJECT: + case ENVELOPE_FIELD_SUBJECT: str_p = &d->subject; break; - case IMAP_ENVELOPE_MESSAGE_ID: + case ENVELOPE_FIELD_MESSAGE_ID: str_p = &d->message_id; break; - case IMAP_ENVELOPE_IN_REPLY_TO: + case ENVELOPE_FIELD_IN_REPLY_TO: str_p = &d->in_reply_to; break; - case IMAP_ENVELOPE_CC: + case ENVELOPE_FIELD_CC: addr_p = &d->cc; break; - case IMAP_ENVELOPE_BCC: + case ENVELOPE_FIELD_BCC: addr_p = &d->bcc; break; - case IMAP_ENVELOPE_FROM: + case ENVELOPE_FIELD_FROM: addr_p = &d->from; break; - case IMAP_ENVELOPE_SENDER: + case ENVELOPE_FIELD_SENDER: addr_p = &d->sender; break; - case IMAP_ENVELOPE_TO: + case ENVELOPE_FIELD_TO: addr_p = &d->to; break; - case IMAP_ENVELOPE_REPLY_TO: + case ENVELOPE_FIELD_REPLY_TO: addr_p = &d->reply_to; break; - case IMAP_ENVELOPE_FIELDS: - break; + case ENVELOPE_FIELD_UNKNOWN: + i_unreached(); } if (addr_p != NULL) {
--- a/src/lib-imap/imap-envelope.h Sun Oct 23 17:51:59 2016 +0200 +++ b/src/lib-imap/imap-envelope.h Sun Oct 23 18:10:01 2016 +0200 @@ -3,29 +3,10 @@ struct imap_arg; struct message_header_line; - -enum imap_envelope_field { - /* NOTE: in the same order as listed in ENVELOPE */ - IMAP_ENVELOPE_DATE = 0, - IMAP_ENVELOPE_SUBJECT, - IMAP_ENVELOPE_FROM, - IMAP_ENVELOPE_SENDER, - IMAP_ENVELOPE_REPLY_TO, - IMAP_ENVELOPE_TO, - IMAP_ENVELOPE_CC, - IMAP_ENVELOPE_BCC, - IMAP_ENVELOPE_IN_REPLY_TO, - IMAP_ENVELOPE_MESSAGE_ID, - - IMAP_ENVELOPE_FIELDS -}; - struct message_part_envelope_data; extern const char *imap_envelope_headers[]; -bool imap_envelope_get_field(const char *name, enum imap_envelope_field *ret); - /* Update envelope data based from given header field */ void imap_envelope_parse_header(pool_t pool, struct message_part_envelope_data **data,