]> diplodocus.org Git - nmh/blobdiff - sbr/ext_hook.c
readline(3) wrapper: Move free(3) of line to where it's reachable.
[nmh] / sbr / ext_hook.c
index 26f2c1c08d6b745fec482a9bf9d9bdc04b0c4fdf..befbd94b48c2dbd2ba30ef631a70322f8893a7b3 100644 (file)
@@ -22,13 +22,13 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
 
     static  int        did_message = 0;        /* set if we've already output a message */
 
 
     static  int        did_message = 0;        /* set if we've already output a message */
 
-    if ((hook = context_find(hook_name)) == (char *)0)
+    if ((hook = context_find(hook_name)) == NULL)
        return (OK);
 
     switch (pid = fork()) {
     case -1:
        status = NOTOK;
        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:
        break;
 
     case 0:
@@ -37,6 +37,7 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
        vec[vecp++] = message_file_name_2;
        vec[vecp++] = NULL;
        execvp(program, vec);
        vec[vecp++] = message_file_name_2;
        vec[vecp++] = NULL;
        execvp(program, vec);
+       advise(program, "Unable to execute");
        _exit(-1);
        /* NOTREACHED */
 
        _exit(-1);
        /* NOTREACHED */
 
@@ -47,17 +48,18 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
 
     if (status != OK) {
        if (did_message == 0) {
 
     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);
-       
+           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;
        }
 
        return (NOTOK);
            did_message = 1;
        }
 
        return (NOTOK);
-    }
-
-    else
+    } else
        return (OK);
 }
        return (OK);
 }