diff options
| author | David Bremner <david@tethera.net> | 2021-12-25 09:33:05 -0400 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2022-01-15 15:59:39 -0400 |
| commit | fad2e7540bf9309bfb335650ded753e9ed085eff (patch) | |
| tree | fe2526c42d0a11dc5a336de501e23a991da9c31f | |
| parent | 64212c7b91cdb7e65a2a28f994f8d060a50ae78c (diff) | |
lib/open: no default mail root in split configurations
If we know the configuration is split, but there is no mail root
defined, this indicates a (lack of) configuration error. Currently
this can only arise in XDG configurations.
| -rw-r--r-- | bindings/python-cffi/notmuch2/_build.py | 1 | ||||
| -rw-r--r-- | lib/config.cc | 6 | ||||
| -rw-r--r-- | lib/database.cc | 2 | ||||
| -rw-r--r-- | lib/notmuch.h | 4 | ||||
| -rwxr-xr-x | test/T590-libconfig.sh | 1 |
5 files changed, 12 insertions, 2 deletions
diff --git a/bindings/python-cffi/notmuch2/_build.py b/bindings/python-cffi/notmuch2/_build.py index 45eb20c0..a55b484f 100644 --- a/bindings/python-cffi/notmuch2/_build.py +++ b/bindings/python-cffi/notmuch2/_build.py @@ -54,6 +54,7 @@ ffibuilder.cdef( NOTMUCH_STATUS_NO_DATABASE, NOTMUCH_STATUS_DATABASE_EXISTS, NOTMUCH_STATUS_BAD_QUERY_SYNTAX, + NOTMUCH_STATUS_NO_MAIL_ROOT, NOTMUCH_STATUS_LAST_STATUS } notmuch_status_t; typedef enum { diff --git a/lib/config.cc b/lib/config.cc index 8f6ef110..f61eb636 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -657,6 +657,7 @@ notmuch_status_t _notmuch_config_load_defaults (notmuch_database_t *notmuch) { notmuch_config_key_t key; + notmuch_status_t status = NOTMUCH_STATUS_SUCCESS; if (notmuch->config == NULL) notmuch->config = _notmuch_string_map_create (notmuch); @@ -669,11 +670,14 @@ _notmuch_config_load_defaults (notmuch_database_t *notmuch) val = _notmuch_string_map_get (notmuch->config, key_string); if (! val) { + if (key == NOTMUCH_CONFIG_MAIL_ROOT && (notmuch->params & NOTMUCH_PARAM_SPLIT)) + status = NOTMUCH_STATUS_NO_MAIL_ROOT; + _notmuch_string_map_set (notmuch->config, key_string, _notmuch_config_default (notmuch, key)); } } - return NOTMUCH_STATUS_SUCCESS; + return status; } const char * diff --git a/lib/database.cc b/lib/database.cc index 6ef56d56..0effe978 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -311,6 +311,8 @@ notmuch_status_to_string (notmuch_status_t status) return "Database exists, not recreated"; case NOTMUCH_STATUS_BAD_QUERY_SYNTAX: return "Syntax error in query"; + case NOTMUCH_STATUS_NO_MAIL_ROOT: + return "No mail root found"; default: case NOTMUCH_STATUS_LAST_STATUS: return "Unknown error status value"; diff --git a/lib/notmuch.h b/lib/notmuch.h index 1b2bdf3f..fef98b4b 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -225,6 +225,10 @@ typedef enum { */ NOTMUCH_STATUS_BAD_QUERY_SYNTAX, /** + * No mail root could be deduced from parameters and environment + */ + NOTMUCH_STATUS_NO_MAIL_ROOT, + /** * Not an actual status value. Just a way to find out how many * valid status values there are. */ diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index 9cc79e8c..0b5291ab 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -1022,7 +1022,6 @@ notmuch_dir_sanitize < OUTPUT > OUTPUT.clean test_expect_equal_file EXPECTED.common OUTPUT.clean test_begin_subtest "open/error: config=empty with no mail root in db (xdg)" -test_subtest_known_broken old_NOTMUCH_CONFIG=${NOTMUCH_CONFIG} unset NOTMUCH_CONFIG backup_database |
