<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/notmuch-private.h, branch debian/unstable</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=debian%2Funstable</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=debian%2Funstable'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2025-08-09T10:12:23Z</updated>
<entry>
<title>lib: return NOTMUCH_STATUS_OPERATION_INVALIDATED where appropriate</title>
<updated>2025-08-09T10:12:23Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-08-06T05:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=aa761727999b105711ba4ca789e0836a0a05cf9f'/>
<id>urn:sha1:aa761727999b105711ba4ca789e0836a0a05cf9f</id>
<content type='text'>
The overall goal is to allow clients to restart operations in
situations where that is the response recommended by the underlying
Xapian library.

Amended-by: db, added above explanation
</content>
</entry>
<entry>
<title>lib: add notmuch_threads_status()</title>
<updated>2025-08-04T13:43:35Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-28T14:26:56Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=11d373b4fd05f5409bf5c49459fe141d2235f7f5'/>
<id>urn:sha1:11d373b4fd05f5409bf5c49459fe141d2235f7f5</id>
<content type='text'>
While a number of errors can happen when iterating over threads
(DatabaseModifiedError, memory allocation errors, etc.), the API
currently cannot signal them to the caller, and either triggers an
internal error (aborting the caller) or returns NULL from
notmuch_threads_get() with no information on what actually went wrong.

Add a new public function notmuch_threads_status() - similar to
previously added notmuch_messages_status() - that allows propagating
those errors to the caller.

Use this to remove the INTERNAL_ERROR() in _notmuch_thread_create()
(triggered by T642).

Fixes: https://github.com/pazz/alot/issues/1460

Amended-By: db. Resolved whitespace disagreement between emacs and
uncrustify in favour of uncrustify.
</content>
</entry>
<entry>
<title>lib: handle DatabaseModifiedError in _notmuch_message_create</title>
<updated>2025-07-24T10:30:58Z</updated>
<author>
<name>Anton Khirnov</name>
<email>anton@khirnov.net</email>
</author>
<published>2025-07-07T12:27:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=f375ea1add121c428f261473512831a169dfe335'/>
<id>urn:sha1:f375ea1add121c428f261473512831a169dfe335</id>
<content type='text'>
If an open database is modified sufficiently by other callers, the open
instance becomes invalid and operations on it throw
DatabaseModifiedError. Per Xapian documentation, the caller is then
supposed to reopen the database and restart the query. This exception is
currently not handled in _notmuch_message_create(), leading to the
default handler abort()ing the process.

Catch this exception in _notmuch_message_create() and return an error
instead of crashing. Since the entire query becomes invalid - including
results that have already been read by the caller - this situation
cannot be handled by libnotmuch transparently. A new public function -
notmuch_messages_status() - is added to allow the callers to check
whether the messages iterator was exhausted or terminated early due to
a runtime error. This also allows memory allocation failure to be
signalled to the caller.

Amended-By: David Bremner &lt;david@tethera.net&gt;
            [replace use of notmuch_messages_valid]
</content>
</entry>
<entry>
<title>Pass error message from GLib ini parser to CLI</title>
<updated>2023-09-23T11:34:48Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2023-09-15T12:50:04Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1c10d91d8e4a3e5bc76ca4c6b9939f3759e6ef5e'/>
<id>urn:sha1:1c10d91d8e4a3e5bc76ca4c6b9939f3759e6ef5e</id>
<content type='text'>
The function _notmuch_config_load_from_file is only called in two
places in open.cc. Update internal API to match the idiom in open.cc.
Adding a newline is needed for consistency with other status strings.

Based in part on a patch [1] from Eric Blake.

[1]: id:20230906153402.101471-1-eblake@redhat.com
</content>
</entry>
<entry>
<title>lib: index attachments with mime types matching index.as_text</title>
<updated>2023-04-02T22:24:43Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2023-01-06T00:02:06Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a554690d6af0ac8cb55166a20efd0f449abde389'/>
<id>urn:sha1:a554690d6af0ac8cb55166a20efd0f449abde389</id>
<content type='text'>
Instead of skipping indexing all attachments, we check of a (user
configured) mime type that is indexable as text.
</content>
</entry>
<entry>
<title>lib: add NOTMUCH_STATUS_CLOSED_DATABASE, use in _n_d_ensure_writable</title>
<updated>2022-06-25T19:06:18Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-05-25T10:51:16Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=3f27cce71f9f154cb0c2134c32d41c31eb62a239'/>
<id>urn:sha1:3f27cce71f9f154cb0c2134c32d41c31eb62a239</id>
<content type='text'>
In order for a database to actually be writeable, it must be the case that it
is open, not just the correct type of Xapian object. By explicitely
checking, we are able to provide better error reporting, in particular
for the previously broken test in T566-lib-message.
</content>
</entry>
<entry>
<title>lib: Add missing private status values.</title>
<updated>2022-06-25T19:06:10Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-05-25T10:51:15Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=7e654e2a456c552052e9e50b83da73b4d31d8f2b'/>
<id>urn:sha1:7e654e2a456c552052e9e50b83da73b4d31d8f2b</id>
<content type='text'>
These were missed when the corresponding status codes were added.
</content>
</entry>
<entry>
<title>lib: define macro NODISCARD</title>
<updated>2022-06-25T15:55:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-05-23T23:38:58Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=7d5a9bd3aeed339cb1f1415a9da8fc09c74ca485'/>
<id>urn:sha1:7d5a9bd3aeed339cb1f1415a9da8fc09c74ca485</id>
<content type='text'>
In either C++17 (or later) mode, or when running cppcheck, this can be
used to selectively generate warnings about discarded return values.
</content>
</entry>
<entry>
<title>lib/message: drop _notmuch_message_get_thread_id_only</title>
<updated>2022-06-25T15:55:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-05-23T23:38:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bc80ff829ac205c68dfab45a21d4732cf5b8c2d0'/>
<id>urn:sha1:bc80ff829ac205c68dfab45a21d4732cf5b8c2d0</id>
<content type='text'>
This function has been unused since commit 4083fd8.
</content>
</entry>
<entry>
<title>lib: make indexopts pointers opaque</title>
<updated>2021-10-23T12:48:39Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-06-12T13:26:16Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=c128c995bc3e7474d4086af7e2066f60f54329b2'/>
<id>urn:sha1:c128c995bc3e7474d4086af7e2066f60f54329b2</id>
<content type='text'>
There is no reason for anything outside the indexopts.c compilation
unit to have access to structure members.
</content>
</entry>
</feed>
