 typedef enum {
    US_ASCII, ISO8859_1, ISO8859_2, ISO8859_3, ISO8859_4, ISO8859_5,
    ISO8859_6, ISO8859_7, ISO8859_8, ISO8859_9,
} ISO_charset;
 char *ISO_charset_repr[] ;
#define charset2str(c) (ISO_charset_repr[c]) 
 ISO_charset str2charset(char *s);
 typedef enum {
    MIME_8bit, MIME_7bit, MIME_quoted_printable, MIME_base64, MIME_x_gzip,
} MIME_encoding;
 MIME_encoding lookup_encoding(char *s);
#define MAXLINELEN 512 
 typedef enum {
    Subject,
    Title,
    Expires,
    Sender,
    From,
    Newsgroups,
    Content_Type,
    Content_Length,
    Reply_To,
    References,
    Date,
    Lines,
    Base,
    Author,
    Mailing_List,
    Boundary,
    Location,
    EndOfHeaderTp,
} HeaderTp;
 typedef struct {
    char *head[EndOfHeaderTp];
    MIME_encoding content_transfer_encoding;
    ISO_charset charset;
} MIME_header;
 void free_header(MIME_header header);
 void read_header(FILE *f, MIME_header *header, char *stopline);
 void parse_header(char *buf, MIME_header *header);
