mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
lib: catch exceptions in n_m_get_flag, provide n_m_get_flag_st
It's not very nice to return FALSE for an error, so provide notmuch_message_get_flag_st as a migration path. Bump LIBNOTMUCH_MINOR_VERSION because the API is extended.
This commit is contained in:
parent
13116c5ced
commit
2d04ed2631
3 changed files with 55 additions and 6 deletions
|
@ -1166,15 +1166,40 @@ notmuch_message_count_files (notmuch_message_t *message)
|
|||
return _notmuch_string_list_length (message->filename_list);
|
||||
}
|
||||
|
||||
notmuch_status_t
|
||||
notmuch_message_get_flag_st (notmuch_message_t *message,
|
||||
notmuch_message_flag_t flag,
|
||||
notmuch_bool_t *is_set)
|
||||
{
|
||||
if (! is_set)
|
||||
return NOTMUCH_STATUS_NULL_POINTER;
|
||||
|
||||
try {
|
||||
if (flag == NOTMUCH_MESSAGE_FLAG_GHOST &&
|
||||
! NOTMUCH_TEST_BIT (message->lazy_flags, flag))
|
||||
_notmuch_message_ensure_metadata (message, NULL);
|
||||
} catch (Xapian::Error &error) {
|
||||
LOG_XAPIAN_EXCEPTION (message, error);
|
||||
return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
|
||||
}
|
||||
|
||||
*is_set = NOTMUCH_TEST_BIT (message->flags, flag);
|
||||
return NOTMUCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
notmuch_bool_t
|
||||
notmuch_message_get_flag (notmuch_message_t *message,
|
||||
notmuch_message_flag_t flag)
|
||||
{
|
||||
if (flag == NOTMUCH_MESSAGE_FLAG_GHOST &&
|
||||
! NOTMUCH_TEST_BIT (message->lazy_flags, flag))
|
||||
_notmuch_message_ensure_metadata (message, NULL);
|
||||
notmuch_bool_t is_set;
|
||||
notmuch_status_t status;
|
||||
|
||||
return NOTMUCH_TEST_BIT (message->flags, flag);
|
||||
status = notmuch_message_get_flag_st (message, flag, &is_set);
|
||||
|
||||
if (status)
|
||||
return FALSE;
|
||||
else
|
||||
return is_set;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -58,7 +58,7 @@ NOTMUCH_BEGIN_DECLS
|
|||
* version in Makefile.local.
|
||||
*/
|
||||
#define LIBNOTMUCH_MAJOR_VERSION 5
|
||||
#define LIBNOTMUCH_MINOR_VERSION 2
|
||||
#define LIBNOTMUCH_MINOR_VERSION 3
|
||||
#define LIBNOTMUCH_MICRO_VERSION 0
|
||||
|
||||
|
||||
|
@ -1486,11 +1486,36 @@ typedef enum _notmuch_message_flag {
|
|||
|
||||
/**
|
||||
* Get a value of a flag for the email corresponding to 'message'.
|
||||
*
|
||||
* returns FALSE in case of errors.
|
||||
*
|
||||
* @deprecated Deprecated as of libnotmuch 5.3 (notmuch 0.31). Please
|
||||
* use notmuch_message_get_flag_st instead.
|
||||
*/
|
||||
NOTMUCH_DEPRECATED(5,3)
|
||||
notmuch_bool_t
|
||||
notmuch_message_get_flag (notmuch_message_t *message,
|
||||
notmuch_message_flag_t flag);
|
||||
|
||||
/**
|
||||
* Get a value of a flag for the email corresponding to 'message'.
|
||||
*
|
||||
* @param message a message object
|
||||
* @param flag flag to check
|
||||
* @param is_set pointer to boolean to store flag value.
|
||||
*
|
||||
* @retval #NOTMUCH_STATUS_SUCCESS
|
||||
* @retval #NOTMUCH_STATUS_NULL_POINTER is_set is NULL
|
||||
* @retval #NOTMUCH_STATUS_XAPIAN_EXCEPTION Accessing the database
|
||||
* triggered an exception.
|
||||
*
|
||||
* @since libnotmuch 5.3 (notmuch 0.31)
|
||||
*/
|
||||
notmuch_status_t
|
||||
notmuch_message_get_flag_st (notmuch_message_t *message,
|
||||
notmuch_message_flag_t flag,
|
||||
notmuch_bool_t *is_set);
|
||||
|
||||
/**
|
||||
* Set a value of a flag for the email corresponding to 'message'.
|
||||
*/
|
||||
|
|
|
@ -438,7 +438,6 @@ EOF
|
|||
test_expect_equal_file EXPECTED OUTPUT
|
||||
|
||||
test_begin_subtest "Handle getting ghost flag from closed database"
|
||||
test_subtest_known_broken
|
||||
cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||
{
|
||||
notmuch_bool_t result;
|
||||
|
|
Loading…
Reference in a new issue