imap-envelope.c revision cc411c089502f30f762153e7fbdc3b59b4c6cd38
/* Copyright (C) 2002 Timo Sirainen */
#include "lib.h"
#include "istream.h"
#include "str.h"
#include "message-address.h"
#include "message-parser.h"
#include "imap-parser.h"
#include "imap-envelope.h"
#include "imap-quote.h"
struct message_part_envelope_data {
char *in_reply_to, *message_id;
};
{
switch (*name) {
case 'B':
case 'b':
*ret = IMAP_ENVELOPE_BCC;
break;
case 'C':
case 'c':
*ret = IMAP_ENVELOPE_CC;
break;
case 'D':
case 'd':
break;
case 'F':
case 'f':
break;
case 'I':
case 'i':
break;
case 'M':
case 'm':
break;
case 'R':
case 'r':
break;
case 'S':
case 's':
break;
case 'T':
case 't':
*ret = IMAP_ENVELOPE_TO;
break;
}
}
struct message_part_envelope_data **data,
struct message_header_line *hdr)
{
struct message_part_envelope_data *d;
enum imap_envelope_field field;
struct message_address **addr_p;
char **str_p;
}
return;
/* wait for full value */
return;
}
d = *data;
switch (field) {
case IMAP_ENVELOPE_DATE:
break;
case IMAP_ENVELOPE_SUBJECT:
break;
case IMAP_ENVELOPE_MESSAGE_ID:
str_p = &d->message_id;
break;
str_p = &d->in_reply_to;
break;
case IMAP_ENVELOPE_CC:
break;
case IMAP_ENVELOPE_BCC:
break;
case IMAP_ENVELOPE_FROM:
break;
case IMAP_ENVELOPE_SENDER:
break;
case IMAP_ENVELOPE_TO:
break;
case IMAP_ENVELOPE_REPLY_TO:
break;
case IMAP_ENVELOPE_FIELDS:
break;
}
hdr->full_value_len, 0);
}
}
{
return;
}
}
}
{
}
int *in_group)
{
struct imap_arg_list *list;
const char *args[4];
int i;
return FALSE;
/* we require 4 arguments, strings or NILs */
return FALSE;
for (i = 0; i < 4; i++) {
else
return FALSE;
}
/* end of group */
return TRUE;
}
/* beginning of group */
return TRUE;
}
/* a) mailbox@domain
b) name <@route:mailbox@domain> */
}
} else {
}
}
}
}
return TRUE;
}
{
struct imap_arg_list *list;
size_t i;
int in_group;
return NULL;
return NULL;
}
}
{
struct imap_arg_list *list;
/* ((name route mailbox domain) ...) */
return NULL;
return "";
return NULL;
return NULL;
}
enum imap_envelope_field field,
const char *envelope,
const char **result)
{
return TRUE;
}
switch (result_type) {
else
break;
field <= IMAP_ENVELOPE_BCC);
break;
}
return TRUE;
else {
i_error("Invalid field %u in IMAP envelope: %s",
return FALSE;
}
}
const char **result)
{
struct imap_parser *parser;
int ret;
(void)i_stream_read(input);
} else {
}
return ret;
}