aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2023-09-23 08:43:44 -0300
committerDavid Bremner <david@tethera.net>2023-09-23 08:43:44 -0300
commitd4e9b9072c44dcc6faf112bf7b984a268ad22696 (patch)
treeeb5f7c7aa4e3c303d2d9da91723a33394d0cce61
parente392daa729330e921229e475d00282c1cf926f5d (diff)
parent1c10d91d8e4a3e5bc76ca4c6b9939f3759e6ef5e (diff)
Merge branch 'release'
-rw-r--r--NEWS3
-rw-r--r--bindings/python/notmuch/version.py2
-rw-r--r--debian/changelog6
-rw-r--r--lib/config.cc13
-rw-r--r--lib/notmuch-private.h2
-rw-r--r--lib/open.cc4
-rw-r--r--notmuch.c8
-rwxr-xr-xtest/T030-config.sh15
-rw-r--r--version.txt2
9 files changed, 48 insertions, 7 deletions
diff --git a/NEWS b/NEWS
index 00f4fe47..34bdfca2 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+Notmuch 0.38.1 (UNRELEASED)
+===========================
+
Notmuch 0.38 (2023-09-12)
=========================
diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py
index c847a1a3..af97e6d1 100644
--- a/bindings/python/notmuch/version.py
+++ b/bindings/python/notmuch/version.py
@@ -1,3 +1,3 @@
# this file should be kept in sync with ../../../version
-__VERSION__ = '0.38'
+__VERSION__ = '0.38.1~pre0'
SOVERSION = '5'
diff --git a/debian/changelog b/debian/changelog
index c2c2f6ab..eec70b05 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+notmuch (0.38.1~pre0-1) UNRELEASED; urgency=medium
+
+ * New upstream release release candidate
+
+ -- David Bremner <bremner@debian.org> Sat, 23 Sep 2023 08:15:19 -0300
+
notmuch (0.38-2) unstable; urgency=medium
* Restrict autopkgtests to amd64 and aarch64. There are failures in
diff --git a/lib/config.cc b/lib/config.cc
index 2323860d..6cd15fab 100644
--- a/lib/config.cc
+++ b/lib/config.cc
@@ -416,7 +416,8 @@ _expand_path (void *ctx, const char *key, const char *val)
notmuch_status_t
_notmuch_config_load_from_file (notmuch_database_t *notmuch,
- GKeyFile *file)
+ GKeyFile *file,
+ char **status_string)
{
notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
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++) {
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
char *normalized_val;
+ GError *gerr = NULL;
/* If we opened from a given path, do not overwrite it */
if (strcmp (absolute_key, "database.path") == 0 &&
@@ -442,7 +444,14 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
notmuch->xapian_db)
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) {
status = NOTMUCH_STATUS_FILE_ERROR;
goto DONE;
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index c19ee8e2..367e23e6 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -726,7 +726,7 @@ notmuch_status_t
_notmuch_config_load_from_database (notmuch_database_t *db);
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_config_load_defaults (notmuch_database_t *db);
diff --git a/lib/open.cc b/lib/open.cc
index 54d1faf3..005872dc 100644
--- a/lib/open.cc
+++ b/lib/open.cc
@@ -555,7 +555,7 @@ _finish_open (notmuch_database_t *notmuch,
goto DONE;
if (key_file)
- status = _notmuch_config_load_from_file (notmuch, key_file);
+ status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status)
goto DONE;
@@ -961,7 +961,7 @@ notmuch_database_load_config (const char *database_path,
}
if (key_file) {
- status = _notmuch_config_load_from_file (notmuch, key_file);
+ status = _notmuch_config_load_from_file (notmuch, key_file, &message);
if (status)
goto DONE;
}
diff --git a/notmuch.c b/notmuch.c
index 37286b8f..814b9e42 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -563,6 +563,12 @@ main (int argc, char *argv[])
NULL,
&notmuch,
&status_string);
+ if (status_string) {
+ fputs (status_string, stderr);
+ free (status_string);
+ status_string = NULL;
+ }
+
switch (status) {
case NOTMUCH_STATUS_NO_CONFIG:
if (! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) {
@@ -584,6 +590,8 @@ main (int argc, char *argv[])
case NOTMUCH_STATUS_SUCCESS:
break;
default:
+ fputs ("Error: unable to load config file.\n", stderr);
+ ret = 1;
goto DONE;
}
diff --git a/test/T030-config.sh b/test/T030-config.sh
index ea0b4012..621e0b69 100755
--- a/test/T030-config.sh
+++ b/test/T030-config.sh
@@ -3,6 +3,8 @@
test_description='"notmuch config"'
. $(dirname "$0")/test-lib.sh || exit 1
+cp notmuch-config initial-config
+
test_begin_subtest "Get string value"
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)
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:�” which is not UTF-8
+Error: unable to load config file.
+EOF
+test_expect_equal_file EXPECTED ERRORS
+
test_done
diff --git a/version.txt b/version.txt
index 1cbc8125..cf30d88f 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-0.38
+0.38.1~pre0