diff options
| author | David Bremner <david@tethera.net> | 2023-09-15 09:50:04 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2023-09-23 08:34:48 -0300 |
| commit | 1c10d91d8e4a3e5bc76ca4c6b9939f3759e6ef5e (patch) | |
| tree | 1557dbddd672b2879f0c52ce6c4eef35538886b0 /lib | |
| parent | bc38580cef3316254b1ffb15b4711b541c6f9bb3 (diff) | |
Pass error message from GLib ini parser to CLI
The function _notmuch_config_load_from_file is only called in two
places in open.cc. Update internal API to match the idiom in open.cc.
Adding a newline is needed for consistency with other status strings.
Based in part on a patch [1] from Eric Blake.
[1]: id:20230906153402.101471-1-eblake@redhat.com
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/config.cc | 13 | ||||
| -rw-r--r-- | lib/notmuch-private.h | 2 | ||||
| -rw-r--r-- | lib/open.cc | 4 |
3 files changed, 14 insertions, 5 deletions
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; } |
