From f366c0f6800d5e6cb9edd7ed3d56688caf2cb364 Mon Sep 17 00:00:00 2001 From: djcb Date: Mon, 24 Dec 2012 14:59:48 +0200 Subject: [PATCH] * mu-msg-iter: add mu_msg_iter_get_msgid and mu_msg_iter_get_refs --- lib/mu-msg-iter.cc | 34 +++++++++++++++++++++++++++++++++- lib/mu-msg-iter.h | 27 +++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/lib/mu-msg-iter.cc b/lib/mu-msg-iter.cc index 2f57c8b2..35cf5318 100644 --- a/lib/mu-msg-iter.cc +++ b/lib/mu-msg-iter.cc @@ -137,6 +137,7 @@ public: } } + bool skip_dups () const { return _skip_dups; } bool skip_unreadable () const { return _skip_unreadable; } @@ -300,12 +301,43 @@ mu_msg_iter_is_done (MuMsgIter *iter) unsigned int mu_msg_iter_get_docid (MuMsgIter *iter) { + g_return_val_if_fail (iter, (unsigned int)-1); g_return_val_if_fail (!mu_msg_iter_is_done(iter), (unsigned int)-1); try { return iter->cursor().get_document().get_docid(); - } MU_XAPIAN_CATCH_BLOCK_RETURN (0); + } MU_XAPIAN_CATCH_BLOCK_RETURN ((unsigned int)-1); +} + + + +const char* +mu_msg_iter_get_msgid (MuMsgIter *iter) +{ + g_return_val_if_fail (iter, NULL); + g_return_val_if_fail (!mu_msg_iter_is_done(iter), NULL); + + try { + return iter->cursor().get_document().get_value(MU_MSG_FIELD_ID_MSGID).c_str(); + } MU_XAPIAN_CATCH_BLOCK_RETURN (NULL); +} + + +char** +mu_msg_iter_get_refs (MuMsgIter *iter) +{ + g_return_val_if_fail (iter, NULL); + g_return_val_if_fail (!mu_msg_iter_is_done(iter), NULL); + + try { + std::string refs ( + iter->cursor().get_document().get_value(MU_MSG_FIELD_ID_REFS)); + if (refs.empty()) + return NULL; + return g_strsplit (refs.c_str(),",", -1); + + } MU_XAPIAN_CATCH_BLOCK_RETURN (NULL); } diff --git a/lib/mu-msg-iter.h b/lib/mu-msg-iter.h index 4e9a3fdb..9bcf1759 100644 --- a/lib/mu-msg-iter.h +++ b/lib/mu-msg-iter.h @@ -177,6 +177,33 @@ typedef struct _MuMsgIterThreadInfo MuMsgIterThreadInfo; */ const MuMsgIterThreadInfo* mu_msg_iter_get_thread_info (MuMsgIter *iter); + + +/** + * get a the message-id for this message + * + * @param iter a valid MuMsgIter iterator + * + * @return the message-id; this only stays valid as long as the + * current iter stays valid. + */ +const char* mu_msg_iter_get_msgid (MuMsgIter *iter); + +/** + * get the list of references for this messages as a NULL-terminated + * string array + * + * @param iter a valid MuMsgIter iterator + * + * @return a NULL-terminated string array. free with g_strfreev when + * it's no longer needed. + */ +char** mu_msg_iter_get_refs (MuMsgIter *iter); + + + + + /* FIXME */ const char* mu_msg_iter_get_path (MuMsgIter *iter);