/* $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 <hurtta+elm@posti.FMI.FI>
* or Kari Hurtta <elm@elmme-mailer.org>
*****************************************************************************/
/* 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:
*/
syntax highlighted by Code2HTML, v. 0.9.1