2 ** Run a program that hooks into some other system. The first argument is
3 ** name of the hook to use, the second is the full path name of a mail message.
4 ** The third argument is also the full path name of a mail message, or a NULL
5 ** pointer if it isn't needed. Look in the context for an error message if
6 ** something goes wrong; there is a built-in message in case one isn't
7 ** specified. Only produce the error message once.
13 ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
15 char *hook; /* hook program from context */
16 pid_t pid; /* ID of child process */
17 int status; /* exit or other child process status */
18 char *vec[4]; /* argument vector for child process */
20 static int did_message = 0; /* set if we've already output a message */
22 if ((hook = context_find(hook_name)) == (char *)0)
25 switch (pid = vfork()) {
28 advise(NULL, "external database may be out-of-date.");
32 vec[0] = r1bindex(hook, '/');
33 vec[1] = message_file_name_1;
34 vec[2] = message_file_name_2;
41 status = pidwait(pid, -1);
46 if (did_message == 0) {
47 if ((hook = context_find("msg-hook")) != (char *)0)
50 advise(NULL, "external hook (%s) did not work properly.", hook);