X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=hooks.c;h=59c5807065fc4ee58974a7eec196c7335bcbb8e3;hp=7348d322791f8eb23ec97e318f53123ba96d0084;hb=HEAD;hpb=f7130468d27c4f37d45e6aa60baacfc3329ccff4 diff --git a/hooks.c b/hooks.c index 7348d322..0cf72e74 100644 --- a/hooks.c +++ b/hooks.c @@ -24,19 +24,27 @@ #include int -notmuch_run_hook (const char *db_path, const char *hook) +notmuch_run_hook (notmuch_database_t *notmuch, const char *hook) { char *hook_path; + const char *config_path; int status = 0; pid_t pid; - hook_path = talloc_asprintf (NULL, "%s/%s/%s/%s", db_path, ".notmuch", - "hooks", hook); + hook_path = talloc_asprintf (notmuch, "%s/%s", + notmuch_config_get (notmuch, NOTMUCH_CONFIG_HOOK_DIR), + hook); if (hook_path == NULL) { fprintf (stderr, "Out of memory\n"); 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 @@ -53,7 +61,7 @@ notmuch_run_hook (const char *db_path, const char *hook) /* Flush any buffered output before forking. */ fflush (stdout); - pid = fork(); + pid = fork (); if (pid == -1) { fprintf (stderr, "Error: %s hook fork failed: %s\n", hook, strerror (errno)); @@ -78,7 +86,7 @@ notmuch_run_hook (const char *db_path, const char *hook) goto DONE; } - if (!WIFEXITED (status) || WEXITSTATUS (status)) { + if (! WIFEXITED (status) || WEXITSTATUS (status)) { if (WIFEXITED (status)) { fprintf (stderr, "Error: %s hook failed with status %d\n", hook, WEXITSTATUS (status));