Factor trim format function out
[mmh] / h / mhparse.h
index e3abf31..782ab51 100644 (file)
@@ -1,40 +1,40 @@
 /*
- * mhparse.h -- definitions for parsing/building of MIME content
- *           -- (mhparse.c/mhbuildsbr.c)
- */
+** mhparse.h -- definitions for parsing/building of MIME content
+**           -- (mhparse.c/mhbuild.c)
+*/
 
 #define NPARTS  50
 #define NTYPES  20
 #define NPARMS  10
 
 /*
- * Abstract type for header fields
- */
+** Abstract type for header fields
+*/
 typedef struct hfield *HF;
 
 /*
- * Abstract types for MIME parsing/building
- */
+** Abstract types for MIME parsing/building
+*/
 typedef struct cefile  *CE;
 typedef struct CTinfo  *CI;
 typedef struct Content *CT;
 
 /*
- * type for Init function (both type and transfer encoding)
- */
+** type for Init function (both type and transfer encoding)
+*/
 typedef int (*InitFunc) (CT);
 
 /*
- * types for various transfer encoding access functions
- */
+** types for various transfer encoding access functions
+*/
 typedef int (*OpenCEFunc) (CT, char **);
 typedef void (*CloseCEFunc) (CT);
 typedef unsigned long (*SizeCEFunc) (CT);
 
 /*
- * Structure for storing/encoding/decoding
- * a header field and its value.
- */
+** Structure for storing/encoding/decoding
+** a header field and its value.
+*/
 struct hfield {
        char *name;       /* field name */
        char *value;      /* field body */
@@ -43,9 +43,9 @@ struct hfield {
 };
 
 /*
- * Structure for storing parsed elements
- * of the Content-Type component.
- */
+** Structure for storing parsed elements
+** of the Content-Type component.
+*/
 struct CTinfo {
        char *ci_type;               /* content type     */
        char *ci_subtype;            /* content subtype  */
@@ -56,9 +56,9 @@ struct CTinfo {
 };
 
 /*
- * Structure for storing decoded contents after
- * removing Content-Transfer-Encoding.
- */
+** Structure for storing decoded contents after
+** removing Content-Transfer-Encoding.
+*/
 struct cefile {
        char *ce_file;   /* decoded content (file)   */
        FILE *ce_fp;     /* decoded content (stream) */
@@ -66,8 +66,8 @@ struct cefile {
 };
 
 /*
- * Primary structure for handling Content (Entity)
- */
+** Primary structure for handling Content (Entity)
+*/
 struct Content {
        /* source (read) file */
        char *c_file;                /* read contents (file)              */
@@ -94,18 +94,14 @@ struct Content {
        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 */
+       char *c_charset;             /* charset string                    */
 
        /* 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                */
@@ -114,11 +110,8 @@ struct Content {
        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)             */
@@ -126,8 +119,8 @@ struct Content {
 };
 
 /*
- * Flags for Content-Type (Content->c_type)
- */
+** Flags for Content-Type (Content->c_type)
+*/
 #define CT_UNKNOWN      0x00
 #define CT_APPLICATION  0x01
 #define CT_AUDIO        0x02
@@ -139,8 +132,8 @@ struct Content {
 #define CT_EXTENSION    0x08
 
 /*
- * Flags for Content-Transfer-Encoding (Content->c_encoding)
- */
+** Flags for Content-Transfer-Encoding (Content->c_encoding)
+*/
 #define CE_UNKNOWN      0x00
 #define CE_BASE64       0x01
 #define CE_QUOTED       0x02
@@ -151,8 +144,8 @@ struct Content {
 #define CE_EXTERNAL     0x07    /* for external-body */
 
 /*
- * TEXT content
- */
+** TEXT content
+*/
 
 /* Flags for subtypes of TEXT */
 #define TEXT_UNKNOWN    0x00
@@ -172,8 +165,8 @@ struct text {
 };
 
 /*
- * MULTIPART content
- */
+** MULTIPART content
+*/
 
 /* Flags for subtypes of MULTIPART */
 #define MULTI_UNKNOWN    0x00
@@ -196,8 +189,8 @@ struct multipart {
 };
 
 /*
- * MESSAGE content
- */
+** MESSAGE content
+*/
 
 /* Flags for subtypes of MESSAGE */
 #define MESSAGE_UNKNOWN   0x00
@@ -214,27 +207,9 @@ struct partial {
        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;
-};
-
 /*
- * APPLICATION content
- */
+** APPLICATION content
+*/
 
 /* Flags for subtype of APPLICATION */
 #define APPLICATION_UNKNOWN     0x00
@@ -243,8 +218,8 @@ struct exbody {
 
 
 /*
- * Structures for mapping types to their internal flags
- */
+** Structures for mapping types to their internal flags
+*/
 struct k2v {
        char *kv_key;
        int kv_value;
@@ -256,9 +231,9 @@ extern struct k2v SubMessage[];
 extern struct k2v SubApplication[];
 
 /*
- * Structures for mapping (content) types to
- * the functions to handle them.
- */
+** Structures for mapping (content) types to
+** the functions to handle them.
+*/
 struct str2init {
        char *si_key;
        int si_val;
@@ -266,17 +241,14 @@ struct str2init {
 };
 extern struct str2init str2cts[];
 extern struct str2init str2ces[];
-extern struct str2init str2methods[];
 
 /*
- * prototypes
- */
-int pidcheck (int);
-CT parse_mime (char *);
-int add_header (CT, char *, char *);
-int get_ctinfo (unsigned char *, CT, int);
-int params_external (CT, int);
-int open7Bit (CT, char **);
-void close_encoding (CT);
-
-extern int checksw;    /* Add Content-MD5 field */
+** prototypes
+*/
+int pidcheck(int);
+CT parse_mime(char *);
+int add_header(CT, char *, char *);
+int get_ctinfo(unsigned char *, CT, int);
+int open7Bit(CT, char **);
+void close_encoding(CT);
+char *extract_name_value(char *, char *);