diff --git a/lisp/runprog.c b/lisp/runprog.c
index 183fa28a271c64b4f1041b08d2a4d4a15dbf2503..e716d7998ba4aee8f38f07d86e0c8813cd72c242 100644
--- a/lisp/runprog.c
+++ b/lisp/runprog.c
@@ -1,42 +1,39 @@
 /*
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/runprog.c,v 1.5 2004/07/08 18:00:26 rtoy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/runprog.c,v 1.6 2005/09/07 07:05:23 cshapiro Exp $
  *
  * Support for run-program.
  *
  */
 
-#include <stdlib.h>
-#include <sys/file.h>
-#include <sys/fcntl.h>
 #include <sys/ioctl.h>
-#if defined(SVR4) || defined(__linux__)
-#include <unistd.h>
-#endif
-#if defined(SOLARIS)
+#include <errno.h>
 #include <fcntl.h>
-#endif
+#include <signal.h>
+#include <stdlib.h>
+#include <termios.h>
+#include <unistd.h>
 
-int spawn(char *program, char *argv[], char *envp[], char *pty_name,
-	  int stdin, int stdout, int stderr)
+pid_t spawn(char *program, char *argv[], char *envp[], char *pty_name,
+	    int stdin, int stdout, int stderr)
 {
-    int pid = fork();
+    pid_t pid;
+    sigset_t set;
     int fd;
 
+    pid = fork();
     if (pid != 0)
 	return pid;
 
     /* Put us in our own process group. */
-#if defined(hpux)
     setsid();
-#elif defined(SVR4) || defined(__linux__)
-    setpgrp();
-#else
-    setpgrp(0, getpid());
-#endif
+
+    /* Unblock all signals. */
+    sigemptyset(&set);
+    sigprocmask(SIG_SETMASK, &set, NULL);
 
     /* If we are supposed to be part of some other pty, go for it. */
     if (pty_name) {
-#if !defined(hpux) && !defined(SVR4)
+#ifdef TIOCNOTTY
 	fd = open("/dev/tty", O_RDWR, 0);
 	if (fd >= 0) {
 	    ioctl(fd, TIOCNOTTY, 0);
@@ -51,7 +48,7 @@ int spawn(char *program, char *argv[], char *envp[], char *pty_name,
 	close(fd);
     }
 
-    /* Set up stdin, stdout, and stderr */
+    /* Set up stdin, stdout, and stderr. */
     if (stdin >= 0)
 	dup2(stdin, 0);
     if (stdout >= 0)
@@ -60,13 +57,8 @@ int spawn(char *program, char *argv[], char *envp[], char *pty_name,
 	dup2(stderr, 2);
 
     /* Close all other fds. */
-#ifdef SVR4
-    for (fd = sysconf(_SC_OPEN_MAX)-1; fd >= 3; fd--)
+    for (fd = sysconf(_SC_OPEN_MAX) - 1; fd >= 3; fd--)
 	close(fd);
-#else
-    for (fd = getdtablesize()-1; fd >= 3; fd--)
-	close(fd);
-#endif
 
     /* Exec the program. */
     execve(program, argv, envp);