CLI: set NOTMUCH_CONFIG in hooks.

This addresses a bug report / feature request of Uwe Kleine-König. The
assumption is that we always load a config file in the CLI (i.e. we
never pass "" as the config file argument to
notmuch_database_open_with_config).

[1]: id:8baa58c3-7ab9-ec03-1bbd-28aa5be838f2@kleine-koenig.org
This commit is contained in:
David Bremner 2022-06-04 08:11:19 -03:00
parent e167825bca
commit bfcf9a6c10
2 changed files with 7 additions and 4 deletions

View file

@ -27,6 +27,7 @@ int
notmuch_run_hook (notmuch_database_t *notmuch, const char *hook) notmuch_run_hook (notmuch_database_t *notmuch, const char *hook)
{ {
char *hook_path; char *hook_path;
const char *config_path;
int status = 0; int status = 0;
pid_t pid; pid_t pid;
@ -38,6 +39,12 @@ notmuch_run_hook (notmuch_database_t *notmuch, const char *hook)
return 1; return 1;
} }
config_path = notmuch_config_path (notmuch);
if (setenv ("NOTMUCH_CONFIG", config_path, 1)) {
perror ("setenv");
return 1;
}
/* Check access before fork() for speed and simplicity of error handling. */ /* Check access before fork() for speed and simplicity of error handling. */
if (access (hook_path, X_OK) == -1) { if (access (hook_path, X_OK) == -1) {
/* Ignore ENOENT. It's okay not to have a hook, hook dir, or even /* Ignore ENOENT. It's okay not to have a hook, hook dir, or even

View file

@ -215,9 +215,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "NOTMUCH_CONFIG is set" test_begin_subtest "NOTMUCH_CONFIG is set"
if [ "${config}" = "profile" ]; then
test_subtest_known_broken
fi
create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT
NOTMUCH_NEW NOTMUCH_NEW
cat <<EOF > EXPECTED cat <<EOF > EXPECTED
@ -226,7 +223,6 @@ EOF
test_expect_equal_file_nonempty EXPECTED OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "NOTMUCH_CONFIG is set by --config" test_begin_subtest "NOTMUCH_CONFIG is set by --config"
test_subtest_known_broken
create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT
cp "${EXPECTED_CONFIG}" "${EXPECTED_CONFIG}.alternate" cp "${EXPECTED_CONFIG}" "${EXPECTED_CONFIG}.alternate"
notmuch --config "${EXPECTED_CONFIG}.alternate" new notmuch --config "${EXPECTED_CONFIG}.alternate" new