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);
|
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_bool_t
|
||||||
notmuch_message_get_flag (notmuch_message_t *message,
|
notmuch_message_get_flag (notmuch_message_t *message,
|
||||||
notmuch_message_flag_t flag)
|
notmuch_message_flag_t flag)
|
||||||
{
|
{
|
||||||
if (flag == NOTMUCH_MESSAGE_FLAG_GHOST &&
|
notmuch_bool_t is_set;
|
||||||
! NOTMUCH_TEST_BIT (message->lazy_flags, flag))
|
notmuch_status_t status;
|
||||||
_notmuch_message_ensure_metadata (message, NULL);
|
|
||||||
|
|
||||||
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
|
void
|
||||||
|
|
|
@ -58,7 +58,7 @@ NOTMUCH_BEGIN_DECLS
|
||||||
* version in Makefile.local.
|
* version in Makefile.local.
|
||||||
*/
|
*/
|
||||||
#define LIBNOTMUCH_MAJOR_VERSION 5
|
#define LIBNOTMUCH_MAJOR_VERSION 5
|
||||||
#define LIBNOTMUCH_MINOR_VERSION 2
|
#define LIBNOTMUCH_MINOR_VERSION 3
|
||||||
#define LIBNOTMUCH_MICRO_VERSION 0
|
#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'.
|
* 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_bool_t
|
||||||
notmuch_message_get_flag (notmuch_message_t *message,
|
notmuch_message_get_flag (notmuch_message_t *message,
|
||||||
notmuch_message_flag_t flag);
|
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'.
|
* Set a value of a flag for the email corresponding to 'message'.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -438,7 +438,6 @@ EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "Handle getting ghost flag from closed database"
|
test_begin_subtest "Handle getting ghost flag from closed database"
|
||||||
test_subtest_known_broken
|
|
||||||
cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR}
|
||||||
{
|
{
|
||||||
notmuch_bool_t result;
|
notmuch_bool_t result;
|
||||||
|
|
Loading…
Reference in a new issue