replace the pathetic mutt_parse_rfc822_line function with a really better
[apps/madmutt.git] / protos.h
index 44b7cbb..d87c1f3 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -19,6 +19,9 @@
 
 #include "mbyte.h"
 
+#include <lib-lib/buffer.h>
+#include <lib-lib/mapping.h>
+
 #define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')
 
 #define mutt_make_string(A,B,C,D,E) _mutt_make_string(A,B,C,D,E,0)
@@ -28,10 +31,7 @@ void _mutt_make_string (char *, size_t, const char *, CONTEXT *,
 #define mutt_system(x) _mutt_system(x,0)
 int _mutt_system (const char *, int);
 
-#define mutt_new_parameter() mem_calloc (1, sizeof (PARAMETER))
-#define mutt_new_header() mem_calloc (1, sizeof (HEADER))
-#define mutt_new_envelope() mem_calloc (1, sizeof (ENVELOPE))
-#define mutt_new_enter_state() mem_calloc (1, sizeof (ENTER_STATE))
+#define mutt_new_enter_state() p_new(ENTER_STATE, 1)
 
 typedef const char *format_t (char *, size_t, char, const char *,
                               const char *, const char *, const char *,
@@ -39,7 +39,6 @@ typedef const char *format_t (char *, size_t, char, const char *,
 
 void mutt_FormatString (char *, size_t, const char *, format_t *,
                         unsigned long, format_flag);
-void mutt_parse_content_type (char *, BODY *);
 void mutt_generate_boundary (PARAMETER **);
 void mutt_delete_parameter (const char *attribute, PARAMETER ** p);
 void mutt_set_parameter (const char *, const char *, PARAMETER **);
@@ -52,29 +51,25 @@ int quadoption (int);
 
 int mutt_option_value (const char* val, char* dst, size_t dstlen);
 
-ADDRESS *mutt_default_from (void);
-ADDRESS *mutt_remove_duplicates (ADDRESS *);
-ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);
+address_t *mutt_default_from (void);
+address_t *mutt_remove_duplicates (address_t *);
+address_t *mutt_parse_adrlist (address_t *, const char *);
 
 BODY *mutt_make_file_attach (const char *);
 BODY *mutt_make_message_attach (CONTEXT *, HEADER *, int);
 BODY *mutt_remove_multipart (BODY *);
 BODY *mutt_make_multipart (BODY *);
-BODY *mutt_new_body (void);
-BODY *mutt_parse_multipart (FILE *, const char *, long, int);
-BODY *mutt_parse_messageRFC822 (FILE *, BODY *);
-BODY *mutt_read_mime_header (FILE *, int);
+BODY *mutt_new_body(void);
 
 CONTENT *mutt_get_content_info (const char *fname, BODY * b);
 
 LIST *mutt_make_references (ENVELOPE * e);
-LIST *mutt_parse_references (char *, int);
 
 ENVELOPE *mutt_read_rfc822_header (FILE *, HEADER *, short, short);
 HEADER *mutt_dup_header (HEADER *);
 
 int mutt_cmp_header (const HEADER*, const HEADER*);
-int mutt_cmp_addr (const ADDRESS * a, const ADDRESS * b);
+int mutt_cmp_addr (const address_t * a, const address_t * b);
 int mutt_cmp_list (const LIST * a, const LIST * b);
 int mutt_cmp_env (const ENVELOPE * e1, const ENVELOPE * e2);
 int mutt_cmp_param (const PARAMETER * p1, const PARAMETER * p2);
@@ -82,8 +77,6 @@ int mutt_cmp_body (const BODY * b1, const BODY * b2);
 
 time_t mutt_decrease_mtime (const char *, struct stat *);
 void mutt_set_mtime (const char*, const char*);
-time_t mutt_local_tz (time_t);
-time_t mutt_mktime (struct tm *, int);
 time_t mutt_parse_date (const char *, HEADER *);
 int is_from (const char *, char *, size_t, time_t *);
 
@@ -95,9 +88,9 @@ char *mutt_find_hook (int, const char *);
 char *mutt_gecos_name (char *, size_t, struct passwd *);
 char *mutt_gen_msgid (void);
 char *mutt_get_body_charset (char *, size_t, BODY *);
-const char *mutt_get_name (ADDRESS *);
+const char *mutt_get_name (address_t *);
 char *mutt_get_parameter (const char *, PARAMETER *);
-char *mutt_crypt_hook (ADDRESS *);
+char *mutt_crypt_hook (address_t *);
 char *mutt_make_date (char *, size_t);
 
 const char *mutt_make_version (int full);
@@ -111,8 +104,9 @@ void mutt_adv_mktemp (const char*, char*, size_t);
 void mutt_allow_interrupt (int);
 void mutt_block_signals (void);
 void mutt_block_signals_system (void);
-int mutt_bounce_message (FILE * fp, HEADER *, ADDRESS *);
+int mutt_bounce_message (FILE * fp, HEADER *, address_t *);
 void mutt_canonical_charset (char *, size_t, const char *);
+int mutt_count_body_parts (HEADER *hdr, int flags);
 void mutt_check_rescore (CONTEXT *);
 void mutt_clear_error (void);
 void mutt_default_save (char *, size_t, HEADER *);
@@ -129,23 +123,21 @@ void mutt_expand_fmt (char *, size_t, const char *, const char *);
 void mutt_expand_link (char *, const char *, const char *);
 void mutt_fix_reply_recipients (ENVELOPE * env);
 void mutt_folder_hook (char *);
-void mutt_format_string (char *, size_t, int, int, int, char, const char *,
-                         size_t, int);
+void mutt_format_string (char *, ssize_t, int, int, int, char, const char *,
+                         ssize_t, int);
 void mutt_format_s (char *, size_t, const char *, const char *);
 void mutt_format_s_tree (char *, size_t, const char *, const char *);
 void mutt_forward_intro (FILE * fp, HEADER * cur);
 void mutt_forward_trailer (FILE * fp);
 void mutt_free_body (BODY **);
 void mutt_free_color (int fg, int bg);
-void mutt_free_envelope (ENVELOPE **);
-void mutt_free_header (HEADER **);
-void mutt_free_parameter (PARAMETER **);
 void mutt_generate_header (char *, size_t, HEADER *, int);
 void mutt_help (int);
 void mutt_draw_tree (CONTEXT *);
 void mutt_make_attribution (CONTEXT * ctx, HEADER * cur, FILE * out);
 void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur);
 void mutt_make_help (char *, size_t, char *, int, int);
+char *mutt_compile_help(char *, size_t, int, struct mapping_t *);
 void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
                                    HEADER * cur, ENVELOPE * curenv);
 void mutt_make_post_indent (CONTEXT * ctx, HEADER * cur, FILE * out);
@@ -154,10 +146,8 @@ void mutt_message_to_7bit (BODY *, FILE *);
 
 #define mutt_mktemp(a) _mutt_mktemp (a, __FILE__, __LINE__)
 void _mutt_mktemp (char *, const char *, int);
-void mutt_normalize_time (struct tm *);
 void mutt_paddstr (int, const char *);
 void mutt_parse_mime_message (CONTEXT * ctx, HEADER *);
-void mutt_parse_part (FILE *, BODY *);
 #define mutt_perror(a) _mutt_perror (a, __FILE__, __LINE__)
 void _mutt_perror (const char*, const char*,int);
 void mutt_prepare_envelope (ENVELOPE *, int);
@@ -166,11 +156,10 @@ void mutt_pretty_mailbox (char *);
 void mutt_pretty_size (char *, size_t, long);
 void mutt_pipe_message (HEADER *);
 void mutt_print_message (HEADER *);
-void mutt_print_patchlist (void);
 void mutt_query_exit (void);
 void mutt_query_menu (char *, size_t);
-void mutt_safe_path (char *s, size_t l, ADDRESS * a);
-void mutt_save_path (char *s, size_t l, ADDRESS * a);
+void mutt_safe_path (char *s, size_t l, address_t * a);
+void mutt_save_path (char *s, size_t l, address_t * a);
 void mutt_score_message (CONTEXT *, HEADER *, int);
 void mutt_select_fcc (char *, size_t, HEADER *);
 
@@ -192,19 +181,16 @@ void mutt_unblock_signals_system (int);
 void mutt_update_encoding (BODY * a);
 void mutt_version (void);
 void mutt_write_references (LIST *, FILE *);
-void mutt_write_address_list (ADDRESS * adr, FILE * fp, int linelen,
+void mutt_write_address_list (address_t * adr, FILE * fp, int linelen,
                               int display);
 
 int mutt_addwch (wchar_t);
 int mutt_alloc_color (int fg, int bg);
 int mutt_any_key_to_continue (const char *);
-int mutt_builtin_editor (const char *, HEADER *, HEADER *);
 int mutt_can_decode (BODY *);
 int mutt_change_flag (HEADER *, int);
-int mutt_check_encoding (const char *);
 int mutt_check_key (const char *);
 int mutt_check_menu (const char *);
-int mutt_check_mime_type (const char *);
 int mutt_check_month (const char *);
 int mutt_check_overwrite (const char *, const char *, char *, size_t, int *,
                           char **);
@@ -229,17 +215,17 @@ int mutt_resend_message (FILE *, CONTEXT *, HEADER *);
 int _mutt_enter_fname (const char *, char *, size_t, int *, int, int,
                        char ***, int *);
 #define mutt_get_field(A,B,C,D) _mutt_get_field(A,B,C,D,0,NULL,NULL)
-int _mutt_get_field (char *, char *, size_t, int, int, char ***, int *);
+int _mutt_get_field (const char *, char *, size_t, int, int, char ***, int *);
 int mutt_get_field_unbuffered (char *, char *, size_t, int);
 int mutt_get_hook_type (const char *);
 int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, size_t);
 int mutt_index_menu (void);
-int mutt_invoke_mta (ADDRESS *, ADDRESS *, ADDRESS *, ADDRESS *, const char *,
+int mutt_invoke_mta (address_t *, address_t *, address_t *, address_t *, const char *,
                      int);
-int mutt_is_mail_list (ADDRESS *);
-int mutt_is_list_cc (int, ADDRESS *, ADDRESS *);
-int mutt_is_list_recipient (int, ADDRESS *, ADDRESS *);
-int mutt_is_subscribed_list (ADDRESS *);
+int mutt_is_mail_list (address_t *);
+int mutt_is_list_cc (int, address_t *, address_t *);
+int mutt_is_list_recipient (int, address_t *, address_t *);
+int mutt_is_subscribed_list (address_t *);
 int mutt_is_text_part (BODY *);
 int mutt_is_valid_mailbox (const char *);
 int mutt_lookup_mime_type (BODY *, const char *);
@@ -257,9 +243,6 @@ int mutt_parse_mono (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 int mutt_parse_unmono (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 int mutt_parse_push (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 int mutt_parse_rc_line ( /* const */ char *, BUFFER *, BUFFER *);
-int mutt_parse_rfc822_line (ENVELOPE * e, HEADER * hdr, char *line, char *p,
-                            short user_hdrs, short weed, short do_2047,
-                            LIST ** lastp);
 int mutt_parse_score (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 int mutt_parse_unscore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
 int mutt_parse_unhook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
@@ -300,19 +283,13 @@ int mutt_from_base64 (char *, const char *);
 /* utf8.c */
 int mutt_wctoutf8 (char *s, unsigned int c);
 
-#ifdef LOCALES_HACK
-#define IsPrint(c) (isprint((unsigned char)(c)) || \
-       ((unsigned char)(c) >= 0xa0))
-#define IsWPrint(wc) (iswprint(wc) || wc >= 0xa0)
-#else
 #define IsPrint(c) (isprint((unsigned char)(c)) || \
        (option (OPTLOCALES) ? 0 : \
        ((unsigned char)(c) >= 0xa0)))
 #define IsWPrint(wc) (iswprint(wc) || \
        (option (OPTLOCALES) ? 0 : (wc >= 0xa0)))
-#endif
 
-#define new_pattern() mem_calloc(1, sizeof (pattern_t))
+#define new_pattern() p_new(pattern_t, 1)
 
 int mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags,
                        CONTEXT * ctx, HEADER * h);
@@ -346,11 +323,6 @@ int getdnsdomainname (char *, size_t);
 #define SCO
 #endif
 
-/* SCO Unix uses chsize() instead of ftruncate() */
-#ifndef HAVE_FTRUNCATE
-#define ftruncate chsize
-#endif
-
 #ifndef HAVE_SNPRINTF
 extern int snprintf (char *, size_t, const char *, ...);
 #endif
@@ -372,11 +344,11 @@ extern char *sys_errlist[];
 #define memmove(d,s,n) bcopy((s),(d),(n))
 #endif
 
+#ifdef _AIX
 /* AIX doesn't define these in any headers (sigh) */
 int strcasecmp (const char *, const char *);
 int strncasecmp (const char *, const char *, size_t);
 
-#ifdef _AIX
 int setegid (gid_t);
 #endif /* _AIX */
 
@@ -386,7 +358,7 @@ extern int system ();
 extern int puts ();
 extern int fputs ();
 extern int fputc ();
-extern int fseek ();
+extern int fseeko ();
 extern char *strchr ();
 extern int getopt ();
 extern int fputs ();