mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-03 16:14:11 +01:00
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
This commit is contained in:
parent
bc38580cef
commit
1c10d91d8e
5 changed files with 20 additions and 6 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -563,6 +563,12 @@ main (int argc, char *argv[])
|
|||
NULL,
|
||||
¬much,
|
||||
&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)) {
|
||||
|
|
|
@ -201,7 +201,6 @@ 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"
|
||||
test_subtest_known_broken
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue