diff --git a/notmuch.c b/notmuch.c index 68a785e2..c75b0188 100644 --- a/notmuch.c +++ b/notmuch.c @@ -429,11 +429,18 @@ notmuch_command (notmuch_database_t *notmuch, * false on errors. */ static bool -try_external_command (char *argv[]) +try_external_command (const char *config_file_name, char *argv[]) { char *old_argv0 = argv[0]; bool ret = true; + if (config_file_name) { + if (setenv ("NOTMUCH_CONFIG", config_file_name, 1)) { + perror ("setenv"); + exit (1); + } + } + argv[0] = talloc_asprintf (NULL, "notmuch-%s", old_argv0); /* @@ -493,7 +500,7 @@ main (int argc, char *argv[]) /* if command->function is NULL, try external command */ if (! command || ! command->function) { /* This won't return if the external command is found. */ - if (try_external_command (argv + opt_index)) + if (try_external_command (config_file_name, argv + opt_index)) fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n", command_name); ret = EXIT_FAILURE; diff --git a/test/T405-external.sh b/test/T405-external.sh index b121fc72..0e1d9646 100755 --- a/test/T405-external.sh +++ b/test/T405-external.sh @@ -44,7 +44,6 @@ EOF test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "NOTMUCH_CONFIG is set by --config" -test_subtest_known_broken cp "${NOTMUCH_CONFIG}" "${NOTMUCH_CONFIG}.alternate" cat < EXPECTED ${NOTMUCH_CONFIG}.alternate