--- src/lib/Dispatch/dispatcher.c.orig	Wed Aug 25 07:59:45 1993
+++ src/lib/Dispatch/dispatcher.c	Sun Sep  5 14:05:04 1999
@@ -631,16 +631,23 @@
 
     if (!_cqueue->isEmpty()) {
 #ifdef SV_INTERRUPT                   /* BSD-style */
+#ifdef __FreeBSD__
+	sv.sv_handler = (sig_t)fxSIGVECHANDLER(&Dispatcher::sigCLD);
+#else
 	sv.sv_handler = fxSIGVECHANDLER(&Dispatcher::sigCLD);
+#endif
 	sv.sv_flags = SV_INTERRUPT;
-	sigvec(SIGCLD, &sv, &osv);
+	/*sigvec(SIGCLD, &sv, &osv);*/
+	sigvec(SIGCHLD, &sv, &osv);
 #else
 #ifdef SA_NOCLDSTOP                   /* POSIX */
 	sa.sa_handler = fxSIGACTIONHANDLER(&Dispatcher::sigCLD);
 	sa.sa_flags = SA_INTERRUPT;
-	sigaction(SIGCLD, &sa, &osa);
+	/*sigaction(SIGCLD, &sa, &osa);*/
+	sigaction(SIGCHLD, &sa, &osa);
 #else                                 /* System V-style */
-	osig = (void (*)())signal(SIGCLD, fxSIGHANDLER(&Dispatcher::sigCLD));
+	/*osig = (void (*)())signal(SIGCLD, fxSIGHANDLER(&Dispatcher::sigCLD));*/
+	osig = (void (*)())signal(SIGCHLD, fxSIGHANDLER(&Dispatcher::sigCLD));
 #endif
 #endif
     }
@@ -661,12 +668,15 @@
     } while (nfound < 0 && !handleError());
     if (!_cqueue->isEmpty()) {
 #ifdef SV_INTERRUPT                   /* BSD-style */
-	sigvec(SIGCLD, &osv, (struct sigvec*) 0);
+	/*sigvec(SIGCLD, &osv, (struct sigvec*) 0);*/
+	sigvec(SIGCHLD, &osv, (struct sigvec*) 0);
 #else
 #ifdef SA_NOCLDSTOP                   /* POSIX */
-	sigaction(SIGCLD, &osa, (struct sigaction*) 0);
+	/*sigaction(SIGCLD, &osa, (struct sigaction*) 0);*/
+	sigaction(SIGCHLD, &osa, (struct sigaction*) 0);
 #else                                 /* System V-style */
-	(void) signal(SIGCLD, fxSIGHANDLER(osig));
+	/*(void) signal(SIGCLD, fxSIGHANDLER(osig));*/
+	(void) signal(SIGCHLD, fxSIGHANDLER(osig));
 #endif
 #endif
     }
