<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib, branch 0.22.1_rc0</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.22.1_rc0</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.22.1_rc0'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2016-06-30T15:49:29Z</updated>
<entry>
<title>lib: fix definition of LIBNOTMUCH_CHECK_VERSION</title>
<updated>2016-06-30T15:49:29Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2016-06-07T10:37:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=ff9284db6ebec1e4cbd7528d63da3cdf4ea9ddff'/>
<id>urn:sha1:ff9284db6ebec1e4cbd7528d63da3cdf4ea9ddff</id>
<content type='text'>
Fix bug reported in id:20160606124522.g2y2eazhhrwjsa4h@flatcap.org

Although the C99 standard 6.10 is a little non-obvious on this point,
the docs for e.g. gcc are unambiguous. And indeed in practice with the
extra space, this code fails

#include &lt;stdio.h&gt;
#define foo (x) (x+1)

int main(int argc, char **argv){
  printf("%d\n",foo(1));
}
</content>
</entry>
<entry>
<title>doc: forbid further operations on a closed database</title>
<updated>2016-06-30T15:48:23Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2016-06-27T18:38:40Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=f2886b80c1addc3d358ba910a4eebf76ba74c00b'/>
<id>urn:sha1:f2886b80c1addc3d358ba910a4eebf76ba74c00b</id>
<content type='text'>
We could add many null pointer checks, but currently I don't see a use
case that justifies it.
</content>
</entry>
<entry>
<title>complete ghost-on-removal-when-shared-thread-exists</title>
<updated>2016-04-15T10:13:49Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-04-09T01:54:52Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=e366bb222722d6a635b736e875b760d82b46d1f5'/>
<id>urn:sha1:e366bb222722d6a635b736e875b760d82b46d1f5</id>
<content type='text'>
To fully complete the ghost-on-removal-when-shared-thread-exists
proposal, we need to clear all ghost messages when the last active
message is removed from a thread.

Amended by db: Remove the last test of T530, as it no longer makes sense
if we are garbage collecting ghost messages.
</content>
</entry>
<entry>
<title>On deletion, replace with ghost when other active messages in thread</title>
<updated>2016-04-15T10:07:23Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-04-09T01:54:51Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=1695415039803fd3b317bccbb3ceca0472bed373'/>
<id>urn:sha1:1695415039803fd3b317bccbb3ceca0472bed373</id>
<content type='text'>
There is no need to add a ghost message upon deletion if there are no
other active messages in the thread.

Also, if the message being deleted was a ghost already, we can just go
ahead and delete it.
</content>
</entry>
<entry>
<title>Introduce _notmuch_message_has_term()</title>
<updated>2016-04-15T10:07:23Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-04-09T01:54:50Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=9eebae3da4510a671cbbb2f476c2dc04099b4415'/>
<id>urn:sha1:9eebae3da4510a671cbbb2f476c2dc04099b4415</id>
<content type='text'>
It can be useful to easily tell if a given message has a given term
associated with it.
</content>
</entry>
<entry>
<title>Add internal functions to search for alternate doc types</title>
<updated>2016-04-15T10:07:23Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-04-09T01:54:49Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=011fc41d4d1a1dc9ae3765c9f08ee603eea7bc7e'/>
<id>urn:sha1:011fc41d4d1a1dc9ae3765c9f08ee603eea7bc7e</id>
<content type='text'>
Publicly we are only exposing the non-ghost documents (of "type"
"mail").  But internally we might want to inspect the ghost messages
as well.

This changeset adds two new private interfaces to queries to recover
information about alternate document types.
</content>
</entry>
<entry>
<title>fix thread breakage via ghost-on-removal</title>
<updated>2016-04-15T10:07:23Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-04-09T01:54:48Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=604d1e0977c2ede365f87492d6b9bf9a83c3e1d3'/>
<id>urn:sha1:604d1e0977c2ede365f87492d6b9bf9a83c3e1d3</id>
<content type='text'>
implement ghost-on-removal, the solution to T590-thread-breakage.sh
that just adds a ghost message after removing each message.

It leaks information about whether we've ever seen a given message id,
but it's a fairly simple implementation.

Note that _resolve_message_id_to_thread_id already introduces new
message_ids to the database, so i think just searching for a given
message ID may introduce the same metadata leakage.
</content>
</entry>
<entry>
<title>lib: clean up _notmuch_database_split_path</title>
<updated>2016-04-12T23:46:42Z</updated>
<author>
<name>Jani Nikula</name>
<email>jani@nikula.org</email>
</author>
<published>2016-04-10T19:43:23Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=54aeab1962d77455a65d0d4338beaabbb936310f'/>
<id>urn:sha1:54aeab1962d77455a65d0d4338beaabbb936310f</id>
<content type='text'>
Make the logic it a bit easier to read. No functional changes.
</content>
</entry>
<entry>
<title>lib: fix handling of one character long directory names at top level</title>
<updated>2016-04-12T23:40:19Z</updated>
<author>
<name>Jani Nikula</name>
<email>jani@nikula.org</email>
</author>
<published>2016-04-10T19:43:22Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=a352d9ceaa7e08b7c9de294419ec4c323b81ca15'/>
<id>urn:sha1:a352d9ceaa7e08b7c9de294419ec4c323b81ca15</id>
<content type='text'>
The code to skip multiple slashes in _notmuch_database_split_path()
skips back one character too much. This is compensated by a +1 in the
length parameter to the strndup() call. Mostly this works fine, but if
the path is to a file under a top level directory with one character
long name, the directory part is mistaken to be part of the file name
(slash == path in code). The returned directory name will be the empty
string and the basename will be the full path, breaking the indexing
logic in notmuch new.

Fix the multiple slash skipping to keep the slash variable pointing at
the last slash, and adjust strndup() accordingly.

The bug was introduced in

commit e890b0cf4011fd9fd77ebd87343379e4a778888b
Author: Carl Worth &lt;cworth@cworth.org&gt;
Date:   Sat Dec 19 13:20:26 2009 -0800

    database: Store the parent ID for each directory document.

just a little over two months after the initial commit in the Notmuch
code history, making this the longest living bug in Notmuch to date.
</content>
</entry>
<entry>
<title>lib: NOTMUCH_DEPRECATED macro also for older compilers</title>
<updated>2016-03-14T22:54:32Z</updated>
<author>
<name>Tomi Ollila</name>
<email>tomi.ollila@iki.fi</email>
</author>
<published>2016-03-01T19:30:07Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=342910a2806aee312f61280c3329cac24c26cfd4'/>
<id>urn:sha1:342910a2806aee312f61280c3329cac24c26cfd4</id>
<content type='text'>
Some compilers (older than gcc 4.5 and clang 2.9) do support
__attribute__ ((deprecated)) but not
__attribute__ ((deprecated("message"))).

Check if clang version is at least 3.0, or gcc version
is at least 4.5 to define NOTMUCH_DEPRECATED as the
latter variant above. Otherwise define NOTMUCH_DEPRECATED
as the former variant above.

For a bit simpler implementation clang 2.9 is not included
to use the newer variant. It is just one release, and the
older one works fine. Clang 3.0 was released around 2011-11
and gcc 5.1 2015-04-22 (therefore newer macro for gcc 4.5+)
</content>
</entry>
</feed>
