1 /* GNU Mailutils -- a suite of utilities for electronic mail 2 Copyright (C) 1999-2021 Free Software Foundation, Inc. 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 3 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General 15 Public License along with this library. If not, see 16 <http://www.gnu.org/licenses/>. */ 17 18 #ifndef _MAILUTILS_MAILBOX_H 19 #define _MAILUTILS_MAILBOX_H 20 21 #include <sys/types.h> 22 #include <time.h> 23 #include <mailutils/types.h> 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 extern char *mu_ticket_file; 30 31 int mu_set_mail_directory (const char *p); 32 int mu_set_mailbox_pattern (const char *pat); 33 int mu_set_folder_directory (const char *p); 34 const char *mu_mailbox_url (void); 35 const char *mu_folder_directory (void); 36 int mu_construct_user_mailbox_url (char **pout, const char *name); 37 38 int mu_mailbox_expand_name (const char *name, char **expansion); 39 40 /* Constructor/destructor and possible types. */ 41 extern int mu_mailbox_create (mu_mailbox_t *, const char *); 42 extern int mu_mailbox_create_from_url (mu_mailbox_t *, mu_url_t); 43 extern int mu_mailbox_create_from_record (mu_mailbox_t *pmbox, 44 mu_record_t record, 45 const char *name); 46 extern int mu_mailbox_create_default (mu_mailbox_t *, const char *); 47 extern int mu_mailbox_create_at (mu_mailbox_t *pmbox, mu_folder_t folder, 48 const char *name); 49 50 extern void mu_mailbox_destroy (mu_mailbox_t *); 51 52 extern int mu_mailbox_open (mu_mailbox_t, int flag); 53 extern int mu_mailbox_close (mu_mailbox_t); 54 extern int mu_mailbox_remove (mu_mailbox_t mbox); 55 extern int mu_mailbox_flush (mu_mailbox_t mbox, int expunge); 56 extern int mu_mailbox_get_folder (mu_mailbox_t, mu_folder_t *); 57 extern int mu_mailbox_set_folder (mu_mailbox_t, mu_folder_t); 58 extern int mu_mailbox_uidvalidity (mu_mailbox_t, unsigned long *); 59 extern int mu_mailbox_uidvalidity_reset (mu_mailbox_t); 60 extern int mu_mailbox_uidnext (mu_mailbox_t, size_t *); 61 extern int mu_mailbox_access_time (mu_mailbox_t mbox, time_t *return_time); 62 63 /* Messages. */ 64 extern int mu_mailbox_get_message (mu_mailbox_t, size_t msgno, 65 mu_message_t *); 66 extern int mu_mailbox_quick_get_message(mu_mailbox_t, mu_message_qid_t, 67 mu_message_t *); 68 extern int mu_mailbox_append_message (mu_mailbox_t, mu_message_t); 69 extern int mu_mailbox_messages_count (mu_mailbox_t, size_t *); 70 extern int mu_mailbox_messages_recent (mu_mailbox_t, size_t *); 71 extern int mu_mailbox_message_unseen (mu_mailbox_t, size_t *); 72 extern int mu_mailbox_expunge (mu_mailbox_t); 73 extern int mu_mailbox_sync (mu_mailbox_t); 74 75 extern int mu_mailbox_attach_ticket (mu_mailbox_t mbox); 76 77 #define MU_UIDL_LENGTH 70 78 #define MU_UIDL_BUFFER_SIZE (MU_UIDL_LENGTH+1) 79 80 struct mu_uidl 81 { 82 size_t msgno; 83 char uidl[MU_UIDL_BUFFER_SIZE]; 84 }; 85 extern int mu_mailbox_get_uidls (mu_mailbox_t, mu_list_t *); 86 87 /* Update and scanning. */ 88 extern int mu_mailbox_get_size (mu_mailbox_t, mu_off_t *size); 89 extern int mu_mailbox_is_updated (mu_mailbox_t); 90 extern int mu_mailbox_scan (mu_mailbox_t, size_t no, size_t *count); 91 92 /* Lock settings. */ 93 extern int mu_mailbox_get_locker (mu_mailbox_t, mu_locker_t *); 94 extern int mu_mailbox_set_locker (mu_mailbox_t, mu_locker_t); 95 96 /* Property. */ 97 extern int mu_mailbox_get_flags (mu_mailbox_t, int *); 98 extern int mu_mailbox_get_property (mu_mailbox_t, mu_property_t *); 99 extern int mu_mailbox_set_property (mu_mailbox_t, mu_property_t); 100 101 /* URL. */ 102 extern int mu_mailbox_get_url (mu_mailbox_t, mu_url_t *); 103 104 /* Events. */ 105 extern int mu_mailbox_get_observable (mu_mailbox_t, mu_observable_t *); 106 107 /* Locking */ 108 extern int mu_mailbox_lock (mu_mailbox_t mbox); 109 extern int mu_mailbox_unlock (mu_mailbox_t mbox); 110 111 extern int mu_mailbox_get_iterator (mu_mailbox_t mbx, 112 mu_iterator_t *piterator); 113 114 /* Biff notifications */ 115 extern int mu_mailbox_set_notify (mu_mailbox_t mbox, const char *user); 116 extern int mu_mailbox_unset_notify (mu_mailbox_t mbox); 117 118 /* ID translation */ 119 #define MU_MAILBOX_UID_TO_MSGNO 0 120 #define MU_MAILBOX_MSGNO_TO_UID 1 121 122 extern int mu_mailbox_translate (mu_mailbox_t, int, size_t, size_t *); 123 124 /* Copy message into a folder */ 125 #define MU_MAILBOX_COPY_UID 0x01 126 #define MU_MAILBOX_COPY_CREAT 0x02 127 128 extern int mu_mailbox_msgset_copy (mu_mailbox_t, mu_msgset_t, const char *, 129 int); 130 extern int mu_mailbox_message_copy (mu_mailbox_t, size_t, const char *, int); 131 132 #ifdef __cplusplus 133 } 134 #endif 135 136 #endif /* _MAILUTILS_MAILBOX_H */ 137