notmuch clon
Find a file
Keith Packard d025e89ac7 Fix "too many open files" bug by closing message files when done with them.
The message file header parsing code parses only enough of the file to
find the desired header fields, then it leaves the file open until the
next header parsing call or when the message is no longer in use. If a
large number of messages end up being active, this will quickly run
out of file descriptors.

Here, we add support to explicitly close the message file within a
message, (_notmuch_message_close) and call that from thread
construction code.

Signed-off-by: Keith Packard <keithp@keithp.com>

Edited-by: Carl Worth <cworth@cworth.org>:

Many portions of Keith's original patch have since been solved other
ways, (such as the code that changed the handling of the In-Reply-To
header). So the final version is clean enough that I think even Keith
would be happy to have his name on it.
2009-11-17 18:37:13 -08:00
lib Fix "too many open files" bug by closing message files when done with them. 2009-11-17 18:37:13 -08:00
.gitignore Update .gitignore, add objects and static archives 2009-11-17 12:34:04 -08:00
AUTHORS Drop date.c file, (use identical function from GMime instead). 2009-11-02 14:36:33 -08:00
configure Add a simple configure script. 2009-11-02 09:11:37 -08:00
COPYING Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
COPYING-GPL-3 Add copy of GNU General Public License (version 3). 2009-10-21 16:25:08 -07:00
gmime-filter-reply.c notmuch reply: Add (incomplete) reply command 2009-11-10 13:32:02 -08:00
gmime-filter-reply.h notmuch reply: Add (incomplete) reply command 2009-11-10 13:32:02 -08:00
INSTALL Add an INSTALL file. 2009-11-02 09:25:04 -08:00
Makefile Makefile: Change default install prefix from /usr to /usr/local 2009-11-17 13:05:16 -08:00
Makefile.config Makefile: Change default install prefix from /usr to /usr/local, really 2009-11-17 13:11:20 -08:00
Makefile.local Makefile: Manual pages shouldn't be executable 2009-11-17 13:11:20 -08:00
notmuch-client.h notmuch search: Add --first and --max-threads options for incremental search. 2009-11-12 20:47:12 -08:00
notmuch-completion.bash Add bash-completion script for notmuch. 2009-10-24 22:28:22 -07:00
notmuch-config.c Deal with situation where sysconf(_SC_GETPW_R_SIZE_MAX) returns -1 2009-11-17 12:27:49 -08:00
notmuch-dump.c libnotmuch: Underlying support for doing partial-results searches. 2009-11-12 16:47:27 -08:00
notmuch-new.c notmuch new/tag: Flush all changes to database when interrupted. 2009-11-13 09:05:13 -08:00
notmuch-reply.c notmuch_message_file_get_header returns "" for missing headers, not NULL 2009-11-16 22:10:36 -08:00
notmuch-restore.c notmuch restore was skipping entries with no new tags 2009-11-16 12:03:05 -08:00
notmuch-search.c notmuch search: Add support for a --reverse option to reverse sort order. 2009-11-12 22:35:16 -08:00
notmuch-setup.c notmuch new: Unbreak after the addition of notmuch-config. 2009-11-11 19:50:15 -08:00
notmuch-show.c notmuch show: Detect an internal error if a thread has no messages. 2009-11-17 17:55:45 -08:00
notmuch-tag.c notmuch new/tag: Flush all changes to database when interrupted. 2009-11-13 09:05:13 -08:00
notmuch-time.c notmuch: Break notmuch.c up into several smaller files. 2009-11-10 12:03:05 -08:00
notmuch.1 notmuch reply: Add (incomplete) reply command 2009-11-10 13:32:02 -08:00
notmuch.c notmuch new: Unbreak after the addition of notmuch-config. 2009-11-11 19:50:15 -08:00
notmuch.el Use 'forward-line' instead of 'next-line' while walking search display 2009-11-16 22:10:36 -08:00
query-string.c notmuch: Break notmuch.c up into several smaller files. 2009-11-10 12:03:05 -08:00
README README: Add a simple file explaining notmuch and pointing out resources. 2009-11-02 07:18:49 -08:00
show-message.c notmuch reply: Use GMime to construct the header for the reply. 2009-11-11 10:54:12 -08:00
TODO TODO: Add note on making "notmuch new" interruptible. 2009-11-12 09:35:03 -08:00

Notmuch - thread-based email index, search and tagging.

Notmuch is a system for indexing, searching, reading, and tagging
large collections of email messages. It uses the Xapian library to
provide fast, full-text search of very large collection of email with
a very convenient search syntas.

Notmuch is free software, released under the GNU General Public
License version 3 (or later).

Building notmuch
----------------
See the INSTALL file for notes on compiling and installing notmuch.

Contacting users and developers
-------------------------------
The website for Notmuch is:

	http://notmuchmail.org

We will soon be creating a mailing list for users and developers of
notmuch. Details will appear on the website. Until then, please feel
free to email Carl with any questions you have:

	Carl Worth <cworth@cworth.org>

There is also an IRC channel dedicated to talk about using and
developing notmuch:

	IRC server:	irc.freenode.net
	Channel:	#notmuch

Interface options
-----------------
Notmuch includes a "notmuch" command-line interface to the system.
This is not a very convenient interface and it is not expected that
users will find it satisfying. Instead, there are two option for
obtaining a more sophisticated interface:

     1. Build on top of the "notmuch" command-line interface.

	This might be a reasonable option for a very text-oriented
	client environment. For example, an emacs-based interface for
	notmuch is already under development and is available in the
	notmuch.el file in this distribution.

	If someone were to write a curses-based interface, or similar,
	it might also be reasonable to buil on the "notmuch"
	command-line interface.

     2. Build on top of the notmuch library interface.

	This is a better choice for developing an interface that has
	full control of the presentation of email threads and
	messages. It is expected that anyone integrating Notmuch into
	an existing, graphical email program use the notmuch library
	interface.

	The public interface to the notmuch library is contained in
	the notmuch.h header file. The "notmuch" command-line program
	in notmuch.c can be used as good example code, since it is a
	simple program that is written on top of the library
	interface.

As can be seen, alternate interfaces to the Notmuch mail system are
still in development. We would appreciate any contributions to these
efforts.