implementation of mbox folder with unique messages numbers
[claws.git] / src / mailmbox.h
1 #ifndef MAILMBOX_H
2
3 #define MAILMBOX_H
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #include "mailmbox_types.h"
10
11 int
12 mailmbox_append_message_list(struct mailmbox_folder * folder,
13                              carray * append_tab);
14
15 int
16 mailmbox_append_message(struct mailmbox_folder * folder,
17                         char * data, size_t len);
18
19 int mailmbox_fetch_msg(struct mailmbox_folder * folder,
20                        uint32_t num, char ** result,
21                        size_t * result_len);
22
23 int mailmbox_fetch_msg_headers(struct mailmbox_folder * folder,
24                                uint32_t num, char ** result,
25                                size_t * result_len);
26
27 void mailmbox_fetch_result_free(char * msg);
28
29 int mailmbox_copy_msg_list(struct mailmbox_folder * dest_folder,
30                            struct mailmbox_folder * src_folder,
31                            carray * tab);
32
33 int mailmbox_copy_msg(struct mailmbox_folder * dest_folder,
34                       struct mailmbox_folder * src_folder,
35                       uint32_t uid);
36
37 int mailmbox_expunge(struct mailmbox_folder * folder);
38
39 int mailmbox_delete_msg(struct mailmbox_folder * folder, uint32_t uid);
40
41 int mailmbox_init(char * filename,
42                   int force_readonly,
43                   int force_no_uid,
44                   uint32_t default_written_uid,
45                   struct mailmbox_folder ** result_folder);
46
47 void mailmbox_done(struct mailmbox_folder * folder);
48
49 /* low-level access primitives */
50
51 int mailmbox_write_lock(struct mailmbox_folder * folder);
52
53 int mailmbox_write_unlock(struct mailmbox_folder * folder);
54
55 int mailmbox_read_lock(struct mailmbox_folder * folder);
56
57 int mailmbox_read_unlock(struct mailmbox_folder * folder);
58
59
60 /* memory map */
61
62 int mailmbox_map(struct mailmbox_folder * folder);
63
64 void mailmbox_unmap(struct mailmbox_folder * folder);
65
66 void mailmbox_sync(struct mailmbox_folder * folder);
67
68
69 /* open & close file */
70
71 int mailmbox_open(struct mailmbox_folder * folder);
72
73 void mailmbox_close(struct mailmbox_folder * folder);
74
75
76 /* validate cache */
77
78 #if 0
79 int mailmbox_validate_cache(struct mailmbox_folder * folder);
80 #endif
81
82 int mailmbox_validate_write_lock(struct mailmbox_folder * folder);
83
84 int mailmbox_validate_read_lock(struct mailmbox_folder * folder);
85
86
87 /* fetch message */
88
89 int mailmbox_fetch_msg_no_lock(struct mailmbox_folder * folder,
90                                uint32_t num, char ** result,
91                                size_t * result_len);
92
93 int mailmbox_fetch_msg_headers_no_lock(struct mailmbox_folder * folder,
94                                        uint32_t num, char ** result,
95                                        size_t * result_len);
96
97 /* append message */
98
99 int
100 mailmbox_append_message_list_no_lock(struct mailmbox_folder * folder,
101                                      carray * append_tab);
102
103 int mailmbox_expunge_no_lock(struct mailmbox_folder * folder);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif