notmuch release 0.38.1-1 for unstable (sid) [dgit]

[dgit distro=debian no-split --quilt=linear]
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEkiyHYXwaY0SiY6fqA0U5G1WqFSEFAmU69y8ACgkQA0U5G1Wq
 FSFXdRAAgxgPM5Gys4Dv6GVBm8UmzLKVKokkChlW3Gw/OsEn00QBAXeVZU/Vg5PA
 3b5kmDSotmXoxbHgPrJQ2F20NMP2AMgDnOD7nYGY85VAgccdFPKPOkRYCihJxDva
 oOdt0f2BAUFNgH7DL2usUHJUO2Pjhb97zK5c4wY/akZLL2hnhA3uc9V9Zj2QJz9o
 IlpuaZLt755YCXRYlms9rlFItTqcLisULGu1ppnk1BK2JFK9zQQM27j0P5Gmq0Rq
 ArdLzVHo1+aLcMvUBmwqxgrSjogubwh6rqQF3X+ww09fTAZOAubV6QVIiXRQySVp
 P45nOiIrKLSUxw63cAdvD8kvub6okie0F+8adDGUjVWSPM9941yNAfM8KQCF+4rN
 VylpEjcCPSeGPv9aCtn7CVmBhYq6pLVHdwEWZmMQEltITj2QlobgGZ1YWDhAFS6+
 jTt3uuXrbwWe69eS67tjvZlZYz3Gb0aLKmGALzydyblQhrQ6FQZ9IR9jZYyJWmr3
 2ftk636HVDpDrapyqVFXZCY0EfEQNB+aI0j9KfjqpONpE218gtCT/pZsuXYLVaah
 Uo41O540ZNIoeAviHgiMM9sjRczWFtWoKVieBLGCUJkY6dhQXSNmSWcq3Lex6+BZ
 wmUAd3lfYE9MA9I/ruUhacKrlMsnlNWFazsQbqhRnkczCpMXouU=
 =6DHu
 -----END PGP SIGNATURE-----

Merge tag 'debian/0.38.1-1' into debian/bookworm-backports

notmuch release 0.38.1-1 for unstable (sid) [dgit]

[dgit distro=debian no-split --quilt=linear]
This commit is contained in:
David Bremner 2023-11-01 07:09:38 -03:00
commit 75560c052b
12 changed files with 108 additions and 16 deletions

18
NEWS
View file

@ -1,3 +1,21 @@
Notmuch 0.38.1 (2023-10-26)
===========================
CLI
---
Report parse errors in config files.
Emacs
-----
Fix image toggling for Emacs >= 29.1.
notmuch-mutt
------------
Fix syntax error in script.
Notmuch 0.38 (2023-09-12) Notmuch 0.38 (2023-09-12)
========================= =========================

View file

@ -1,3 +1,3 @@
# this file should be kept in sync with ../../../version # this file should be kept in sync with ../../../version
__VERSION__ = '0.38' __VERSION__ = '0.38.1'
SOVERSION = '5' SOVERSION = '5'

View file

@ -67,7 +67,7 @@ sub check_search_cache_maildir($) {
foreach my $d (@contents) { foreach my $d (@contents) {
-l "$maildir/$d" and die_dir( $maildir, "contains symlink $d"); -l "$maildir/$d" and die_dir( $maildir, "contains symlink $d");
-d "$maildir/$d" or die_dir( $maildir, "contains non-directory $d"); -d "$maildir/$d" or die_dir( $maildir, "contains non-directory $d");
exists($required[$d]) or die_dir( $maildir, "contains directory $d"); exists($required{$d}) or die_dir( $maildir, "contains directory $d");
} }
} }

18
debian/changelog vendored
View file

@ -1,3 +1,21 @@
notmuch (0.38.1-1) unstable; urgency=medium
* New upstream bugfix release
-- David Bremner <bremner@debian.org> Thu, 26 Oct 2023 19:58:42 -0300
notmuch (0.38.1~rc1-1) experimental; urgency=medium
* New upstream release candidate
-- David Bremner <bremner@debian.org> Thu, 12 Oct 2023 19:53:10 -0300
notmuch (0.38.1~pre0-1) experimental; urgency=medium
* New upstream release candidate
-- David Bremner <bremner@debian.org> Sun, 01 Oct 2023 08:14:17 -0300
notmuch (0.38-2~bpo12+1) bookworm-backports; urgency=medium notmuch (0.38-2~bpo12+1) bookworm-backports; urgency=medium
* Rebuild for bookworm-backports. * Rebuild for bookworm-backports.

View file

@ -703,6 +703,7 @@ current buffer, if possible."
(when (mm-inlinable-p handle) (when (mm-inlinable-p handle)
(set-buffer display-buffer) (set-buffer display-buffer)
(mm-display-part handle) (mm-display-part handle)
(plist-put part :undisplayer (mm-handle-undisplayer handle))
t)))))) t))))))
;;; Generic Utilities ;;; Generic Utilities

View file

@ -644,8 +644,24 @@ message at DEPTH in the current thread."
(when show (when show
(button-put button :notmuch-lazy-part nil) (button-put button :notmuch-lazy-part nil)
(notmuch-show-lazy-part lazy-part button)) (notmuch-show-lazy-part lazy-part button))
;; else there must be an overlay. (let* ((part (plist-get properties :notmuch-part))
(overlay-put overlay 'invisible (not show)) (undisplayer (plist-get part :undisplayer))
(mime-type (plist-get part :computed-type))
(redisplay-data (button-get button
:notmuch-redisplay-data))
(imagep (string-match "^image/" mime-type)))
(cond
((and imagep (not show) undisplayer)
;; call undisplayer thunk created by gnus.
(funcall undisplayer)
;; there is an extra newline left
(delete-region
(+ 1 (button-end button))
(+ 2 (button-end button))))
((and imagep show redisplay-data)
(notmuch-show-lazy-part redisplay-data button))
(t
(overlay-put overlay 'invisible (not show)))))
t))))))) t)))))))
;;; Part content ID handling ;;; Part content ID handling
@ -1019,10 +1035,13 @@ will return nil if the CID is unknown or cannot be retrieved."
(part-end (copy-marker (point) t)) (part-end (copy-marker (point) t))
;; We have to save the depth as we can't find the depth ;; We have to save the depth as we can't find the depth
;; when narrowed. ;; when narrowed.
(depth (notmuch-show-get-depth))) (depth (notmuch-show-get-depth))
(mime-type (plist-get (cadr part-args) :computed-type)))
(save-restriction (save-restriction
(narrow-to-region part-beg part-end) (narrow-to-region part-beg part-end)
(delete-region part-beg part-end) (delete-region part-beg part-end)
(when (and mime-type (string-match "^image/" mime-type))
(button-put button :notmuch-redisplay-data part-args))
(apply #'notmuch-show-insert-bodypart-internal part-args) (apply #'notmuch-show-insert-bodypart-internal part-args)
(indent-rigidly part-beg (indent-rigidly part-beg
part-end part-end
@ -1106,14 +1125,18 @@ is t, hide the part initially and show the button."
(and deep button) (and deep button)
(and high button) (and high button)
(and long button)))) (and long button))))
(content-beg (point))) (content-beg (point))
(part-data (list msg part mime-type nth depth button)))
;; Store the computed mime-type for later use (e.g. by attachment handlers). ;; Store the computed mime-type for later use (e.g. by attachment handlers).
(plist-put part :computed-type mime-type) (plist-put part :computed-type mime-type)
(if show-part (cond
(notmuch-show-insert-bodypart-internal msg part mime-type nth depth button) (show-part
(apply #'notmuch-show-insert-bodypart-internal part-data)
(when (and button (string-match "^image/" mime-type))
(button-put button :notmuch-redisplay-data part-data)))
(t
(when button (when button
(button-put button :notmuch-lazy-part (button-put button :notmuch-lazy-part part-data))))
(list msg part mime-type nth depth button))))
;; Some of the body part handlers leave point somewhere up in the ;; Some of the body part handlers leave point somewhere up in the
;; part, so we make sure that we're down at the end. ;; part, so we make sure that we're down at the end.
(goto-char (point-max)) (goto-char (point-max))

View file

@ -416,7 +416,8 @@ _expand_path (void *ctx, const char *key, const char *val)
notmuch_status_t notmuch_status_t
_notmuch_config_load_from_file (notmuch_database_t *notmuch, _notmuch_config_load_from_file (notmuch_database_t *notmuch,
GKeyFile *file) GKeyFile *file,
char **status_string)
{ {
notmuch_status_t status = NOTMUCH_STATUS_SUCCESS; notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
gchar **groups = NULL, **keys, *val; gchar **groups = NULL, **keys, *val;
@ -435,6 +436,7 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
for (gchar **keys_p = keys; *keys_p; keys_p++) { for (gchar **keys_p = keys; *keys_p; keys_p++) {
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p); char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
char *normalized_val; char *normalized_val;
GError *gerr = NULL;
/* If we opened from a given path, do not overwrite it */ /* If we opened from a given path, do not overwrite it */
if (strcmp (absolute_key, "database.path") == 0 && if (strcmp (absolute_key, "database.path") == 0 &&
@ -442,7 +444,14 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
notmuch->xapian_db) notmuch->xapian_db)
continue; continue;
val = g_key_file_get_string (file, *grp, *keys_p, NULL); val = g_key_file_get_string (file, *grp, *keys_p, &gerr);
if (gerr) {
if (status_string)
IGNORE_RESULT (asprintf (status_string,
"GLib: %s\n",
gerr->message));
g_error_free (gerr);
}
if (! val) { if (! val) {
status = NOTMUCH_STATUS_FILE_ERROR; status = NOTMUCH_STATUS_FILE_ERROR;
goto DONE; goto DONE;

View file

@ -726,7 +726,7 @@ notmuch_status_t
_notmuch_config_load_from_database (notmuch_database_t *db); _notmuch_config_load_from_database (notmuch_database_t *db);
notmuch_status_t notmuch_status_t
_notmuch_config_load_from_file (notmuch_database_t *db, GKeyFile *file); _notmuch_config_load_from_file (notmuch_database_t *db, GKeyFile *file, char **status_string);
notmuch_status_t notmuch_status_t
_notmuch_config_load_defaults (notmuch_database_t *db); _notmuch_config_load_defaults (notmuch_database_t *db);

View file

@ -555,7 +555,7 @@ _finish_open (notmuch_database_t *notmuch,
goto DONE; goto DONE;
if (key_file) if (key_file)
status = _notmuch_config_load_from_file (notmuch, key_file); status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status) if (status)
goto DONE; goto DONE;
@ -961,7 +961,7 @@ notmuch_database_load_config (const char *database_path,
} }
if (key_file) { if (key_file) {
status = _notmuch_config_load_from_file (notmuch, key_file); status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status) if (status)
goto DONE; goto DONE;
} }

View file

@ -563,6 +563,12 @@ main (int argc, char *argv[])
NULL, NULL,
&notmuch, &notmuch,
&status_string); &status_string);
if (status_string) {
fputs (status_string, stderr);
free (status_string);
status_string = NULL;
}
switch (status) { switch (status) {
case NOTMUCH_STATUS_NO_CONFIG: case NOTMUCH_STATUS_NO_CONFIG:
if (! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) { if (! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) {
@ -584,6 +590,8 @@ main (int argc, char *argv[])
case NOTMUCH_STATUS_SUCCESS: case NOTMUCH_STATUS_SUCCESS:
break; break;
default: default:
fputs ("Error: unable to load config file.\n", stderr);
ret = 1;
goto DONE; goto DONE;
} }

View file

@ -3,6 +3,8 @@
test_description='"notmuch config"' test_description='"notmuch config"'
. $(dirname "$0")/test-lib.sh || exit 1 . $(dirname "$0")/test-lib.sh || exit 1
cp notmuch-config initial-config
test_begin_subtest "Get string value" test_begin_subtest "Get string value"
test_expect_equal "$(notmuch config get user.name)" "Notmuch Test Suite" test_expect_equal "$(notmuch config get user.name)" "Notmuch Test Suite"
@ -193,4 +195,17 @@ test_begin_subtest "get built_with.nonexistent prints false"
output=$(notmuch config get built_with.nonexistent) output=$(notmuch config get built_with.nonexistent)
test_expect_equal "$output" "false" test_expect_equal "$output" "false"
test_begin_subtest "Bad utf8 reported as error"
cp initial-config bad-config
printf '[query]\nq3=from:\xff\n' >>bad-config
test_expect_code 1 "notmuch --config=./bad-config config list"
test_begin_subtest "Specific error message about bad utf8"
notmuch --config=./bad-config config list 2>ERRORS
cat <<EOF > EXPECTED
GLib: Key file contains key “q3” with value “from:<3A>” which is not UTF-8
Error: unable to load config file.
EOF
test_expect_equal_file EXPECTED ERRORS
test_done test_done

View file

@ -1 +1 @@
0.38 0.38.1