There's no need for killpg(). We can use kill() instead.
[mmh] / uip / slocal.c
index 7f27226..9865839 100644 (file)
@@ -1096,7 +1096,7 @@ usr_folder(int fd, char *string)
        vec[1] = folder;
        vec[2] = NULL;
 
-       return usr_pipe(fd, "rcvstore", rcvstoreproc, vec, 1);
+       return usr_pipe(fd, "rcvstore", "rcvstore", vec, 1);
 }
 
 /*
@@ -1106,7 +1106,7 @@ static int
 usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
 {
        pid_t child_id;
-       int bytes, seconds, status;
+       int bytes, seconds, status, n;
        struct stat st;
        char *path;
 
@@ -1133,7 +1133,9 @@ usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
                if (fd != 3) {
                        dup2(fd, 3);
                }
-               closefds(4);
+               for (n=4; n<OPEN_MAX; n++) {
+                       close(n);
+               }
 
 #ifdef TIOCNOTTY
                if ((fd = open("/dev/tty", O_RDWR)) != -1) {
@@ -1162,7 +1164,7 @@ usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
                        ** Ruthlessly kill the child and anything
                        ** else in its process group.
                        */
-                       KILLPG(child_id, SIGKILL);
+                       kill(-child_id, SIGKILL);
                        if (verbose)
                                verbose_printf(", timed-out; terminated\n");
                        return -1;