rationnalize includes a lot:
[apps/madmutt.git] / protos.h
1 /*
2  * Copyright notice from original mutt:
3  * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
4  *
5  * This file is part of mutt-ng, see http://www.muttng.org/.
6  * It's licensed under the GNU General Public License,
7  * please see the file GPL in the top level source directory.
8  */
9
10 #ifdef HAVE_CONFIG_H
11 # include "config.h"
12 #endif
13
14 #include <sys/stat.h>
15
16 #if HAVE_STDINT_H
17 #include <stdint.h>
18 #elif HAVE_INTTYPES_H
19 #include <inttypes.h>
20 #endif
21
22 #define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')
23
24 typedef const char *format_t (char *, ssize_t, char, const char *,
25                               const char *, const char *, const char *,
26                               unsigned long, format_flag);
27
28 void mutt_FormatString (char *, ssize_t, const char *, format_t *,
29                         unsigned long, format_flag);
30
31 void set_quadoption (int, int);
32 int query_quadoption (int, const char *);
33 int quadoption (int);
34
35 int mutt_option_value (const char* val, char* dst, ssize_t dstlen);
36
37 address_t *mutt_default_from (void);
38
39 BODY *mutt_make_file_attach (const char *);
40 BODY *mutt_make_message_attach (CONTEXT *, HEADER *, int);
41 BODY *mutt_remove_multipart (BODY *);
42 BODY *mutt_make_multipart (BODY *);
43
44 CONTENT *mutt_get_content_info (const char *fname, BODY * b);
45
46 int mutt_cmp_header (const HEADER*, const HEADER*);
47 int mutt_cmp_addr (const address_t * a, const address_t * b);
48 int mutt_cmp_list (const string_list_t * a, const string_list_t * b);
49 int mutt_cmp_env (const ENVELOPE * e1, const ENVELOPE * e2);
50 int mutt_cmp_body (const BODY * b1, const BODY * b2);
51
52 time_t mutt_decrease_mtime (const char *, struct stat *);
53 void mutt_set_mtime (const char*, const char*);
54 int is_from (const char *, char *, ssize_t, time_t *);
55
56 const char *mutt_charset_hook (const char *);
57 const char *mutt_iconv_hook (const char *);
58 char *mutt_expand_path (char *, ssize_t);
59 char *_mutt_expand_path (char *, ssize_t, int);
60 char *mutt_find_hook (int, const char *);
61 char *mutt_gen_msgid (void);
62 char *mutt_get_body_charset (char *, ssize_t, BODY *);
63 const char *mutt_get_name (address_t *);
64 const char *mutt_crypt_hook (address_t *);
65 char *mutt_make_date (char *, ssize_t);
66
67 const char *mutt_make_version (int full);
68
69 const char *mutt_fqdn (short);
70
71 void mutt_account_hook (const char *url);
72 void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
73                                     string_list_t *** pp, string_list_t *** qq);
74 void mutt_adv_mktemp (const char*, char*, ssize_t);
75 int mutt_bounce_message (FILE * fp, HEADER *, address_t *);
76 void mutt_check_rescore (CONTEXT *);
77 void mutt_default_save (char *, ssize_t, HEADER *);
78 void mutt_display_address (ENVELOPE *);
79 void mutt_edit_content_type (HEADER *, BODY *, FILE *);
80 void mutt_edit_headers (const char *, const char *, HEADER *, char *, ssize_t);
81 void mutt_enter_command (void);
82 void mutt_expand_file_fmt (char *, ssize_t, const char *, const char *);
83 void mutt_expand_fmt (char *, ssize_t, const char *, const char *);
84 void mutt_expand_link (char *, const char *, const char *);
85 void mutt_fix_reply_recipients (ENVELOPE * env);
86 void mutt_folder_hook (char *);
87 void mutt_forward_intro (FILE * fp, HEADER * cur);
88 void mutt_forward_trailer (FILE * fp);
89 void mutt_help (int);
90 void mutt_draw_tree (CONTEXT *);
91 void mutt_make_attribution (CONTEXT * ctx, HEADER * cur, FILE * out);
92 void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur);
93 void mutt_make_help (char *, ssize_t, char *, int, int);
94 char *mutt_compile_help(char *, ssize_t, int, struct mapping_t *);
95 void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
96                                    HEADER * cur, ENVELOPE * curenv);
97 void mutt_make_post_indent (CONTEXT * ctx, HEADER * cur, FILE * out);
98 void mutt_merge_envelopes (ENVELOPE* base, ENVELOPE** extra);
99 void mutt_message_to_7bit (BODY *, FILE *);
100
101 #define mutt_mktemp(a) _mutt_mktemp (a, __FILE__, __LINE__)
102 void _mutt_mktemp (char *, const char *, int);
103 void mutt_prepare_envelope (ENVELOPE *, int);
104 void mutt_unprepare_envelope (ENVELOPE *);
105 void mutt_pretty_mailbox (char *);
106 void mutt_pretty_size (char *, ssize_t, long);
107 void mutt_pipe_message (HEADER *);
108 void mutt_print_message (HEADER *);
109 void mutt_safe_path (char *s, ssize_t l, address_t * a);
110 void mutt_save_path (char *s, ssize_t l, address_t * a);
111 void mutt_score_message (CONTEXT *, HEADER *, int);
112 void mutt_select_fcc (char *, ssize_t, HEADER *);
113
114 #define mutt_select_file(A,B,C) _mutt_select_file(A,B,C,NULL,NULL)
115 void _mutt_select_file (char *, ssize_t, int, char ***, int *);
116 void mutt_message_hook (CONTEXT *, HEADER *, int);
117 void _mutt_set_flag (CONTEXT *, HEADER *, int, int, int);
118
119 #define mutt_set_flag(a,b,c,d) _mutt_set_flag(a,b,c,d,1)
120 void mutt_set_followup_to (ENVELOPE *);
121 void mutt_shell_escape (void);
122 void mutt_stamp_attachment (BODY * a);
123 void mutt_tag_set_flag (int, int);
124 void mutt_update_encoding (BODY * a);
125 void mutt_version (void);
126 void mutt_write_references (string_list_t *, FILE *);
127 void mutt_write_address_list (address_t * adr, FILE * fp, int linelen,
128                               int display);
129
130 int mutt_can_decode (BODY *);
131 int mutt_change_flag (HEADER *, int);
132 int mutt_check_menu (const char *);
133 int mutt_check_month (const char *);
134 int mutt_check_overwrite (const char *, const char *, char *, ssize_t, int *,
135                           char **);
136 int mutt_check_traditional_pgp (HEADER *, int *);
137 int mutt_command_complete (char *, ssize_t, int, int);
138 int mutt_var_value_complete (char *, ssize_t, int);
139 int mutt_copy_body (FILE *, BODY **, BODY *);
140
141 int mutt_display_message (HEADER * h);
142 int mutt_dump_variables (int full);
143 int mutt_edit_message (CONTEXT *, HEADER *);
144 int mutt_fetch_recips (ENVELOPE * out, ENVELOPE * in, int flags);
145 int mutt_prepare_template (FILE *, CONTEXT *, HEADER *, HEADER *, short);
146 int mutt_resend_message (FILE *, CONTEXT *, HEADER *);
147
148 int mutt_get_hook_type (const char *);
149 int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, ssize_t);
150 int mutt_invoke_mta (address_t *, address_t *, address_t *, address_t *, const char *,
151                      int);
152 int mutt_is_list_cc (int, address_t *, address_t *);
153 int mutt_is_list_recipient (int, address_t *, address_t *);
154 int mutt_lookup_mime_type (BODY *, const char *);
155 int mutt_match_spam_list (const char *, SPAM_LIST *, char *, int);
156 int mutt_num_postponed (int);
157 int mutt_parse_bind (BUFFER *, BUFFER *, unsigned long, BUFFER *);
158 int mutt_parse_exec (BUFFER *, BUFFER *, unsigned long, BUFFER *);
159 int mutt_parse_hook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
160 int mutt_parse_macro (BUFFER *, BUFFER *, unsigned long, BUFFER *);
161 int mutt_parse_push (BUFFER *, BUFFER *, unsigned long, BUFFER *);
162 int mutt_parse_rc_line ( /* const */ char *, BUFFER *, BUFFER *);
163 int mutt_parse_score (BUFFER *, BUFFER *, unsigned long, BUFFER *);
164 int mutt_parse_unscore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
165 int mutt_parse_unhook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
166 int mutt_pattern_func (int, char *);
167 int mutt_query_variables (string_list_t * queries);
168 int _mutt_save_message (HEADER *, CONTEXT *, int, int, int);
169 int mutt_save_message (HEADER *, int, int, int, int *);
170 int mutt_search_command (int, int);
171 int mutt_compose_menu (HEADER *, char *, ssize_t, HEADER *);
172 int mutt_thread_set_flag (HEADER *, int, int, int);
173 void mutt_update_num_postponed (void);
174 int mutt_which_case (const char *);
175 int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, int,
176                     char *);
177 int mutt_write_mime_body (BODY *, FILE *);
178 int mutt_write_mime_header (BODY *, FILE *);
179 int mutt_write_rfc822_header (FILE *, ENVELOPE *, BODY *, int, int);
180 void mutt_sleep (short);
181 int mutt_save_confirm (const char *, struct stat *);
182
183 /* base64.c */
184 void mutt_to_base64 (unsigned char *, const unsigned char *, ssize_t, ssize_t);
185 int mutt_from_base64 (char *, const char *);
186
187 #define new_pattern() p_new(pattern_t, 1)
188 #define mutt_new_enter_state() p_new(ENTER_STATE, 1)
189
190 int mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags,
191                        CONTEXT * ctx, HEADER * h);
192 pattern_t *mutt_pattern_comp ( /* const */ char *s, int flags, BUFFER * err);
193 void mutt_check_simple (char *s, ssize_t len, const char *simple);
194 void mutt_pattern_free (pattern_t ** pat);
195
196 void ci_bounce_message (HEADER *, int *);
197 int ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *);
198
199 /* flags for mutt_extract_token() */
200 #define M_TOKEN_EQUAL           1       /* treat '=' as a special */
201 #define M_TOKEN_CONDENSE        (1<<1)  /* ^(char) to control chars (macros) */
202 #define M_TOKEN_SPACE           (1<<2)  /* don't treat whitespace as a term */
203 #define M_TOKEN_QUOTE           (1<<3)  /* don't interpret quotes */
204 #define M_TOKEN_PATTERN         (1<<4)  /* !)|~ are terms (for patterns) */
205 #define M_TOKEN_COMMENT         (1<<5)  /* don't reap comments */
206 #define M_TOKEN_SEMICOLON       (1<<6)  /* don't treat ; as special */
207
208 int mutt_extract_token(BUFFER *, BUFFER *, int);
209