From bfcf9a6c102af9232b6d2e720f919ff1c9b431f8 Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sat, 4 Jun 2022 08:11:19 -0300 Subject: [PATCH] CLI: set NOTMUCH_CONFIG in hooks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- hooks.c | 7 +++++++ test/T400-hooks.sh | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/hooks.c b/hooks.c index ec89b22e..0cf72e74 100644 --- a/hooks.c +++ b/hooks.c @@ -27,6 +27,7 @@ int notmuch_run_hook (notmuch_database_t *notmuch, const char *hook) { char *hook_path; + const char *config_path; int status = 0; pid_t pid; @@ -38,6 +39,12 @@ notmuch_run_hook (notmuch_database_t *notmuch, const char *hook) 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. */ if (access (hook_path, X_OK) == -1) { /* Ignore ENOENT. It's okay not to have a hook, hook dir, or even diff --git a/test/T400-hooks.sh b/test/T400-hooks.sh index 9ceefbad..35bf70c0 100755 --- a/test/T400-hooks.sh +++ b/test/T400-hooks.sh @@ -215,9 +215,6 @@ EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "NOTMUCH_CONFIG is set" - if [ "${config}" = "profile" ]; then - test_subtest_known_broken - fi create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT NOTMUCH_NEW cat < EXPECTED @@ -226,7 +223,6 @@ EOF test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "NOTMUCH_CONFIG is set by --config" - test_subtest_known_broken create_printenv_hook "pre-new" NOTMUCH_CONFIG OUTPUT cp "${EXPECTED_CONFIG}" "${EXPECTED_CONFIG}.alternate" notmuch --config "${EXPECTED_CONFIG}.alternate" new