/* $Id: misclib.h,v 1.8 2006/09/15 19:56:31 hurtta Exp $ */ /****************************************************************************** * The Elm (ME+) Mail System - $Revision: 1.8 $ $State: Exp $ * * Author: Kari Hurtta * or Kari Hurtta *****************************************************************************/ /* lib/misc/init.c */ extern struct terminal_map_item * system_terminal_map; extern struct terminal_map_item * user_terminal_map; extern struct mime_types_item * system_mimetypes_map; extern struct mime_types_item * user_mimetypes_map; extern void init_misclib P_((void)); /* lib/misc/terminal.c */ /* May be called from signal handler -- on that situation use buffer specified as argument -- otherwise result is malloced */ extern char * terminal_set_title P_((char *terminal, char *window_title, char *icon_title, char * buffer, int size)); extern struct terminal_map_item * load_terminal_map P_((const char *filename, int *errors)); extern void terminal_can_switch P_((const char *terminal, charset_t *storage, int *n, int max)); extern int terminal_can_switch_to P_((const char *terminal, charset_t set, int silent)); extern void dump_terminal_map P_((FILE *f, struct terminal_map_item *map)); extern void terminal_change_system_charset P_((char *terminal)); extern char * terminal_set_info P_((char *terminal, charset_t set, screen_info_p terminal_info)); /* May be called from signal handler -- on that situation use buffer specified as argument -- otherwise result is malloced -- terminal_info must be alloced with create_terminal_info() beforehand */ extern char * terminal_switch_to P_((char *terminal, charset_t set, screen_info_p terminal_info, char * buffer, int size, int silent)); extern void change_terminal_map P_((struct terminal_map_item **map, struct terminal_map_item *new)); extern void free_terminal_map P_((struct terminal_map_item **map)); /* lib/misc/mediatype.c */ enum mime_major_type { MIME_TYPE_LEAF = -1 /* Only avaliable for register_mt_defhandler */, MIME_TYPE_UNKNOWN = 0, MIME_TYPE_APPLICATION = 1, MIME_TYPE_AUDIO = 2, MIME_TYPE_IMAGE = 3, MIME_TYPE_MESSAGE = 4, MIME_TYPE_MULTIPART = 5, MIME_TYPE_TEXT = 6, MIME_TYPE_VIDEO = 7 }; typedef struct media_type * media_type_t; /* WARNING: May return codes > MIME_TYPE_VIDEO if unknow or bad type */ extern enum mime_major_type get_major_type_code P_((media_type_t T)); extern CONST char * get_major_type_name P_((media_type_t T)); extern CONST char * get_major_type_name2 P_((enum mime_major_type m)); #define MIME_RFC822 1 #define MIME_MIXED 2 #define MIME_DIGEST 4 #define MIME_ALTERNATIVE 8 #define MIME_SIGNED 16 #define MIME_ENCRYPTED 32 #define MIME_PARTIAL 64 /* Message fragment */ extern int get_type_flags P_((media_type_t T)); extern CONST char * get_subtype_name P_((media_type_t T)); extern enum mime_major_type give_major_type P_(( const char * major, int create)); extern media_type_t give_media_type P_(( const char * major, const char * minor, int create)); extern media_type_t give_media_type2 P_((enum mime_major_type major_type_code, const char * minor, int create)); extern int give_text_type_code P_((media_type_t T)); enum mt_handle_type { handle_pager, handle_mime_parser, handle_mailcap_entry, handle_ANY = -1 }; struct media_type_handle { enum mt_handle_type type; union mt_handles { void *any; struct mt_handle_pager *pager; struct mailcap_entry *mailcap; struct mime_parser *parser_code; } p; }; struct COMPAT_media_type_handle { enum mt_handle_type type; void *any; }; extern void register_mt_handler P_((media_type_t T, struct media_type_handle *H)); extern void register_mt_defhandler P_((int major_type_code, struct media_type_handle *H)); extern int walk_mt_handler P_((media_type_t T, struct media_type_handle **H, int *is_default, enum mt_handle_type kind )); /* lib/misc/mime_types.c */ extern struct mime_types_item * builtin_mimetypes_map; extern struct mime_types_item * load_mime_types_map P_((const char *filename, int *errors)); extern struct mime_types_item * loc_mime_type P_((struct mime_types_item *list, char *extension)); extern media_type_t mime_type_to_media_type P_((const struct mime_types_item *item)); extern CONST char * mime_type_to_params P_((const struct mime_types_item *item, charset_t *cs)); extern CONST char * mime_type_to_extension P_((struct mime_types_item *item)); extern void dump_mime_types_map P_((FILE *f, struct mime_types_item *map)); extern struct scan_list * get_scan_list P_((struct mime_types_item *list, char *extension)); extern void free_scan_list P_((struct scan_list **list)); extern void append_scanlist P_((struct scan_list *list, struct scan_list *other)); extern int scanlist_need_more P_((struct scan_list *list, int ch)); extern struct mime_types_item * loc_mime_type_from_scan P_((struct scan_list *list)); extern struct mime_types_item * loc_mime_type_from_scan_extension P_((struct scan_list *list, char *extension)); extern void change_mime_types_map P_((struct mime_types_item **map, struct mime_types_item *new)); extern void free_mime_types_map P_((struct mime_types_item **map)); extern struct scan_list * get_scan_list_by_type P_((struct mime_types_item *list, media_type_t mime_type)); /* Returns 1 is list is not empty */ extern int have_scanlist P_((struct scan_list *list)); typedef int filter_scanlist_OK_f P_((const mime_t * att, const struct mime_types_item *type_item)); void filter_scanlist P_((struct scan_list *list, const mime_t * att, filter_scanlist_OK_f filter)); /* lib/misc/charset.c */ extern void dump_by_MIBenum P_((FILE *f)); extern void dump_charset_map P_((FILE *f, struct charset_map_item *map)); extern void change_charset_map P_((struct charset_map_item **map, struct charset_map_item *new)); extern void free_charset_map P_((struct charset_map_item **map)); /* * Local Variables: * mode:c * c-basic-offset:4 * buffer-file-coding-system: iso-8859-1 * End: */