X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=h%2Fmhparse.h;h=782ab51a5ff3079ee77852520bc5f113ebee7c1b;hp=e3abf318e83f10c250b90fdd0d4cb257460e20e7;hb=18591f8e001ecedbee48a51c1d1f08ebaa1c15c8;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1 diff --git a/h/mhparse.h b/h/mhparse.h index e3abf31..782ab51 100644 --- a/h/mhparse.h +++ b/h/mhparse.h @@ -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 *);