-
/*
* mhparse.h -- definitions for parsing/building of MIME content
* -- (mhparse.c/mhbuildsbr.c)
*/
-#define NPARTS 50
-#define NTYPES 20
-#define NPARMS 10
+#define NPARTS 50
+#define NTYPES 20
+#define NPARMS 10
/*
* Abstract type for header fields
* a header field and its value.
*/
struct hfield {
- char *name; /* field name */
- char *value; /* field body */
- int hf_encoding; /* internal flag for transfer encoding to use */
- HF next; /* link to next header field */
+ char *name; /* field name */
+ char *value; /* field body */
+ int hf_encoding; /* internal flag for transfer encoding to use */
+ HF next; /* link to next header field */
};
/*
* of the Content-Type component.
*/
struct CTinfo {
- char *ci_type; /* content type */
- char *ci_subtype; /* content subtype */
- char *ci_attrs[NPARMS + 2]; /* attribute names */
- char *ci_values[NPARMS]; /* attribute values */
- char *ci_comment; /* RFC-822 comments */
- char *ci_magic;
+ char *ci_type; /* content type */
+ char *ci_subtype; /* content subtype */
+ char *ci_attrs[NPARMS + 2]; /* attribute names */
+ char *ci_values[NPARMS]; /* attribute values */
+ char *ci_comment; /* RFC-822 comments */
+ char *ci_magic;
};
/*
* removing Content-Transfer-Encoding.
*/
struct cefile {
- char *ce_file; /* decoded content (file) */
- FILE *ce_fp; /* decoded content (stream) */
- int ce_unlink; /* remove file when done? */
+ char *ce_file; /* decoded content (file) */
+ FILE *ce_fp; /* decoded content (stream) */
+ int ce_unlink; /* remove file when done? */
};
/*
* Primary structure for handling Content (Entity)
*/
struct Content {
- /* source (read) file */
- char *c_file; /* read contents (file) */
- FILE *c_fp; /* read contents (stream) */
- int c_unlink; /* remove file when done? */
-
- long c_begin; /* where content body starts in file */
- long c_end; /* where content body ends in file */
-
- /* linked list of header fields */
- HF c_first_hf; /* pointer to first header field */
- HF c_last_hf; /* pointer to last header field */
-
- /* copies of MIME related header fields */
- char *c_vrsn; /* MIME-Version: */
- char *c_ctline; /* Content-Type: */
- char *c_celine; /* Content-Transfer-Encoding: */
- char *c_id; /* Content-ID: */
- char *c_descr; /* Content-Description: */
- char *c_dispo; /* Content-Disposition: */
- char *c_partno; /* within multipart content */
-
- /* Content-Type info */
- struct CTinfo c_ctinfo; /* parsed elements of Content-Type */
- int c_type; /* internal flag for content type */
- int c_subtype; /* internal flag for content subtype */
-
- /* Content-Transfer-Encoding info (decoded contents) */
- CE c_cefile; /* structure holding decoded content */
- int c_encoding; /* internal flag for encoding type */
-
- /* Content-MD5 info */
- int c_digested; /* have we seen this header before? */
- unsigned char c_digest[16]; /* decoded MD5 checksum */
-
- /* pointers to content-specific structures */
- void *c_ctparams; /* content type specific data */
- struct exbody *c_ctexbody; /* data for type message/external */
-
- /* function pointers */
- InitFunc c_ctinitfnx; /* parse content body */
- OpenCEFunc c_ceopenfnx; /* get a stream to decoded contents */
- CloseCEFunc c_ceclosefnx; /* release stream */
- SizeCEFunc c_cesizefnx; /* size of decoded contents */
-
- int c_umask; /* associated umask */
- pid_t c_pid; /* process doing display */
- int c_rfc934; /* rfc934 compatibility flag */
-
- char *c_showproc; /* default, if not in profile */
- char *c_termproc; /* for charset madness... */
- char *c_storeproc; /* overrides profile entry, if any */
-
- char *c_storage; /* write contents (file) */
- char *c_folder; /* write contents (folder) */
+ /* source (read) file */
+ char *c_file; /* read contents (file) */
+ FILE *c_fp; /* read contents (stream) */
+ int c_unlink; /* remove file when done? */
+
+ long c_begin; /* where content body starts in file */
+ long c_end; /* where content body ends in file */
+
+ /* linked list of header fields */
+ HF c_first_hf; /* pointer to first header field */
+ HF c_last_hf; /* pointer to last header field */
+
+ /* copies of MIME related header fields */
+ char *c_vrsn; /* MIME-Version: */
+ char *c_ctline; /* Content-Type: */
+ char *c_celine; /* Content-Transfer-Encoding: */
+ char *c_id; /* Content-ID: */
+ char *c_descr; /* Content-Description: */
+ char *c_dispo; /* Content-Disposition: */
+ char *c_partno; /* within multipart content */
+
+ /* Content-Type info */
+ struct CTinfo c_ctinfo; /* parsed elements of Content-Type */
+ int c_type; /* internal flag for content type */
+ int c_subtype; /* internal flag for content subtype */
+
+ /* Content-Transfer-Encoding info (decoded contents) */
+ CE c_cefile; /* structure holding decoded content */
+ int c_encoding; /* internal flag for encoding type */
+
+ /* Content-MD5 info */
+ int c_digested; /* have we seen this header before? */
+ unsigned char c_digest[16]; /* decoded MD5 checksum */
+
+ /* pointers to content-specific structures */
+ void *c_ctparams; /* content type specific data */
+ struct exbody *c_ctexbody; /* data for type message/external */
+
+ /* function pointers */
+ InitFunc c_ctinitfnx; /* parse content body */
+ OpenCEFunc c_ceopenfnx; /* get a stream to decoded contents */
+ CloseCEFunc c_ceclosefnx; /* release stream */
+ SizeCEFunc c_cesizefnx; /* size of decoded contents */
+
+ int c_umask; /* associated umask */
+ pid_t c_pid; /* process doing display */
+ int c_rfc934; /* rfc934 compatibility flag */
+
+ char *c_showproc; /* default, if not in profile */
+ char *c_termproc; /* for charset madness... */
+ char *c_storeproc; /* overrides profile entry, if any */
+
+ char *c_storage; /* write contents (file) */
+ char *c_folder; /* write contents (folder) */
};
/*
* Flags for Content-Type (Content->c_type)
*/
-#define CT_UNKNOWN 0x00
-#define CT_APPLICATION 0x01
-#define CT_AUDIO 0x02
-#define CT_IMAGE 0x03
-#define CT_MESSAGE 0x04
-#define CT_MULTIPART 0x05
-#define CT_TEXT 0x06
-#define CT_VIDEO 0x07
-#define CT_EXTENSION 0x08
+#define CT_UNKNOWN 0x00
+#define CT_APPLICATION 0x01
+#define CT_AUDIO 0x02
+#define CT_IMAGE 0x03
+#define CT_MESSAGE 0x04
+#define CT_MULTIPART 0x05
+#define CT_TEXT 0x06
+#define CT_VIDEO 0x07
+#define CT_EXTENSION 0x08
/*
* Flags for Content-Transfer-Encoding (Content->c_encoding)
*/
-#define CE_UNKNOWN 0x00
-#define CE_BASE64 0x01
-#define CE_QUOTED 0x02
-#define CE_8BIT 0x03
-#define CE_7BIT 0x04
-#define CE_BINARY 0x05
-#define CE_EXTENSION 0x06
-#define CE_EXTERNAL 0x07 /* for external-body */
+#define CE_UNKNOWN 0x00
+#define CE_BASE64 0x01
+#define CE_QUOTED 0x02
+#define CE_8BIT 0x03
+#define CE_7BIT 0x04
+#define CE_BINARY 0x05
+#define CE_EXTENSION 0x06
+#define CE_EXTERNAL 0x07 /* for external-body */
/*
* TEXT content
*/
/* Flags for subtypes of TEXT */
-#define TEXT_UNKNOWN 0x00
-#define TEXT_PLAIN 0x01
-#define TEXT_RICHTEXT 0x02
-#define TEXT_ENRICHED 0x03
+#define TEXT_UNKNOWN 0x00
+#define TEXT_PLAIN 0x01
+#define TEXT_RICHTEXT 0x02
+#define TEXT_ENRICHED 0x03
/* Flags for character sets */
-#define CHARSET_UNKNOWN 0x00
-#define CHARSET_UNSPECIFIED 0x01 /* only needed when building drafts */
-#define CHARSET_USASCII 0x01
-#define CHARSET_LATIN 0x02
+#define CHARSET_UNKNOWN 0x00
+#define CHARSET_UNSPECIFIED 0x01 /* only needed when building drafts */
+#define CHARSET_USASCII 0x01
+#define CHARSET_LATIN 0x02
/* Structure for text content */
struct text {
- int tx_charset; /* flag for character set */
+ int tx_charset; /* flag for character set */
};
/*
*/
/* Flags for subtypes of MULTIPART */
-#define MULTI_UNKNOWN 0x00
-#define MULTI_MIXED 0x01
-#define MULTI_ALTERNATE 0x02
-#define MULTI_DIGEST 0x03
-#define MULTI_PARALLEL 0x04
+#define MULTI_UNKNOWN 0x00
+#define MULTI_MIXED 0x01
+#define MULTI_ALTERNATE 0x02
+#define MULTI_DIGEST 0x03
+#define MULTI_PARALLEL 0x04
/* Structure for subparts of a multipart content */
struct part {
- CT mp_part; /* Content structure for subpart */
- struct part *mp_next; /* pointer to next subpart structure */
+ CT mp_part; /* Content structure for subpart */
+ struct part *mp_next; /* pointer to next subpart structure */
};
/* Main structure for multipart content */
struct multipart {
- char *mp_start; /* boundary string separating parts */
- char *mp_stop; /* terminating boundary string */
- struct part *mp_parts; /* pointer to first subpart structure */
+ char *mp_start; /* boundary string separating parts */
+ char *mp_stop; /* terminating boundary string */
+ struct part *mp_parts; /* pointer to first subpart structure */
};
/*
*/
/* Flags for subtypes of MESSAGE */
-#define MESSAGE_UNKNOWN 0x00
-#define MESSAGE_RFC822 0x01
-#define MESSAGE_PARTIAL 0x02
-#define MESSAGE_EXTERNAL 0x03
+#define MESSAGE_UNKNOWN 0x00
+#define MESSAGE_RFC822 0x01
+#define MESSAGE_PARTIAL 0x02
+#define MESSAGE_EXTERNAL 0x03
/* Structure for message/partial */
struct partial {
- char *pm_partid;
- int pm_partno;
- int pm_maxno;
- int pm_marked;
- int pm_stored;
+ char *pm_partid;
+ int pm_partno;
+ int pm_maxno;
+ int pm_marked;
+ int pm_stored;
};
/* Structure for message/external */
struct exbody {
- CT eb_parent; /* pointer to controlling content structure */
- CT eb_content; /* pointer to internal content structure */
- char *eb_partno;
- char *eb_access;
- int eb_flags;
- char *eb_name;
- char *eb_permission;
- char *eb_site;
- char *eb_dir;
- char *eb_mode;
- unsigned long eb_size;
- char *eb_server;
- char *eb_subject;
- char *eb_body;
+ CT eb_parent; /* pointer to controlling content structure */
+ CT eb_content; /* pointer to internal content structure */
+ char *eb_partno;
+ char *eb_access;
+ int eb_flags;
+ char *eb_name;
+ char *eb_permission;
+ char *eb_site;
+ char *eb_dir;
+ char *eb_mode;
+ unsigned long eb_size;
+ char *eb_server;
+ char *eb_subject;
+ char *eb_body;
};
/*
*/
/* Flags for subtype of APPLICATION */
-#define APPLICATION_UNKNOWN 0x00
-#define APPLICATION_OCTETS 0x01
-#define APPLICATION_POSTSCRIPT 0x02
+#define APPLICATION_UNKNOWN 0x00
+#define APPLICATION_OCTETS 0x01
+#define APPLICATION_POSTSCRIPT 0x02
/*
* Structures for mapping types to their internal flags
*/
struct k2v {
- char *kv_key;
- int kv_value;
+ char *kv_key;
+ int kv_value;
};
extern struct k2v SubText[];
extern struct k2v Charset[];
* the functions to handle them.
*/
struct str2init {
- char *si_key;
- int si_val;
- InitFunc si_init;
+ char *si_key;
+ int si_val;
+ InitFunc si_init;
};
extern struct str2init str2cts[];
extern struct str2init str2ces[];
int open7Bit (CT, char **);
void close_encoding (CT);
-extern int checksw; /* Add Content-MD5 field */
+extern int checksw; /* Add Content-MD5 field */