continue the include dance
[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 #include <lib-lib/buffer.h>
23 #include <lib-lib/mapping.h>
24
25 #define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')
26
27 #define mutt_make_string(A,B,C,D,E) _mutt_make_string(A,B,C,D,E,0)
28 void _mutt_make_string (char *, ssize_t, const char *, CONTEXT *,
29                         HEADER *, format_flag);
30
31 #define mutt_new_enter_state() p_new(ENTER_STATE, 1)
32
33 typedef const char *format_t (char *, ssize_t, char, const char *,
34                               const char *, const char *, const char *,
35                               unsigned long, format_flag);
36
37 void mutt_FormatString (char *, ssize_t, const char *, format_t *,
38                         unsigned long, format_flag);
39 void mutt_generate_boundary (PARAMETER **);
40 void mutt_delete_parameter (const char *attribute, PARAMETER ** p);
41 void mutt_set_parameter (const char *, const char *, PARAMETER **);
42
43 FILE *mutt_open_read (const char *, pid_t *);
44
45 void set_quadoption (int, int);
46 int query_quadoption (int, const char *);
47 int quadoption (int);
48
49 int mutt_option_value (const char* val, char* dst, ssize_t dstlen);
50
51 address_t *mutt_default_from (void);
52 address_t *mutt_remove_duplicates (address_t *);
53
54 BODY *mutt_make_file_attach (const char *);
55 BODY *mutt_make_message_attach (CONTEXT *, HEADER *, int);
56 BODY *mutt_remove_multipart (BODY *);
57 BODY *mutt_make_multipart (BODY *);
58 BODY *mutt_new_body(void);
59
60 CONTENT *mutt_get_content_info (const char *fname, BODY * b);
61
62 string_list_t *mutt_make_references (ENVELOPE * e);
63
64 HEADER *mutt_dup_header (HEADER *);
65
66 int mutt_cmp_header (const HEADER*, const HEADER*);
67 int mutt_cmp_addr (const address_t * a, const address_t * b);
68 int mutt_cmp_list (const string_list_t * a, const string_list_t * b);
69 int mutt_cmp_env (const ENVELOPE * e1, const ENVELOPE * e2);
70 int mutt_cmp_param (const PARAMETER * p1, const PARAMETER * p2);
71 int mutt_cmp_body (const BODY * b1, const BODY * b2);
72
73 time_t mutt_decrease_mtime (const char *, struct stat *);
74 void mutt_set_mtime (const char*, const char*);
75 time_t mutt_parse_date (const char *, HEADER *);
76 int is_from (const char *, char *, ssize_t, time_t *);
77
78 char *mutt_charset_hook (const char *);
79 char *mutt_iconv_hook (const char *);
80 char *mutt_expand_path (char *, ssize_t);
81 char *_mutt_expand_path (char *, ssize_t, int);
82 char *mutt_find_hook (int, const char *);
83 char *mutt_gen_msgid (void);
84 char *mutt_get_body_charset (char *, ssize_t, BODY *);
85 const char *mutt_get_name (address_t *);
86 char *mutt_get_parameter (const char *, PARAMETER *);
87 char *mutt_crypt_hook (address_t *);
88 char *mutt_make_date (char *, ssize_t);
89
90 const char *mutt_make_version (int full);
91
92 const char *mutt_fqdn (short);
93
94 void mutt_account_hook (const char *url);
95 void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
96                                     string_list_t *** pp, string_list_t *** qq);
97 void mutt_adv_mktemp (const char*, char*, ssize_t);
98 int mutt_bounce_message (FILE * fp, HEADER *, address_t *);
99 void mutt_canonical_charset (char *, ssize_t, const char *);
100 void mutt_check_rescore (CONTEXT *);
101 void mutt_clear_error (void);
102 void mutt_default_save (char *, ssize_t, HEADER *);
103 void mutt_display_address (ENVELOPE *);
104 void mutt_display_sanitize (char *);
105 void mutt_edit_content_type (HEADER *, BODY *, FILE *);
106 void mutt_edit_file (const char *, const char *);
107 void mutt_edit_headers (const char *, const char *, HEADER *, char *, ssize_t);
108 void mutt_curses_error (const char *, ...);
109 void mutt_curses_message (const char *, ...);
110 void mutt_enter_command (void);
111 void mutt_expand_file_fmt (char *, ssize_t, const char *, const char *);
112 void mutt_expand_fmt (char *, ssize_t, const char *, const char *);
113 void mutt_expand_link (char *, const char *, const char *);
114 void mutt_fix_reply_recipients (ENVELOPE * env);
115 void mutt_folder_hook (char *);
116 void mutt_format_string (char *, ssize_t, int, int, int, char, const char *,
117                          ssize_t, int);
118 void mutt_format_s (char *, ssize_t, const char *, const char *);
119 void mutt_format_s_tree (char *, ssize_t, const char *, const char *);
120 void mutt_forward_intro (FILE * fp, HEADER * cur);
121 void mutt_forward_trailer (FILE * fp);
122 void mutt_free_body (BODY **);
123 void mutt_free_color (int fg, int bg);
124 void mutt_generate_header (char *, ssize_t, HEADER *, int);
125 void mutt_help (int);
126 void mutt_draw_tree (CONTEXT *);
127 void mutt_make_attribution (CONTEXT * ctx, HEADER * cur, FILE * out);
128 void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur);
129 void mutt_make_help (char *, ssize_t, char *, int, int);
130 char *mutt_compile_help(char *, ssize_t, int, struct mapping_t *);
131 void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
132                                    HEADER * cur, ENVELOPE * curenv);
133 void mutt_make_post_indent (CONTEXT * ctx, HEADER * cur, FILE * out);
134 void mutt_merge_envelopes (ENVELOPE* base, ENVELOPE** extra);
135 void mutt_message_to_7bit (BODY *, FILE *);
136
137 #define mutt_mktemp(a) _mutt_mktemp (a, __FILE__, __LINE__)
138 void _mutt_mktemp (char *, const char *, int);
139 void mutt_paddstr (int, const char *);
140 void mutt_parse_mime_message (CONTEXT * ctx, HEADER *);
141 #define mutt_perror(a) _mutt_perror (a, __FILE__, __LINE__)
142 void _mutt_perror (const char*, const char*,int);
143 void mutt_prepare_envelope (ENVELOPE *, int);
144 void mutt_unprepare_envelope (ENVELOPE *);
145 void mutt_pretty_mailbox (char *);
146 void mutt_pretty_size (char *, ssize_t, long);
147 void mutt_pipe_message (HEADER *);
148 void mutt_print_message (HEADER *);
149 void mutt_query_exit (void);
150 void mutt_query_menu (char *, ssize_t);
151 void mutt_safe_path (char *s, ssize_t l, address_t * a);
152 void mutt_save_path (char *s, ssize_t l, address_t * a);
153 void mutt_score_message (CONTEXT *, HEADER *, int);
154 void mutt_select_fcc (char *, ssize_t, HEADER *);
155
156 #define mutt_select_file(A,B,C) _mutt_select_file(A,B,C,NULL,NULL)
157 void _mutt_select_file (char *, ssize_t, int, char ***, int *);
158 void mutt_message_hook (CONTEXT *, HEADER *, int);
159 void _mutt_set_flag (CONTEXT *, HEADER *, int, int, int);
160
161 #define mutt_set_flag(a,b,c,d) _mutt_set_flag(a,b,c,d,1)
162 void mutt_set_followup_to (ENVELOPE *);
163 void mutt_shell_escape (void);
164 void mutt_show_error (void);
165 void mutt_stamp_attachment (BODY * a);
166 void mutt_tabs_to_spaces (char *);
167 void mutt_tag_set_flag (int, int);
168 void mutt_update_encoding (BODY * a);
169 void mutt_version (void);
170 void mutt_write_references (string_list_t *, FILE *);
171 void mutt_write_address_list (address_t * adr, FILE * fp, int linelen,
172                               int display);
173
174 int mutt_addwch (wchar_t);
175 int mutt_alloc_color (int fg, int bg);
176 int mutt_any_key_to_continue (const char *);
177 int mutt_can_decode (BODY *);
178 int mutt_change_flag (HEADER *, int);
179 int mutt_check_key (const char *);
180 int mutt_check_menu (const char *);
181 int mutt_check_month (const char *);
182 int mutt_check_overwrite (const char *, const char *, char *, ssize_t, int *,
183                           char **);
184 int mutt_check_traditional_pgp (HEADER *, int *);
185 int mutt_command_complete (char *, ssize_t, int, int);
186 int mutt_var_value_complete (char *, ssize_t, int);
187 int mutt_complete (char *, ssize_t);
188 int mutt_copy_body (FILE *, BODY **, BODY *);
189
190 int mutt_display_message (HEADER * h);
191 int mutt_dump_variables (int full);
192 int mutt_edit_message (CONTEXT *, HEADER *);
193 int mutt_fetch_recips (ENVELOPE * out, ENVELOPE * in, int flags);
194 int mutt_chscmp (const char *s, const char *chs);
195
196 #define mutt_is_utf8(a) mutt_chscmp (a, "utf-8")
197 #define mutt_is_us_ascii(a) mutt_chscmp (a, "us-ascii")
198 int mutt_prepare_template (FILE *, CONTEXT *, HEADER *, HEADER *, short);
199 int mutt_resend_message (FILE *, CONTEXT *, HEADER *);
200
201 #define mutt_enter_fname(A,B,C,D,E) _mutt_enter_fname(A,B,C,D,E,0,NULL,NULL)
202 int _mutt_enter_fname (const char *, char *, ssize_t, int *, int, int,
203                        char ***, int *);
204 #define mutt_get_field(A,B,C,D) _mutt_get_field(A,B,C,D,0,NULL,NULL)
205 int _mutt_get_field (const char *, char *, ssize_t, int, int, char ***, int *);
206 int mutt_get_field_unbuffered (char *, char *, ssize_t, int);
207 int mutt_get_hook_type (const char *);
208 int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, ssize_t);
209 int mutt_index_menu (void);
210 int mutt_invoke_mta (address_t *, address_t *, address_t *, address_t *, const char *,
211                      int);
212 int mutt_is_mail_list (address_t *);
213 int mutt_is_list_cc (int, address_t *, address_t *);
214 int mutt_is_list_recipient (int, address_t *, address_t *);
215 int mutt_is_subscribed_list (address_t *);
216 int mutt_is_text_part (BODY *);
217 int mutt_is_valid_mailbox (const char *);
218 int mutt_lookup_mime_type (BODY *, const char *);
219 int mutt_match_spam_list (const char *, SPAM_LIST *, char *, int);
220 int mutt_multi_choice (char *prompt, char *letters);
221 int mutt_needs_mailcap (BODY *);
222 int mutt_num_postponed (int);
223 int mutt_parse_bind (BUFFER *, BUFFER *, unsigned long, BUFFER *);
224 int mutt_parse_exec (BUFFER *, BUFFER *, unsigned long, BUFFER *);
225 int mutt_parse_color (BUFFER *, BUFFER *, unsigned long, BUFFER *);
226 int mutt_parse_uncolor (BUFFER *, BUFFER *, unsigned long, BUFFER *);
227 int mutt_parse_hook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
228 int mutt_parse_macro (BUFFER *, BUFFER *, unsigned long, BUFFER *);
229 int mutt_parse_mono (BUFFER *, BUFFER *, unsigned long, BUFFER *);
230 int mutt_parse_unmono (BUFFER *, BUFFER *, unsigned long, BUFFER *);
231 int mutt_parse_push (BUFFER *, BUFFER *, unsigned long, BUFFER *);
232 int mutt_parse_rc_line ( /* const */ char *, BUFFER *, BUFFER *);
233 int mutt_parse_score (BUFFER *, BUFFER *, unsigned long, BUFFER *);
234 int mutt_parse_unscore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
235 int mutt_parse_unhook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
236 int mutt_pattern_func (int, char *);
237 int mutt_query_complete (char *, ssize_t);
238 int mutt_query_variables (string_list_t * queries);
239 int _mutt_save_message (HEADER *, CONTEXT *, int, int, int);
240 int mutt_save_message (HEADER *, int, int, int, int *);
241 int mutt_search_command (int, int);
242 int mutt_skipchars (const char *, const char *);
243 int mutt_strwidth (const char *);
244 int mutt_compose_menu (HEADER *, char *, ssize_t, HEADER *);
245 int mutt_thread_set_flag (HEADER *, int, int, int);
246 int mutt_user_is_recipient (HEADER *);
247 void mutt_update_num_postponed (void);
248 int mutt_wait_filter (pid_t);
249 int mutt_which_case (const char *);
250 int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, int,
251                     char *);
252 int mutt_write_mime_body (BODY *, FILE *);
253 int mutt_write_mime_header (BODY *, FILE *);
254 int mutt_write_rfc822_header (FILE *, ENVELOPE *, BODY *, int, int);
255 int mutt_yesorno (const char *, int);
256 void mutt_set_header_color (CONTEXT *, HEADER *);
257 void mutt_sleep (short);
258 int mutt_save_confirm (const char *, struct stat *);
259
260 int mh_valid_message (const char *);
261
262 pid_t mutt_create_filter (const char *, FILE **, FILE **, FILE **);
263 pid_t mutt_create_filter_fd (const char *, FILE **, FILE **, FILE **, int,
264                              int, int);
265
266 /* base64.c */
267 void mutt_to_base64 (unsigned char *, const unsigned char *, ssize_t, ssize_t);
268 int mutt_from_base64 (char *, const char *);
269
270 /* utf8.c */
271 int mutt_wctoutf8 (char *s, unsigned int c);
272
273 #define IsPrint(c) (isprint((unsigned char)(c)) || \
274         (option (OPTLOCALES) ? 0 : \
275         ((unsigned char)(c) >= 0xa0)))
276 #define IsWPrint(wc) (iswprint(wc) || \
277         (option (OPTLOCALES) ? 0 : (wc >= 0xa0)))
278
279 #define new_pattern() p_new(pattern_t, 1)
280
281 int mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags,
282                        CONTEXT * ctx, HEADER * h);
283 pattern_t *mutt_pattern_comp ( /* const */ char *s, int flags, BUFFER * err);
284 void mutt_check_simple (char *s, ssize_t len, const char *simple);
285 void mutt_pattern_free (pattern_t ** pat);
286
287 /* unsorted */
288 void ci_bounce_message (HEADER *, int *);
289 int ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *);