]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap: imap-evenvelope: Changed imap_envelope_get_field() into a private equivalent.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 23 Oct 2016 16:10:01 +0000 (18:10 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 20 Feb 2017 09:27:40 +0000 (11:27 +0200)
src/lib-imap/imap-envelope.c
src/lib-imap/imap-envelope.h

index 2b6fe94dfe37f7a049b723f8701276378e438f5d..9061d8dcf30f8f3da64b2cfbbea60f13f132338a 100644 (file)
@@ -17,67 +17,81 @@ struct message_part_envelope_data {
        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 @@ void imap_envelope_parse_header(pool_t pool,
                                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 @@ void imap_envelope_parse_header(pool_t pool,
                *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 @@ void imap_envelope_parse_header(pool_t pool,
        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) {
index 905282c5f97f4846c0134ba46be7324098b8a472..4bc30fb649d7261c8fb9667d00ba73a2838845f7 100644 (file)
@@ -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,