imap-util.h revision b37634f5bf23ff8c72b88ef6966fd5c730017419
a8c5a86d183db25a57bf193c06b41e092ec2e151Timo Sirainen#ifndef __IMAP_UTIL_H
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen#define __IMAP_UTIL_H
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
a0c453a8edaec90fb0d945c874de0b1845bc7d7eTimo Sirainenenum modify_type {
8d587838c414c48a331f0b54cd7ffd97e5024abdTimo Sirainen MODIFY_ADD,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MODIFY_REMOVE,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MODIFY_REPLACE
2d7df7973f80011033e8e9fa676d3ff4c14468d8Stephan Bosch};
2d7df7973f80011033e8e9fa676d3ff4c14468d8Stephan Bosch
2d7df7973f80011033e8e9fa676d3ff4c14468d8Stephan Boschenum mail_flags {
2d7df7973f80011033e8e9fa676d3ff4c14468d8Stephan Bosch MAIL_ANSWERED = 0x0000001,
c215ca02d468b0e542523df1ed18e5f2d7e63968Timo Sirainen MAIL_FLAGGED = 0x0000002,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_DELETED = 0x0000004,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_SEEN = 0x0000008,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_DRAFT = 0x0000010,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_RECENT = 0x0000020,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen /* rest of the bits are custom flags */
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_CUSTOM_FLAG_1 = 0x0000040,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_SYSTEM_FLAGS_MASK = 0x000003f,
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_CUSTOM_FLAGS_MASK = 0xfffffc0
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen};
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainenstruct mail_full_flags {
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen enum mail_flags flags;
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen const char **custom_flags;
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen unsigned int custom_flags_count;
b8835b8a21c617ceb82ddc5a176243faf36aa8f7Timo Sirainen};
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen/* growing number of flags isn't very easy. biggest problem is that they're
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen stored into unsigned int, which is 32bit almost everywhere. another thing
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen to remember is that with maildir format, the custom flags are stored into
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen file name using 'a'..'z' letters which gets us exactly the needed 26
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen flags. if more is added, the current code breaks. */
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainenenum {
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen MAIL_CUSTOM_FLAG_1_BIT = 6,
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen MAIL_CUSTOM_FLAGS_COUNT = 26,
a0c453a8edaec90fb0d945c874de0b1845bc7d7eTimo Sirainen
b8835b8a21c617ceb82ddc5a176243faf36aa8f7Timo Sirainen MAIL_FLAGS_COUNT = 32
ecdce39e5ef4b62eefa9f5818f17d153fd5d710aTimo Sirainen};
8d587838c414c48a331f0b54cd7ffd97e5024abdTimo Sirainen
8d587838c414c48a331f0b54cd7ffd97e5024abdTimo Sirainen/* Return flags as a space separated string. If custom flags don't have entry
678d0463849ba777106eb7875f27db07a5d8e3dfTimo Sirainen in flags->custom_flags[], or if it's NULL or "" the flag s ignored. */
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainenconst char *imap_write_flags(const struct mail_full_flags *flags);
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen#endif
48566ca412a7cf3b42512fd0ec112744778e5da0Timo Sirainen