diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-11-19 20:34:24 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-11-19 20:34:24 +0200 |
commit | 35718326403f83b3e44cbeb8a3899e9d0d4dab90 (patch) | |
tree | 8b9349e66121b4cb22d8a712d1846dca1a93b0f3 /include/mailutils/sys | |
parent | 530953e151f011eb2f57918039c402f475431a09 (diff) | |
download | mailutils-35718326403f83b3e44cbeb8a3899e9d0d4dab90.tar.gz mailutils-35718326403f83b3e44cbeb8a3899e9d0d4dab90.tar.bz2 |
Implement general-purpose processing of unsolicited responses in imap client.
* include/mailutils/imap.h (mu_imap_response_action_t): New typedef.
(mu_imap_foreach_response): New proto.
(MU_IMAP_CB_PERMANENT_FLAGS,MU_IMAP_CB_MESSAGE_COUNT)
(MU_IMAP_CB_RECENT_COUNT,MU_IMAP_CB_FIRST_UNSEEN)
(MU_IMAP_CB_UIDNEXT,MU_IMAP_CB_UIDVALIDITY)
(MU_IMAP_CB_OK,_MU_IMAP_CB_MAX): New constants.
(mu_imap_callback_t): New typedef.
(mu_imap_callback,mu_imap_register_callback_function): New protos.
(MU_IMAP_RESPONSE_ALERT,MU_IMAP_RESPONSE_BADCHARSET)
(MU_IMAP_RESPONSE_CAPABILITY,MU_IMAP_RESPONSE_PARSE)
(MU_IMAP_RESPONSE_PERMANENTFLAGS,MU_IMAP_RESPONSE_READ_ONLY)
(MU_IMAP_RESPONSE_READ_WRITE,MU_IMAP_RESPONSE_TRYCREATE)
(MU_IMAP_RESPONSE_UIDNEXT,MU_IMAP_RESPONSE_UIDVALIDITY)
(MU_IMAP_RESPONSE_UNSEEN): New constants.
(mu_imap_response_codes): New extern.
* include/mailutils/sys/imap.h (_mu_imap) <callback>: New member.
(_mu_imap_collect_flags, _mu_imap_list_at): New protos.
* libproto/imap/resplist.c (_mu_imap_list_at): New function.
* libproto/imap/callback.c: New file.
* libproto/imap/resproc.c: New file.
* libproto/imap/Makefile.am: Add new files.
* libproto/imap/capability.c: Rewrite using mu_imap_foreach_response.
* libproto/imap/id.c: Likewise.
* libproto/imap/select.c: Likewise.
Diffstat (limited to 'include/mailutils/sys')
-rw-r--r-- | include/mailutils/sys/imap.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/mailutils/sys/imap.h b/include/mailutils/sys/imap.h index dd4b1dfea..de3d1bfb3 100644 --- a/include/mailutils/sys/imap.h +++ b/include/mailutils/sys/imap.h @@ -83,6 +83,13 @@ struct _mu_imap char *mbox_name; /* Name of the currently opened mailbox */ int mbox_writable:1; /* Is it open read/write? */ struct mu_imap_stat mbox_stat; /* Stats obtained from it */ + + /* Callbacks */ + struct + { + mu_imap_callback_t action; + void *data; + } callback[_MU_IMAP_CB_MAX]; }; enum imap_eltype @@ -160,6 +167,10 @@ int _mu_imap_untagged_response_add (mu_imap_t imap); int _mu_imap_list_element_is_string (struct imap_list_element *elt, const char *str); +int _mu_imap_collect_flags (struct imap_list_element *arg, int *res); + +struct imap_list_element *_mu_imap_list_at (mu_list_t list, int idx); + # ifdef __cplusplus } |