2 * Copyright notice from original mutt:
3 * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
4 * Copyright (C) 1999-2002 Thomas Roessler <roessler@does-not-exist.org>
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.
13 * when adding code dealing with folders or whatever,
14 * please use these only
21 * supported mailbox formats
22 * in mx_init() the registration order must be exactly as given here!!!1!
46 /* may we stat() it? */
47 unsigned int local : 1;
48 /* tests if given path is of its magic */
49 int (*mx_is_magic) (const char*);
50 /* tests if folder is empty */
51 int (*mx_check_empty) (const char*);
53 int (*mx_access) (const char*, int);
54 /* read mailbox into ctx structure */
55 int (*mx_open_mailbox) (CONTEXT*);
58 /* called from main: init all folder types */
61 /* flags for mx_open_mailbox() */
62 #define M_NOSORT (1<<0) /* do not sort the mailbox after opening it */
63 #define M_APPEND (1<<1) /* open mailbox for appending messages */
64 #define M_READONLY (1<<2) /* open in read-only mode */
65 #define M_QUIET (1<<3) /* do not print any messages */
66 #define M_NEWFOLDER (1<<4) /* create a new folder - same as M_APPEND, but uses
67 * safe_fopen() for mbox-style folders.
70 /* mx_open_new_message() */
71 #define M_ADD_FROM 1 /* add a From_ line */
73 #define MAXLOCKATTEMPT 5
75 /* return values from mx_check_mailbox() */
77 M_NEW_MAIL = 1, /* new mail received in mailbox */
78 M_LOCKED, /* couldn't lock the mailbox */
79 M_REOPENED, /* mailbox was reopened */
80 M_FLAGS /* nondestructive flags change (IMAP) */
84 FILE *fp; /* pointer to the message data */
85 char *path; /* path to temp file */
86 short magic; /* type of mailbox this message belongs to */
87 short write; /* nonzero if message is open for writing */
93 time_t received; /* the time at which this message was received */
96 WHERE short DefaultMagic INITVAL (M_MBOX);
98 CONTEXT *mx_open_mailbox (const char *, int, CONTEXT *);
100 MESSAGE *mx_open_message (CONTEXT *, int);
101 MESSAGE *mx_open_new_message (CONTEXT *, HEADER *, int);
103 void mx_fastclose_mailbox (CONTEXT *);
105 int mx_close_mailbox (CONTEXT *, int *);
106 int mx_sync_mailbox (CONTEXT *, int *);
107 int mx_commit_message (MESSAGE *, CONTEXT *);
108 int mx_close_message (MESSAGE **);
109 int mx_get_magic (const char *);
110 int mx_set_magic (const char *);
111 int mx_check_mailbox (CONTEXT *, int *, int);
113 int mx_access (const char *, int);
114 int mx_check_empty (const char *);
116 void mx_alloc_memory (CONTEXT *);
117 void mx_update_context (CONTEXT *, int);
118 void mx_update_tables (CONTEXT *, int);
120 int mx_lock_file (const char *, int, int, int, int);
121 int mx_unlock_file (const char *path, int fd, int dot);