2 * Copyright notice from original mutt:
3 * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
4 * Copyright (C) 2004 g10 Code GmbH
6 * This file is part of mutt-ng, see http://www.muttng.org/.
7 * It's licensed under the GNU General Public License,
8 * please see the file GPL in the top level source directory.
14 #include <lib-lib/lib-lib.h>
15 #include <lib-mime/mime.h>
16 #include <lib-lua/lib-lua.h>
18 #define MUTT_VERSION (VERSION)
20 /* nifty trick I stole from ELM 2.5alpha. */
23 #define INITVAL(x) = x
30 int ch; /* raw key pressed */
31 int op; /* function op */
34 /* types for mutt_add_hook() */
35 #define M_FOLDERHOOK (1<<0)
36 #define M_MBOXHOOK (1<<1)
37 #define M_SENDHOOK (1<<2)
38 #define M_FCCHOOK (1<<3)
39 #define M_SAVEHOOK (1<<4)
40 #define M_MESSAGEHOOK (1<<5)
41 #define M_CRYPTHOOK (1<<6)
42 #define M_REPLYHOOK (1<<7)
43 #define M_SEND2HOOK (1<<8)
45 #define M_OPENHOOK (1<<9)
46 #define M_APPENDHOOK (1<<10)
47 #define M_CLOSEHOOK (1<<11)
49 /* tree characters for linearize_tree and print_enriched_string */
50 #define M_TREE_LLCORNER 1
51 #define M_TREE_ULCORNER 2
53 #define M_TREE_HLINE 4
54 #define M_TREE_VLINE 5
55 #define M_TREE_SPACE 6
56 #define M_TREE_RARROW 7
58 #define M_TREE_HIDDEN 9
59 #define M_TREE_EQUALS 10
60 #define M_TREE_TTEE 11
61 #define M_TREE_BTEE 12
62 #define M_TREE_MISSING 13
65 #define M_THREAD_COLLAPSE (1<<0)
66 #define M_THREAD_UNCOLLAPSE (1<<1)
67 #define M_THREAD_GET_HIDDEN (1<<2)
68 #define M_THREAD_UNREAD (1<<3)
69 #define M_THREAD_NEXT_UNREAD (1<<4)
72 /* modes for mutt_view_attachment() */
77 /* action codes used by mutt_set_flag() and mutt_pattern_function() */
97 /* actions for mutt_pattern_comp/mutt_pattern_exec */
137 /* Options for Mailcap lookup */
143 /* options for socket code */
146 /* Options for mutt_save_attachment */
151 /* quad-option vars */
177 OPT_FOLLOWUPTOPOSTER,
178 #endif /* USE_NNTP */
180 /* THIS MUST BE THE LAST VALUE. */
184 /* flags to ci_send_message() */
185 #define SENDREPLY (1<<0)
186 #define SENDGROUPREPLY (1<<1)
187 #define SENDLISTREPLY (1<<2)
188 #define SENDFORWARD (1<<3)
189 #define SENDPOSTPONED (1<<4)
190 #define SENDBATCH (1<<5)
191 #define SENDRESEND (1<<6)
192 #define SENDNEWS (1<<7)
194 /* flags to mutt_select_file() */
195 #define M_SEL_BUFFY (1<<0)
196 #define M_SEL_MULTI (1<<1)
197 #define M_SEL_FOLDER (1<<2)
234 OPTHIDETHREADSUBJECT,
237 OPTIGNORELISTREPLYTO,
238 OPTIMAPCHECKSUBSCRIBED,
284 OPTWRITEBCC, /* write out a bcc header? */
286 OPTXMAILTO, /* 1 if $edit_header is forcebly set */
301 #endif /* USE_NNTP */
305 OPTAUXSORT, /* (pseudo) using auxillary sort function */
306 OPTFORCEREFRESH, /* (pseudo) refresh even during macros */
307 OPTNOCURSES, /* (pseudo) when sending in batch mode */
308 OPTNEEDREDRAW, /* (pseudo) to notify caller of a submenu */
309 OPTSEARCHREVERSE, /* (pseudo) used by ci_search_command */
310 OPTMSGERR, /* (pseudo) used by mutt_error/mutt_message */
311 OPTSEARCHINVALID, /* (pseudo) used to invalidate the search pat */
312 OPTSIGNALSBLOCKED, /* (pseudo) using by mutt_block_signals () */
313 OPTSYSSIGNALSBLOCKED, /* (pseudo) using by mutt_block_signals_system () */
314 OPTNEEDRESORT, /* (pseudo) used to force a re-sort */
315 OPTRESORTINIT, /* (pseudo) used to force the next resort to be from scratch */
316 OPTVIEWATTACH, /* (pseudo) signals that we are viewing attachments */
317 OPTFORCEREDRAWINDEX, /* (pseudo) used to force a redraw in the main index */
318 OPTFORCEREDRAWPAGER, /* (pseudo) used to force a redraw in the pager */
319 OPTSORTSUBTHREADS, /* (pseudo) used when $sort_aux changes */
320 OPTNEEDRESCORE, /* (pseudo) set when the `score' command is used */
321 OPTATTACHMSG, /* (pseudo) used by attach-message */
322 OPTHIDEREAD, /* (pseudo) whether or not hide read messages */
323 OPTKEEPQUIET, /* (pseudo) shut up the message and refresh
324 * functions while we are executing an
327 OPTMENUCALLER, /* (pseudo) tell menu to give caller a take */
328 OPTREDRAWTREE, /* (pseudo) redraw the thread tree */
329 OPTPGPCHECKTRUST, /* (pseudo) used by pgp_select_key () */
330 OPTUNBUFFEREDINPUT, /* (pseudo) don't use key buffer */
333 OPTNEWS, /* (pseudo) used to change reader mode */
334 OPTNEWSSEND, /* (pseudo) used to change behavior when posting */
336 OPTSHORTENHIERARCHY, /* set when to shorten "hierarchies" in the sidebar */
337 OPTSIDEBARNEWMAILONLY,
341 #define mutt_bit_set(v,n) (v[n/8] |= (1 << (n % 8)))
342 #define mutt_bit_unset(v,n) (v[n/8] &= ~(1 << (n % 8)))
343 #define mutt_bit_toggle(v,n) (v[n/8] ^= (1 << (n % 8)))
344 #define mutt_bit_isset(v,n) (v[n/8] & (1 << (n % 8)))
346 #define set_option(x) mutt_bit_set(Options,x)
347 #define unset_option(x) mutt_bit_unset(Options,x)
348 #define toggle_option(x) mutt_bit_toggle(Options,x)
349 #define option(x) mutt_bit_isset(Options,x)
351 void mutt_init (int, string_list_t *);
353 typedef struct thread {
354 unsigned int fake_thread:1;
355 unsigned int duplicate_thread:1;
356 unsigned int sort_children:1;
357 unsigned int check_subject:1;
358 unsigned int visible:1;
360 unsigned int subtree_visible:2;
361 unsigned int next_subtree_visible:1;
362 struct thread *parent;
363 struct thread *child;
370 typedef struct compress_info compress_info;
371 typedef struct pattern_t pattern_t;
377 time_t mtime_cur; /* used with maildir folders */
380 char *pattern; /* limit pattern string */
381 pattern_t *limit_pattern; /* compiled limit pattern */
383 HEADER *last_tag; /* last tagged msg. used to link threads */
384 THREAD *tree; /* top of thread tree */
385 hash_t *id_hash; /* hash table by msg id */
386 hash_t *subj_hash; /* hash table by subject */
387 hash_t *thread_hash; /* hash table for threading */
388 int *v2r; /* mapping from virtual to real msgno */
389 int hdrmax; /* number of pointers in hdrs */
390 int msgcount; /* number of messages in the mailbox */
391 int vcount; /* the number of virtual messages */
392 int tagged; /* how many messages are tagged? */
393 int new; /* how many new messages? */
394 int unread; /* how many unread messages? */
395 int deleted; /* how many deleted messages */
396 int appended; /* how many saved messages? */
397 int flagged; /* how many flagged messages */
398 int msgnotreadyet; /* which msg "new" in pager, -1 if none */
399 void *data; /* driver specific data */
401 short magic; /* mailbox type */
403 compress_info *cinfo; /* compressed mbox module private data */
404 char *realpath; /* path to compressed mailbox */
406 unsigned int locked:1; /* is the mailbox locked? */
407 unsigned int changed:1; /* mailbox has been modified */
408 unsigned int readonly:1; /* don't allow changes to the mailbox */
409 unsigned int dontwrite:1; /* dont write the mailbox on close */
410 unsigned int append:1; /* mailbox is opened in append mode */
411 unsigned int quiet:1; /* inhibit status messages? */
412 unsigned int collapsed:1; /* are all threads collapsed? */
413 unsigned int closing:1; /* mailbox is being closed */
414 unsigned int counting:1; /* do we just want to cound? */
417 /* for attachment counter */
425 /* Flags for mutt_count_body_parts() */
426 #define M_PARTS_TOPLEVEL (1<<0) /* is the top-level part */
427 #define M_PARTS_RECOUNT (1<<1) /* force recount */
432 #endif /* !_MUTT_H */