Commit graph

5945 commits

Author SHA1 Message Date
Jani Nikula
12621980ee cli: abstract notmuch new result printing
The notmuch_new_command() function has grown huge, chop it up a
bit. This should also be helpful when adding a --quiet option to
notmuch new. No functional changes.
2014-01-26 09:44:42 -04:00
Jani Nikula
f849b371cc cli: for loop is more customary
With the happy day stop condition within the while, it was
confusing. Switch to the paradigm for loop. No functional changes.
2014-01-26 09:41:29 -04:00
Jani Nikula
0b247cb411 cli: use dirent_type in count_files too
Avoid an extra stat per file, if possible, also when counting the
files for initial indexing.
2014-01-26 09:38:22 -04:00
Jani Nikula
65ebd34329 cli: only check the ignore list if needed
Premature optimization is the root of all evil, but this is simple
enough.
2014-01-26 09:37:01 -04:00
Jani Nikula
caf5514a36 cli: extract single message addition in notmuch new to clarify code
The add_files() function has grown huge, chop it up a bit. No
functional changes.
2014-01-26 09:36:51 -04:00
David Bremner
3b74537f49 lib: update documentation for notmuch_database_get_directory
Clarify that using the directory after destroying the corresponding
database is not permitted.

This is implicit in the description of notmuch_database_destroy, but
it doesn't hurt to be explicit, and we do express similar "ownership"
relationships at other places in the docs.
2014-01-26 09:36:38 -04:00
Tomi Ollila
b54e2f4fb1 build: delete the default .SUFFIXES
All implicit rules in notmuch Makefiles are "pattern rules"; Deleting the
default suffixes (to support obsolete, old-fashioned "suffix rules") from
make reduces the output of 'make -d' by 40 to 90 percent, helping e.g.
debugging make problems.
2014-01-25 13:09:45 -04:00
David Bremner
ecbb29e8ce notmuch-show: detect NULL pointer returned from notmuch_query_search_threads
We want to return an error status, not 0 or (worse) segfault.
2014-01-24 20:24:11 -04:00
David Bremner
29f1252126 lib: make notmuch_threads_valid return FALSE when passed NULL
Without this patch, the example code in the header docs crashes for certain
invalid queries (see id:871u00oimv.fsf@approx.mit.edu)
2014-01-24 20:20:54 -04:00
David Bremner
5c526d1737 test: add known broken test exit code of notmuch show
This test catches a segfault on a syntactically invalid query. It also
catches a problem with my initial fix, which still returned 0.
2014-01-24 20:19:50 -04:00
David Bremner
5dd59d2a5e man: update notmuch-dump man page for new default.
Actually the previous default was not documented explicitely.  I moved
the batch-tag section first because it seemed that the formats were
previously documented in order default, other.
2014-01-24 08:52:22 -04:00
David Bremner
f4167e6de8 notmuch dump: default to batch-tag format.
Although we didn't formally deprecate the old format, the new one has
been available for a year.
2014-01-24 08:52:09 -04:00
Jani Nikula
3b36898f0b cli: abstract common config get/set code
Pretty straightforward abstraction similar to get/set list.
2014-01-18 20:09:49 -04:00
Tomi Valkeinen
075d53dde5 lib: fix error handling
Currently if a Xapian exception happens in notmuch_message_get_header,
the exception is not caught leading to crash. In
notmuch_message_get_date the exception is caught, but an internal error
is raised, again leading to crash.

This patch fixes the error handling by making both functions catch the
Xapian exceptions, print an error and return NULL or 0.

The 'notmuch->exception_reported' is also set, as is done elsewhere,
even if I don't really get the idea of that field.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@iki.fi>
2014-01-18 14:47:35 -04:00
Jani Nikula
40a3bf7e68 cli: close config and do talloc report also on errors
Seems like the sensible thing to do.
2014-01-18 14:46:05 -04:00
Jani Nikula
c745377306 cli: clean up exit status code returned by the cli commands
Apart from the status codes for format mismatches, the non-zero exit
status codes have been arbitrary. Make the cli consistently return
either EXIT_SUCCESS or EXIT_FAILURE.
2014-01-18 14:45:26 -04:00
Mark Walters
17e44cd584 emacs: tree: use tag-format-tags
Previously tree did not use tag-format-tags: since tree wants to
distinguish matching messages from non-matching messages it is not a
perfect fit.

However, in preparation for allowing tag-changes to be shown (i.e.,
added or deleted tags to be indicated) it is convenient to make all
places displaying tags call the same routines.

We modify notmuch-tag-format-tags slightly so that it can take and
argument for the default characteristics of the face before the
special tag features are applied.

This also means that things like the star symbol for flagged messages
all work in tree.
2014-01-18 14:41:50 -04:00
Mark Walters
3c231e7e49 emacs: tree: default face for matching/non-matching messages
This adds default faces for matching and non-matching messages. This
makes it easier for a user to do broad customization without having to
customize every field. It also fits more neatly with the next patch
which switches to using notmuch-tag-format-tags for tag formatting.

We set the field specific face customization to nil for all the fields
which use the message default face to make it clear to a user which
fields customizations are being used.
2014-01-18 14:41:19 -04:00
Tomi Ollila
86e24eab8a test: leave T\d\d\d- in variable $this_test and introduce $this_test_bare
Script `notmuch-test` expects the results file have T\d\d\d- part
intact so the results files (and some test output files) are now
name as such.
Without this change `notmuch-test` will exit in case the test
script it was executing exited with nonzero value.

The T\d\d\d- part is dropped in new variable $this_test_bare which is
used in progress informational messages and when loading .el files in
emacs tests (whenever $this_test_bare.el exists).
2014-01-18 14:40:11 -04:00
Jani Nikula
f94834407b lib: fix clang compiler warning
With some combination of clang and talloc, not using the return value
of talloc_steal() produces a warning. Ignore it, as talloc_steal() has
no failure modes per documentation.
2014-01-18 14:39:51 -04:00
David Bremner
ae47d617a7 test: add test for syntax of emacs test library
If there is a syntax error in the emacs test library, it causes other
tests to hang or crash without a useful error message.

This test could be eliminated if the error reporting for emacs tests
was somehow improved.
2014-01-13 14:31:15 -04:00
Jani Nikula
89fe006ca4 cli: initialize quiet variable in compact
Surprisingly there's no compiler warning!
2014-01-13 14:30:27 -04:00
Tomi Ollila
a755c9d6a9 test: renamed test scripts to format T\d\d\d-name.sh
All test scripts to be executed are now named as T\d\d\d-name.sh,
numers in increments of 10.

This eases adding new tests and developers to see which are test scripts
that are executed by test suite and in which order.
2014-01-13 14:16:46 -04:00
Tomi Ollila
84719b08f7 test: basic: drop 'ensure all available tests are run'
When naming test scripts in format 'T\d\d\d-name.sh' the list of
tests to run are created dynamically. This makes test

'Ensure that all available tests will be run by notmuch-test'

in test/basic obsolete.
2014-01-13 14:16:35 -04:00
Mark Walters
719391f09a emacs: tree remove comma separator tags
Previously the tags on each line in tree view were separarted by ", "
not just " ". This is different from show and search views.

This patch removes this comma. This is a large patch as essentially
every line of each of the expected outputs in the tree tests needs
updating.

Apart from aesthetic reasons this simplifies the switch to
notmuch-tag-format-tags in the next patch.
2014-01-13 14:12:29 -04:00
Tomi Ollila
a7e072f277 build: remove trailing '/.' when doing mkdir -p .deps/.
When make variable $@ does not contain directory part, $(@D)
resolves as '.'. In this case .deps/$(@D) is '.deps/.'
In some systems `mkdir [-p] directory/.` fails.
To make this compatible with more system substitute trailing
'/.' (slashdot) with '' (empty string) whenever it occurs there.
2014-01-13 14:12:15 -04:00
Tomi Ollila
f2a3d9799d emacs: Makefile.local: HAVE_EMACS usage fixes
If we don't have emacs, disable targets that used EMACS while doing
the recipes of that target.

If we do have emacs, make install-emacs depend on *.elc files,
as making the target will attempt to install those.
2014-01-13 14:12:05 -04:00
David Bremner
79b6b0190b uploaded to Debian unstable
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQGcBAABCAAGBQJS0yuYAAoJEPIClx2kp54s6HAL/RbxzE1sHhjRHwq8j2aTskGZ
 Qd02bgQSxJN2eIE1SzTc0XKCJkY13R1ZZ0cEgsgrBQg9OIlyYFZYcReD6Cg0CFUk
 BGH+RSrfULMuzo2Q9c69JkpVJXPOBl0Jp37a91+a3WwbCZSFNaxRqSWLaqt7ZYJW
 ucYWPHAo32c7Fwe+4obXXzoB7ZClDCyv/3R4EZ93gTUbePKKRSs3MUGv81v0HBXF
 jgdZuUs63b8eGJyFyWazOY6mlenCB9tS2UwcSnRl2JzWcxfPk/2HEhKUs8DAwwc1
 pa14uwzCNYyxlYPUJnyt8aoFZC9/YIgxlA8emrUEgnSyBDoRupO1g9RP/CRtzs1X
 92g/asrq6lKIziU0mx9qGp+Dm4++SfU7OekTamSYTKCsqrKHBbe1KavG6SGUzIto
 BZ6g/QXdpGuPvYfBRs51kzLnl9+IP9lTHGiD4u/Njz9GcCA5PuIq4Vygwmi3vF1r
 RApE3d8QpkNcLSKzuR9Kb7N3N2OWbqNJCuArNsvxJw==
 =Y3L3
 -----END PGP SIGNATURE-----

Merge tag 'debian/0.17-3'

uploaded to Debian unstable
2014-01-12 19:56:25 -04:00
David Bremner
f2e1f0b006 debian: add single-debian-patch
The point of fancy patch systems is to share things with upstream. We
have met the upstream and he is us.
2014-01-12 17:10:04 -04:00
David Bremner
030c85bc03 debian: finalize changelog for 0.17-3 2014-01-12 17:10:01 -04:00
David Bremner
b4f3be53c8 test/emacs: replace the use of process-attributes with signal-process
In some environments (at least Hurd), process-attributes is
unimplimented and always returns nil.  This ends up causing test
failures (see e.g. id:87a9ffofsc.fsf@zancas.localnet).

Historically and according to POSIX 1003.1-2001, a signal of 0 can be
used to check the validity of a pid. This seems less heinous than
parsing the output of ps(1).
2014-01-12 17:08:14 -04:00
David Bremner
beaf251e16 debian: update notmuch-emacs for emacs policy 2.0.6
This involves
- the meta-flavour emacs has gone away
- a compat file is needed (also installed by dh_installemacsen)
- a conflict with pre-2.0.0 emacsen-common
- manually managing the "installed" semaphore file
2014-01-12 17:08:08 -04:00
Jani Nikula
b65ca8e0ba lib: modify notmuch.h for automatic document generation
Minimal changes to produce a sensible result.
2014-01-05 09:05:00 -04:00
Jani Nikula
f230fd167a devel: add doxygen configuration file
This is a pretty basic config to get started, generated using 'doxygen
-s -g' and mildly tweaked.

To generate the library man page man/man3/notmuch.3 from lib/notmuch.h
use:

$ doxygen devel/doxygen.cfg
2014-01-05 08:59:52 -04:00
Jani Nikula
58dfc87721 insert: respect maildir.synchronize_flags
Don't synchronize maildir flags if the user doesn't want it.
2014-01-03 07:13:00 -04:00
Jani Nikula
b00a62b3d9 test: notmuch insert with maildir.synchronize_flags=false
Known broken, notmuch insert does not respect the config option.
2014-01-03 07:12:47 -04:00
Mark Walters
e36284d72d emacs: tree: bare-id in tree
Previously notmuch-tree-get-message-id always returned the id
including the prefix "id:". Modify the function to take an optional
`bare' argument saying to return the raw string.

This will be useful later and brings the function in line with
notmuch-show-get-message-id.
2014-01-03 07:12:28 -04:00
Mark Walters
191f41cfec test: tree: pick remnants removed
Some no longer needed traces of pick remain in the emacs-tree
test. Remove these.
2014-01-03 07:12:08 -04:00
David Bremner
39408d0f7d uploaded to unstable
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQGcBAABCAAGBQJSxAFkAAoJEPIClx2kp54s7oYL/j7VkKxuMuk79LsHo3mQyqQY
 247dj4N/2VI6SUh15pXKcN2rIBB4leRRWHkISZk1W8K7Y5gaWpqTdavDQY+owxe3
 6xSDxdWlRvW13RUGi17+syviv/7qujBOacNVQSdRgar6mJv7xBaYb/wq/vGIvrHA
 KlPu4fUiQWXb9H5I+Xig/kSzsKbVUKTewdbCm2tWe4rmBtlEtD6U3jLk/J5zuHUq
 7+VIjocK+FfVlTRyr0WyH8zsk4LuXxlcs+6mhGfXta1baTbUSYGU3QqPtin7533M
 7ezEjYtuf+7M5/edZVN7Rd5lwwBnxaqaBo7zbBa/YnuiuoPol5J9E+cx1M4TSgKH
 VnSpF5zFJxjQP2UtH8M5nhsigHfjTTxXpaV+qDiL5Weg6hozD3jOku0Y/asWxMV6
 lWtPHyHxd0HLUdIsVod7oMtUtqip5Vjj+v+jdC6XNGx0VkokRD3ax11+865/BkuX
 coAEU5np6gFs5o38rqSvVy28GJAIcmJvvA4RBmYRyQ==
 =IKnq
 -----END PGP SIGNATURE-----

Merge tag 'debian/0.17-2'

uploaded to unstable
2014-01-01 07:53:25 -04:00
David Bremner
fea6fe64e1 debian: rename NEWS.Debian to NEWS
Apparently I had it backwards: NEWS is installed as NEWS.Debian, not
vice-versa.
2014-01-01 07:44:52 -04:00
David Bremner
c734dd7534 notmuch 0.17 release
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQGcBAABCAAGBQJSwhR/AAoJEPIClx2kp54sVkwL/iWilsIvY9v0nnzLnp42c/Kc
 4ZLQUC7uPxzMLFfpgXs1n3nyD+n/Jtxd4xM4XaLhclaVTTGUkRT9FbUq0GHMRBc0
 KpgfSfouWL+7+Y6rDrb9YQkSwwVTncJ+3IPdjrn6/Y6wY8809TP9fEo0uo2go43u
 BVVv/VD7KCDEKCeRkqZRprYQWneuZUM/re1P/u3b7Bkst57c+OXUsTUj2xHVwZ8d
 TuNjhE9dGuaR4PifqO1kwX4wG6qZLrZArKSH0cwIuZLavsSI+/C5WIEVIt/2LEBX
 Cxzv6uslmzeJh9a6hsEU/YBJ8G5TgRflHL3eDA93jtJ5u12/JbxIXr0OfnWND1R6
 8oSLAydjrL/LkzhUkInrFShhCkXB28SbM8zNWV9vwKDmqfs78+ftYqF+lFCR0Zt7
 IvzHbJoXNyRC3Mk1ykNLr+XwICGT1yTMzOzKieW9kadjbfSN64I5RHeYc9hIIGGH
 Y/TsLsEXINBAcPyP6sBrzHyxKhrC+PmvQWLzNdIKpw==
 =DpTl
 -----END PGP SIGNATURE-----

Merge tag '0.17'

notmuch 0.17 release
2013-12-30 20:52:32 -04:00
Tomi Ollila
0c097d9f6e devel/release-checks.sh: adjust to LIBNOTMUCH version checks
NOTMUCH_VERSION_* macros in lib/notmuch.h are replaced with
LIBNOTMUCH_VERSION_* macros. Check that the values of those
match the LIBNOTMUCH_*_VERSION values in lib/Makefile.local.
2013-12-30 20:39:25 -04:00
David Bremner
ceef57b3d9 version: bump to 0.17 2013-12-30 20:34:23 -04:00
David Bremner
be9a871fa5 debian: add changelog and NEWS.Debian for release
NEWS.Debian is displayed at install, so we include the news item about
the disruptive change in sha1 computation.
2013-12-30 20:32:53 -04:00
David Bremner
56edfd4bcf debian: disable atomicity tests on ia64
The following fails on Debian ia64:

% gdb /bin/mv
(gdb) break rename

Since this breaks our atomicity test, disable them until someone is
motivated to figure out whose fault that is.
2013-12-30 20:14:54 -04:00
David Bremner
47b9314eee notmuch 0.17~rc4 release
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQGcBAABCAAGBQJSv30MAAoJEPIClx2kp54s5KcL+wX3z4NjIOKcTUVEUI0A97JK
 RaGpm+TNSJjfiJSwzDPLm93S7Q+DGfPPTuAWUL69fJlDYvGRRlZfsVSLTq/YLPOz
 cfz9laTp+gqEF9aDGCa/1vZdfmP6ojXOvm24LiRo/LGS9t6OQUts4Ia1zzsNzFJT
 hBblll2sk21c//biD8wLfBj6vKwXNmQAiNiPl1sYbhGjTSPe1pnvPoe4DuhJHk5A
 +V6bq8xRGMGRDayOCsYDoKlYT89IlcHAFQLQiaxNJQ+diopNsK2w4rWJhQr9xkvV
 Ps9wySt48Smlw4wkDUswiBy8K9xrnVZ/pKPzCl4M/ObLBgYXD2Z6m8el+3KKXVk3
 i9PUyrjtaUURvtZJphTdCPX8qr4DMWPhf0hmOH8AO7BpVG9DAXkB3GBEI9Gy/9yR
 RaeuJEYIO8EbQ3cX8bQexU+ZzQTohZyBVSj5BuRgHzFrySGhRSxzb4W1ESqieEiS
 b6/71t/8WH1K3WPol2HeId38BGC6X8J6mnVINfbGeA==
 =z/ep
 -----END PGP SIGNATURE-----

Merge tag '0.17_rc4'

notmuch 0.17~rc4 release
2013-12-28 21:45:19 -04:00
David Bremner
05b534209d version: bump to 0.17~rc4
Unfortunately release-checks.sh will whine a bit because it has not
caught up with the renaming of the version macros.
2013-12-28 18:40:05 -04:00
Austin Clements
ef7b77ea3b test: Fix transient error in 'new' test
This fixes a non-deterministic failure in "Ignore files and
directories specified in new.ignore (multiple occurrences)".  The test
assumed that all directories would be scanned, even though nothing
updated the mtime of ${MAIL_DIR}.  It *usually* worked nevertheless
because the tests run quickly enough that the directory mtime is
usually the same as the current time, so notmuch new does not update
the mtime in the database (because more changes could occur in the
same second).  However, when it occasionally did update the mtime in
the database, the notmuch new call in this test would (correctly) skip
"pass 2" of scanning ${MAIL_DIR}, causing it to skip the following
expected lines:

  (D) add_files_recursive, pass 2: explicitly ignoring ${MAIL_DIR}/.git
  (D) add_files_recursive, pass 2: explicitly ignoring ${MAIL_DIR}/.ignored_hidden_file
  (D) add_files_recursive, pass 2: explicitly ignoring ${MAIL_DIR}/ignored_file

This patch fixes this problem by touching ${MAIL_DIR} to ensure it
gets scanned and by rearranging the test to ensure the directories are
touched immediately before the main notmuch new call in the test.
2013-12-28 09:19:51 -04:00
David Bremner
30cde97ba8 test: remove call to notmuch-hello from emacs_deliver_message
There is an obscure bug in notmuch-hello that very occasionally causes
emacs_deliver_message to fail. Since it it doesn't serve any actual
purpose in the function we delete it, and leave tracking down the the
bug for another day.
2013-12-22 20:44:45 +08:00
David Bremner
513a36d105 test: add emacs_fcc_message that does not use smtp-dummy
Most of the tests previously using emacs_deliver_message do not use
the actual transmitted message, so we replace it with a simpler (and
presumably more reliable function) that only saves (and indexes) an
fcc copy of the message.
2013-12-22 20:44:44 +08:00