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