#ifndef MUTT_LIB_MIME_MIME_TYPES_H
#define MUTT_LIB_MIME_MIME_TYPES_H
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <lib-lib/mem.h>
-#include <lib-lib/buffer.h>
-#include <lib-lib/list.h>
+#include <lib-lib/lib-lib.h>
/* Content-Type */
enum {
ENCQUOTEDPRINTABLE,
ENCBASE64,
ENCBINARY,
- ENCUUENCODED
+ ENCUUENCODED,
};
/* Content-Disposition values */
/****************************************************************************/
typedef struct address_t {
+ struct address_t *next;
char *personal; /* real name of address */
char *mailbox; /* mailbox and host address */
int group; /* group mailbox? */
- struct address_t *next;
} address_t;
DO_INIT(address_t, address);
-void address_wipe(address_t *);
+static inline void address_wipe(address_t *addr) {
+ p_delete(&addr->personal);
+ p_delete(&addr->mailbox);
+}
DO_NEW(address_t, address);
DO_DELETE(address_t, address);
-DO_SLIST(address_t, address);
-
+DO_SLIST(address_t, address, address_delete);
/****************************************************************************/
/* rfc822 header parameters */
/****************************************************************************/
-typedef struct parameter {
+typedef struct parameter_t {
+ struct parameter_t *next;
char *attribute;
char *value;
- struct parameter *next;
-} PARAMETER;
+} parameter_t;
+
+DO_INIT(parameter_t, parameter);
+static inline void parameter_wipe(parameter_t *param) {
+ p_delete(¶m->attribute);
+ p_delete(¶m->value);
+}
-DO_INIT(PARAMETER, parameter);
-void parameter_wipe(PARAMETER *);
+DO_NEW(parameter_t, parameter);
+DO_DELETE(parameter_t, parameter);
+DO_SLIST(parameter_t, parameter, parameter_delete);
-DO_NEW(PARAMETER, parameter);
-DO_DELETE(PARAMETER, parameter);
-DO_SLIST(PARAMETER, parameter);
+char *parameter_getval(parameter_t *, const char *);
+void parameter_setval(parameter_t **, const char *, const char *);
+void parameter_delval(parameter_t ** p, const char *);
+void parameter_set_boundary(parameter_t **);
+int parameter_equal(const parameter_t *, const parameter_t *);
/****************************************************************************/
/* rfc822 envelopes */
char *newsgroups;
char *xref;
char *followup_to;
- char *x_comment_to;
#endif
BUFFER *spam;
- LIST *references; /* message references (in reverse order) */
- LIST *in_reply_to; /* in-reply-to header content */
- LIST *userhdrs; /* user defined headers */
+ string_list_t *references; /* message references (in reverse order) */
+ string_list_t *in_reply_to; /* in-reply-to header content */
+ string_list_t *userhdrs; /* user defined headers */
unsigned int irt_changed:1; /* In-Reply-To changed to link/break threads */
unsigned int refs_changed:1; /* References changed to break thread */
} ENVELOPE;
/****************************************************************************/
typedef struct body {
+ struct body *next; /* next attachment in the list */
+
char *xtype; /* content-type if x-unknown */
char *subtype; /* content-type subtype */
- PARAMETER *parameter; /* parameters of the content-type */
+ parameter_t *parameter; /* parameters of the content-type */
char *description; /* content-description */
char *form_name; /* Content-Disposition form-data name param */
off_t hdr_offset; /* offset in stream where the headers begin.
* to determine what content-transfer-encoding
* is required when sending mail.
*/
- struct body *next; /* next attachment in the list */
struct body *parts; /* parts of a multipart or message/rfc822 */
struct header *hdr; /* header information for message/rfc822 */
unsigned int attach_qualifies:1;
} BODY;
+static inline BODY *body_init(BODY *b) {
+ b->disposition = DISPATTACH;
+ b->use_disp = 1;
+ return b;
+}
+void body_wipe(BODY *);
+
+DO_NEW(BODY, body);
+DO_DELETE(BODY, body);
+DO_SLIST(BODY, body, body_delete);
+
/****************************************************************************/
/* rfc822 Headers */
short attach_total;
-#ifdef MIXMASTER
- LIST *chain;
-#endif
+ string_list_t *chain;
int refno; /* message number on server */
void *data; /* driver-specific data */