/* $Id: melib.h,v 1.52 2006/06/28 19:21:09 hurtta Exp $ */ /****************************************************************************** * The Elm (ME+) Mail System - $Revision: 1.52 $ $State: Exp $ * * Author: Kari Hurtta (was hurtta+elm@ozone.FMI.FI) *****************************************************************************/ /* melib/type_check.c */ /* Return 1 to decode */ typedef int type_mismatch_prompt P_((mime_t *ptr, int displaying)); #ifdef USE_PGP /* pgp_decode.c */ extern char pgp_passphrase[PGP_NUM][STRING]; extern int pgp_expires; extern enum pgp_version have_pgp P_((enum pgp_version v)); extern enum pgp_version decode_pgp_version P_((char * c)); extern int pgp_void_passphrase P_((void)); extern int pgp_goodPassphrase P_((enum pgp_version v)); extern int pgp_decrypt_init P_((FILE **fpin, FILE **fpout, int opt, enum pgp_version v, struct run_state *rs)); #endif /* parse_util.c */ typedef int header_filter P_((header_list_ptr, int)); extern int NULL_header_filter P_((header_list_ptr, int)); extern void state_write_headers P_((out_state_t * s, header_list_ptr hdr, header_filter * filter, int flag, int demime, charset_t defcharset)); extern void state_write_raw_headers P_((out_state_t * s, header_list_ptr hdr, header_filter * filter, int flag)); extern void state_write_header P_((out_state_t * s, header_list_ptr next, int demime, charset_t defcharset)); extern void state_write_raw_header P_((out_state_t * s, header_list_ptr next)); extern header_list_ptr file_read_headers P_((FILE *, int)); extern long skip_envelope P_((struct header_rec *hdr, FILE *fp)); /* mime.c */ extern void mime_panic P_((char *,int,char *, char *)); extern int check_encoding P_((char *)); /* mime_decode.c */ extern int rfc822_header_filter P_((header_list_ptr, int)); /* Content-transfer-encoding decoders: */ extern void base64_decode P_((in_state_t *, out_state_t *, int, int)); extern void uudecode P_((in_state_t *s_in, out_state_t *s_out, int length, int astext)); extern void quoted_printable_decode P_((in_state_t *, out_state_t *, int, int)); extern void null_decode P_((mime_t *, in_state_t *, out_state_t *, charset_t, struct header_rec *)); extern int is_rfc1522 P_((char *)); /* 0: failure, 1: succeed */ extern int run_cte_decoder P_((mime_t *, in_state_t *, out_state_t *)); /* mime_parse.c */ extern void mime_t_clear P_((mime_t *mt)); extern void mime_t_copy P_((mime_t *, mime_t *)); extern void mime_t_zero P_((mime_t *)); extern void mime_destroy P_((mime_t *)); extern int mime_get_charset P_((charset_t *ret, struct mime_param *buffer, charset_t * display_charset, charset_t default_content_charset )); extern void mime_warnings P_((struct header_rec *)); extern int mime_parse_routine P_((struct folder_info *folder, struct header_rec *hdr, FILE *fp)); extern void parse_mime_headers1 P_((mime_t *ptr, header_list_ptr headers, long part_offset, long body_offset, int opts, charset_t hdr_charset, struct header_errors ** header_error)); extern int is_pre_mime_content_type P_((mime_t *ptr, char *content_type)); /* mparser.c */ extern int mime_parser_subparts P_((struct mime_parser_data *P)); extern struct mimeinfo * mime_parser_index P_((struct mime_parser_data *P, int idx)); /* 0 == no parser, 1 == parser found */ extern int mime_parser_parse P_((struct mimeinfo *s, charset_t defcharset, FILE *fp, struct header_errors **header_error)); extern void copy_parser_data P_((struct mime_parser_data **target, struct mime_parser_data *source)); /* mailcap.c ----------------------------------------------------------- */ extern void read_mailcaps P_((void)); #if ANSI_C struct mailcap_entry; #endif /* Return value must be free()ed */ extern char * mailcap_view_command P_((struct mailcap_entry *f, mime_t *p)); /* mime_selector.c ---------------------------------------------------- */ extern int mime_classify_media P_((mime_t *p,struct header_rec * hdr)); /* Returns -1 on failure otherwise same mask than mime_classify_media() */ typedef int mime_run_selector P_((mime_t *p,struct header_rec * hdr)); typedef mime_run_selector *mime_run_selector_t; typedef void encrypted_decoder P_((mime_t *init, mime_t *data, in_state_t *state_in, out_state_t *state_out, charset_t defcharset, struct header_rec *mss, type_mismatch_prompt *badtype)); typedef encrypted_decoder * EC_decoder_t; typedef void signed_decoder P_((mime_t *body, mime_t *sign, in_state_t *state_in, out_state_t *state_out, const char *micalg, charset_t defcharset, struct header_rec *mss, type_mismatch_prompt *badtype)); typedef signed_decoder * SG_decoder_t; #define MIME_selector_magic 0xFD04 struct mime_selected_handler { unsigned short magic; /* MIME_selector_magic */ struct mt_handle_pager *handler; /* Found internal handler */ struct mailcap_entry *entry; /* Found external handler */ EC_decoder_t EC_decoder; SG_decoder_t SG_decoder; mime_t * selected_alternative; unsigned use_entry:1; }; typedef void CT_decoder P_((mime_t *part, in_state_t *instream, out_state_t *outstream, charset_t defcharset, struct header_rec *hdr, type_mismatch_prompt *badtype)); typedef CT_decoder *CT_decoder_t; struct mt_handle_pager { CT_decoder_t func; mime_run_selector_t selector; }; extern void mime_decode P_((mime_t *ptr, in_state_t *state_in, out_state_t *state_out, charset_t defcharset, struct header_rec *mss, type_mismatch_prompt *badtype )); /* ----------- */ #define WALKHANDLER_magic 0xFD05 struct walk_handler { unsigned short magic; /* WALKHANDLER_magic */ struct handler_type * handler_type; union walk_hadler_data { struct search_mes * search_mes; void * dummy; } u; }; typedef void mw_init_handler P_((struct walk_handler *hdl)); typedef void mw_free_handler P_((struct walk_handler *hdl)); typedef void mw_action_handler P_((struct walk_handler *hdl,mime_t *ptr, in_state_t *state_in, /* May be NULL */ FILE *F, out_state_t *state_out /* May be NULL */ )); #define WALKTYPE_magic 0xFD06 struct handler_type { unsigned short magic; /* WALKTYPE_magic */ mw_init_handler *mw_init; mw_free_handler *mw_free; mw_action_handler *mw_action; }; extern struct walk_handler * malloc_walk_handler P_((struct handler_type *t)); extern void free_walk_handler P_((struct walk_handler **ptr)); extern void simple_mime_walk P_((mime_t *ptr, struct walk_handler *handler, in_state_t *state_in, /* May be NULL */ out_state_t *state_out /* May be NULL */ )); /* partial.c */ struct partial_vector { mime_t * reference; char * id; /* Unique identifier field */ int number; /* 1 .. total */ int total; /* -1 if not given */ }; extern void free_partial_vector P_((struct header_rec *mss)); extern struct partial_vector *reg_partial P_((struct header_rec *mss, mime_t * reference)); /* mime_param.c */ #if ANSI_C struct mime_param; #endif extern CONST char * get_mime_param_compat P_((struct mime_param *P, char *name)); extern CONST char * get_mime_param_ascii P_((struct mime_param *P, char *name)); extern CONST struct string * get_mime_param P_((struct mime_param *P, char *name)); extern void free_mime_param P_((struct mime_param **x)); extern struct mime_param * parse_mime_param P_((const char *headername, const char *value, charset_t def, struct header_errors **header_error)); extern struct mime_param * parse_mime_param_string P_((struct string *value, int gen_compat_len, int plain_mode)); extern struct mime_param * copy_mime_param P_((struct mime_param *src)); extern struct string * show_mime_params P_((struct mime_param *P)); extern char * encode_mime_params P_((struct mime_param *P)); extern char ** encode_mime_params_v P_((struct mime_param *P)); extern char ** split_mime_params P_((struct mime_param **P, struct string *in_buffer, int gen_compat_len, int plain_mode)); extern void mime_params_add_compat P_((struct mime_param **P, char *name, char *value)); extern void mime_params_add P_((struct mime_param **P, char *name, struct string *value)); /* encode.c */ /* 0 == failure 1 == OK -1 == Ctrl-C */ extern int getkey P_((int send)); extern void get_key_no_prompt P_((void)); extern void encode P_((char *line)); extern void makekey P_((char *rkey)); /* parse_helper.c */ extern void mime_parse_helper P_((struct header_rec *entry, header_list_ptr parsed_headers )); extern void start_body_helper P_((struct header_rec *current_header, long content_start, header_list_ptr parsed_headers)); /* * Local Variables: * mode:c * c-basic-offset:4 * buffer-file-coding-system: iso-8859-1 * End: */