static int did_message = 0; /* set if we've already output a message */
- if ((hook = context_find(hook_name)) == (char *)0)
- return (OK);
+ if ((hook = context_find(hook_name)) == NULL)
+ return OK;
switch (pid = fork()) {
case -1:
status = NOTOK;
- advise(NULL, "external database may be out-of-date.");
+ inform("external database may be out-of-date.");
break;
case 0:
vec[vecp++] = message_file_name_2;
vec[vecp++] = NULL;
execvp(program, vec);
- _exit(-1);
+ advise(program, "Unable to execute");
+ _exit(1);
/* NOTREACHED */
default:
break;
}
- if (status != OK) {
- if (did_message == 0) {
- if ((hook = context_find("msg-hook")) != (char *)0)
- advise(NULL, hook);
- else
- advise(NULL, "external hook (%s) did not work properly.", hook);
-
- did_message = 1;
- }
-
- return (NOTOK);
+ if (status == OK)
+ return OK;
+
+ if (did_message == 0) {
+ char *msghook;
+ if ((msghook = context_find("msg-hook")) != NULL)
+ inform("%s", msghook);
+ else {
+ char errbuf[BUFSIZ];
+ snprintf(errbuf, sizeof(errbuf), "external hook \"%s\"", hook);
+ pidstatus(status, stderr, errbuf);
+ }
+ did_message = 1;
}
- else
- return (OK);
+ return NOTOK;
}