/* * Get mailbox's status. */ int request_status(const char *server, const char *port, const char *user, const char *mbox, unsigned int *exists, unsigned int *recent, unsigned int *unseen, unsigned int *uidnext) { int t, r; session *s; const char *m; if (!(s = session_find(server, port, user))) return -1; m = apply_namespace(mbox, s->ns.prefix, s->ns.delim); if (s->protocol == PROTOCOL_IMAP4REV1) { t = imap_status(s, m, "MESSAGES RECENT UNSEEN UIDNEXT"); if ((r = response_status(s, t, exists, recent, unseen, uidnext)) == -1) goto fail; } else { t = imap_examine(s, m); if ((r = response_examine(s, t, exists, recent)) == -1) goto fail; } return r; fail: close_connection(s); session_destroy(s); return -1; }
/* * Get mailbox's status. */ int request_status(session *ssn, const char *mbox, unsigned int *exists, unsigned int *recent, unsigned int *unseen, unsigned int *uidnext) { int t, r; const char *m; m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim); if (ssn->protocol == PROTOCOL_IMAP4REV1) { TRY(t = send_request(ssn, "STATUS \"%s\" (MESSAGES RECENT UNSEEN UIDNEXT)", m)); TRY(r = response_status(ssn, t, exists, recent, unseen, uidnext)); } else { TRY(t = send_request(ssn, "EXAMINE \"%s\"", m)); TRY(r = response_examine(ssn, t, exists, recent)); } return r; }