]> diplodocus.org Git - nmh/blobdiff - sbr/ext_hook.c
Replace use of awk with sed in test-anno because it failed
[nmh] / sbr / ext_hook.c
index 506457d210b45b8c4c3d01bb6b601bbbac3961ee..26f2c1c08d6b745fec482a9bf9d9bdc04b0c4fdf 100644 (file)
@@ -16,25 +16,27 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2)
     char       *hook;                  /* hook program from context */
     pid_t      pid;                    /* ID of child process */
     int                status;                 /* exit or other child process status */
     char       *hook;                  /* hook program from context */
     pid_t      pid;                    /* ID of child process */
     int                status;                 /* exit or other child process status */
-    char       *vec[4];                /* argument vector for child process */
+    char       **vec;                  /* argument vector for child process */
+    int                vecp;                   /* Vector index */
+    char       *program;               /* Name of program to execute */
 
     static  int        did_message = 0;        /* set if we've already output a message */
 
     if ((hook = context_find(hook_name)) == (char *)0)
        return (OK);
 
 
     static  int        did_message = 0;        /* set if we've already output a message */
 
     if ((hook = context_find(hook_name)) == (char *)0)
        return (OK);
 
-    switch (pid = m_vfork()) {
+    switch (pid = fork()) {
     case -1:
        status = NOTOK;
        advise(NULL, "external database may be out-of-date.");
        break;
 
     case 0:
     case -1:
        status = NOTOK;
        advise(NULL, "external database may be out-of-date.");
        break;
 
     case 0:
-       vec[0] = r1bindex(hook, '/');
-       vec[1] = message_file_name_1;
-       vec[2] = message_file_name_2;
-       vec[3] = (char *)0;
-       execvp(hook, vec);
+        vec = argsplit(hook, &program, &vecp);
+       vec[vecp++] = message_file_name_1;
+       vec[vecp++] = message_file_name_2;
+       vec[vecp++] = NULL;
+       execvp(program, vec);
        _exit(-1);
        /* NOTREACHED */
 
        _exit(-1);
        /* NOTREACHED */