summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2012-03-18Fix error reporting in notmuch_database_find_message_by_filenameJustus Winter
Formerly it was possible for *message_ret to be left uninitialized. The documentation however clearly states that "[o]n any failure or when the message is not found, this function initializes '*message' to NULL". Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-03-03Actually close the xapian database in notmuch_database_closeJustus Winter
Formerly the xapian database object was deleted and closed in its destructor once the object was garbage collected. Explicitly call close() so that the database and the associated lock is released immediately. The comment is a courtesy of Austin Clements. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-02-29Convert non-UTF-8 parts to UTF-8 before indexing themMichal Sojka
This fixes a bug that didn't allow to search for non-ASCII words such parts. The code here was copied from show_text_part_content(), because the show command already does the needed conversion when showing the message.
2012-02-20Prevent segmentation fault in notmuch_database_closeJustus Winter
Previously opening a notmuch database in read write mode that has been locked resulted in the notmuch_database_open function executing notmuch_database_close as a cleanup function. notmuch_database_close failed to check whether the xapian database has in fact been created. Add a check whether the xapian database object has actually been created before trying to call its flush method. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-02-03lib: Use talloc to simplify cleanup in notmuch_database_openAustin Clements
Previously, we manually "free"d various pointers in notmuch_database_open. Use a local talloc context instead to simplify cleanup and eliminate various NULL pointer initializations and conditionals.
2012-02-03lib: Release resources if notmuch_database_open failsAustin Clements
Previously, if a Xapian exception occurred in notmuch_database_open, we failed to clean up the allocated notmuch_database_t object.
2012-02-03lib: Don't delete uninitialized pointersAustin Clements
In the error-handling paths of notmuch_database_open, we call notmuch_database_close, which "delete"s several objects referenced by the notmuch_database_t object. However, some of these pointers may be uninitialized, resulting in undefined behavior. Hence, allocate the notmuch_database_t with talloc_zero to make sure these pointers are NULL so that "delete"ing them is harmless.
2012-01-16lib: Add support for automatically excluding tags from queriesAustin Clements
This is useful for tags like "deleted" and "spam" that people generally want to exclude from query results. These exclusions will be overridden if a tag is explicitly mentioned in a query.
2012-01-10lib: fix messages.c build warnJani Nikula
lib/messages.c: In function ‘notmuch_messages_move_to_next’: lib/messages.c:131:2: warning: ISO C forbids ‘return’ with expression, in function returning void [-pedantic] Signed-off-by: Jani Nikula <jani@nikula.org>
2011-12-31lib: call g_mime_init() from notmuch_database_open()Kazuo Teramoto
As reported in id:"CAEbOPGyuHnz4BPtDutnTPUHcP3eYcRCRkXhYoJR43RUMw671+g@mail.gmail.com" sometimes gmime tries to access a NULL pointer, e.g. g_mime_iconv_open() tries to access iconv_cache that is NULL if g_mime_init() is not called. This causes notmuch to segfault when calling gmime functions. Calling g_mime_init() initializes iconv_cache and others variables needed by gmime, making sure they are initialized when notmuch calls gmime functions. Test marked fix by db.
2011-12-29Ignore encrypted parts when indexing.Jameson Graef Rollins
It appears to be an oversight that encrypted parts were indexed previously. The terms generated from encrypted parts are meaningless and do nothing but add bloat to the database. It is not worth indexing the encrypted content, just as it's not worth indexing the signatures in signed parts.
2011-12-23Fix comments about what is stored in the databaseThomas Jost
Commit 567bcbc2 introduced two new values for each message (content of the "From" and "Subject" headers), but the comments about the database schema had not been updated accordingly.
2011-12-21notmuch: Quiet buildbot warnings.David Edmondson
Cast away the result of various *write functions. Provide a default value for some variables to avoid "use before set" warnings.
2011-12-06Merge branch 'release'David Bremner
Conflicts: NEWS Conflicts resolved by inserting the 0.10.2 stanza before 0.11
2011-12-04lib: call g_type_init from notmuch_database_openDavid Bremner
We want to make sure g_type_init is called before any GObject functionality is used.
2011-11-21tags_to_maildir_flags: Cleanup double assignementLouis Rilling
The for loop right after already does the job. Signed-off-by: Louis Rilling <l.rilling@av7.net>
2011-11-21lib: Kill last usage of C++ type boolLouis Rilling
Signed-off-by: Louis Rilling <l.rilling@av7.net>
2011-11-19Don't link libnotmuch if libutil isn't linked in properly.Tom Prince
For some reason, on my machine, the link is picking up /usr/lib/libutil.so instead of util/libutil.a. This causes there to be undefined symbols in libnotmuch, making it unuseable. This patch causes the link to fail instead.
2011-11-15lib: add function to get the number of threads matching a searchJani Nikula
Add function notmuch_query_count_threads() to get the number of threads matching a search. This is done by performing a search and figuring out the number of unique thread IDs in the matching messages, a significantly heavier operation than notmuch_query_count_messages(). Signed-off-by: Jani Nikula <jani@nikula.org>
2011-11-14Store "from" and "subject" headers in the database.Austin Clements
This is a rebase and cleanup of Istvan Marko's patch from id:m3pqnj2j7a.fsf@zsu.kismala.com Search retrieves these headers for every message in the search results. Previously, this required opening and parsing every message file. Storing them directly in the database significantly reduces IO and computation, speeding up search by between 50% and 10X. Taking full advantage of this requires a database rebuild, but it will fall back to the old behavior for messages that do not have headers stored in the database.
2011-11-13Link libutil using filenmae, rather than using -l.Tom Prince
glibc includes a libutil, so if the wrong -L options get passed, we will pick up glibc's version, rather than our own.
2011-11-02lib/database.cc: use flush Xapian method instead of commitDavid Bremner
Apparently the method was renamed in Xapian 1.1.0 but the old method name will stay around for a while. It seems better to stick with the old name to make notmuch compile with older versions of Xapian, at least for now.
2011-10-30xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.David Bremner
We keep the lib/xutil.c version. As a consequence, also factor out _internal_error and associated macros. It might be overkill to make a new file error_util.c for this, but _internal_error does not really belong in database.cc.
2011-10-24Prefix lib/notmuch.h and lib/gen-version-script.sh with $(srcdir)Amadeusz Żołnowski
lib/notmuch.h and lib/gen-version-script.sh couldn't have been found when building out of sources directory.
2011-10-04lib: bump SONAMEDavid Bremner
Based on discussions with amdragon, tschwinge, and others on IRC, I concluded that 1) symbol versioning was probably overkill for libnotmuch 2) It was also probably GNU ld specific 3) Most importantly, nobody could tell me on short notice how exactly it works. So since the change to the notmuch_database_find_message breaks the previous ABI, we need to bump the SONAME.
2011-10-04lib: make find_message{,by_filename) report errorsAli Polatel
Previously, the functions notmuch_database_find_message() and notmuch_database_find_message_by_filename() functions did not properly report error condition to the library user. For more information, read the thread on the notmuch mailing list starting with my mail "id:871uv2unfd.fsf@gmail.com" Make these functions accept a pointer to 'notmuch_message_t' as argument and return notmuch_status_t which may be used to check for any error condition. restore: Modify for the new notmuch_database_find_message() new: Modify for the new notmuch_database_find_message_by_filename()
2011-10-04lib: destroy message object after message removalAli Polatel
notmuch_database_remove_message() must call notmuch_message_destroy() once it is done handling message removal.
2011-09-24lib: bump library minor version because of new symbols.David Bremner
This bump is because of the new symbols introduced by the atomicity patches.
2011-09-24lib: Improve notmuch_database_{add,remove}_message documentation.Austin Clements
State up front that these functions may add a filename to an existing message or remove only a filename (and not the message), respectively. Previously, this key information was buried in return value documentation or in "notes", which made it seem secondary to these functions' semantics.
2011-09-24lib: Wrap notmuch_database_add_message in an atomic section.Austin Clements
Adding a message may involve changes to multiple database documents, and thus needs to be done in a transaction. This makes add_message (and, I think, the whole library) atomicity-safe: library callers only needs to use atomic sections if they needs atomicity across multiple library calls.
2011-09-24lib: Add an API to find a message by filename.Austin Clements
notmuch_database_find_message_by_filename is mostly stolen from notmuch_database_remove_message, so this patch also vastly simplfies the latter using the former. This API is also useful in its own right and will be used in a later patch for eager maildir flag synchronization.
2011-09-23lib: Remove message document directly after removing the last file name.Austin Clements
Previously, notmuch_database_remove_message would remove the message file name, sync the change to the message document, re-find the message document, and then delete it if there were no more file names. An interruption after sync'ing would result in a file-name-less, permanently un-removable zombie message that would produce errors and odd results in searches. We could wrap this in an atomic section, but it's much simpler to eliminate the round-about approach and just delete the message document instead of sync'ing it if we removed the last filename.
2011-09-23lib: Indicate if there are more filenames after removal.Austin Clements
Make _notmuch_message_remove_filename return NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID if the message has more filenames and fix callers to handle this.
2011-09-23lib: Add support for nested atomic sections.Austin Clements
notmuch_database_t now keeps a nesting count and we only start a transaction or commit for the outermost atomic section. Introduces a new error, NOTMUCH_STATUS_UNBALANCED_ATOMIC.
2011-09-23lib: Add notmuch_database_{begin,end}_atomic.Austin Clements
These operations translate into non-flushed Xapian transactions, allowing arbitrary groups of database operations to be performed atomically.
2011-09-12lib: Add missing status check in _notmuch_message_remove_filename.Austin Clements
Previously, this function would synchronize the folder list even if removing the file name failed. Now it returns immediately if removing the file name fails.
2011-09-05lib/gen-version-script.h: add getline and getdelim to notmuch.sym if neededDavid Bremner
If the configure script detects missing getline and/or getdelim symbols, then notmuch will use it's own versions. This patch, based on id:"87k49v12i5.fsf@pc44es141.cs.uni-magdeburg.de" by Matthias Guedemann, adds the symbols to notmuch.sym as well so they are properly exported from the library.
2011-09-05lib/gen-version-script.sh: replace --defined argument to nm with awkDavid Bremner
OpenBSD nm apparently doesn't support --defined. The awk condition is based on the assumption that all defined symbols have some hex number in the first column. Thanks to Matthias Guedemann reporting the problem, and an earlier version of this patch.
2011-08-21re-enable notmuch.sym generation using POSIX sedDavid Bremner
Unfortunately Robin Green's patch 52e4dedf9aa was lost when I created gen-version-script.sh. This merges his changes manually into that script. It turns out tabs seem not needed in version script files, so I simplified a bit and removed the printf. Thanks to Alexander Botero-Lowry for help and testing.
2011-07-20libnotmuch: only build symbols list after the modules are builtThomas Jost
If the notmuch.sym target does not explicitly depend on $(libnotmuch_modules), gen-version-script.sh may be run before all the .o files are created, for example when doing a parallel build on a machine with many cores.
2011-07-17Merge commit '0.6.1'David Bremner
Conflicts: lib/Makefile.local The conflicts are from three kinds of commits not merged into release: - typo fixes - removal of debug output - fix for CLEAN rule That were never merged into the release branch.
2011-07-16libnotmuch: export Xapian typeinfo symbolsDavid Bremner
The lack of such exporting seems to cause problems catching exceptions, as suggested by http://gcc.gnu.org/wiki/Visibility This manifested in the symbol-hiding test failing when notmuch was compile with gcc 4.4.5. On i386, this further manifested as notmuch new failing to run (crashing with an uncaught exception on first run).
2011-07-03Use POSIX sed invocationRobin Green
Fixes broken build on DragonFly BSD Signed-off-by: Robin Green <greenrd@greenrd.org>
2011-06-29Fix folder: coherence issueMark Anderson
Add removal of all ZXFOLDER terms to removal of all XFOLDER terms for each message filename removal. The existing filename-list reindexing will put all the needed terms back in. Test search-folder-coherence now passes. Signed-off-by:Mark Anderson <ma.skies@gmail.com> (cherry picked from commit 8a856e5c38b79359e4fbf9e27f58b1fe00c1e18a)
2011-06-29lib/Makefile.local: remove leftover debugging output.David Bremner
The removed "echo $(libnotmuch_modules)" was strictly for debugging. Thanks to Austin Clements for the hint.
2011-06-29Fix folder: coherence issueMark Anderson
Add removal of all ZXFOLDER terms to removal of all XFOLDER terms for each message filename removal. The existing filename-list reindexing will put all the needed terms back in. Test search-folder-coherence now passes. Signed-off-by:Mark Anderson <ma.skies@gmail.com>
2011-06-28libnotmuch: build symbols list without relying on gcc -aux-info.David Bremner
Carl reports "gcc -aux-info notmuch.aux lib/notmuch.h" does not generate notmuch.aux for him with Debian gcc 4.6.0-8. A small modification of the original sed regular expression allows us to work directly from lib/notmuch.h, rather than preprocessing with gcc. As with most such simple regex based "parsing", this is quite sensitive to the input format, and needs that each symbol to be exported from libnotmuch should - start with "notmuch_" - be the first non-whitespace token on the line - be followed by an open parenthesis. (Cherry-picked from 51b7ab69687, with conflicts resolved by db)
2011-06-28libnotmuch: build symbols list without relying on gcc -aux-info.David Bremner
Carl reports "gcc -aux-info notmuch.aux lib/notmuch.h" does not generate notmuch.aux for him with Debian gcc 4.6.0-8. A small modification of the original sed regular expression allows us to work directly from lib/notmuch.h, rather than preprocessing with gcc. As with most such simple regex based "parsing", this is quite sensitive to the input format, and needs that each symbol to be exported from libnotmuch should - start with "notmuch_" - be the first non-whitespace token on the line - be followed by an open parenthesis.
2011-06-28libnotmuch: fix typos in CLEAN setting, add fileDavid Bremner
- c0961e6 introduced a missing slash between $(dir)$(LIBNAME) and missing $(dir) in front of libnotmuch.a - cdf1c70a created a file $(dir)/notmuch.h.gch and neglected to add it to CLEAN
2011-06-23fix sum moar typos [comments in source code]Pieter Praet
Various typo fixes in comments within the source code. Signed-off-by: Pieter Praet <pieter@praet.org> Edited-by: Carl Worth <cworth@cworth.org> Restricted to just source-code comments, (and fixed fix of "descriptios" to "descriptors" rather than "descriptions").