Index: lib/direct/signals.c
===================================================================
--- lib/direct/signals.c.orig	2005-12-23 04:47:58.000000000 +0200
+++ lib/direct/signals.c	2006-10-16 12:25:57.000000000 +0300
@@ -310,7 +310,11 @@ show_any( const siginfo_t *info )
 }
 
 static void
+#ifdef SA_SIGINFO
 signal_handler( int num, siginfo_t *info, void *foo )
+#else
+signal_handler( int num )
+#endif
 {
      DirectLink *l, *n;
      void       *addr   = NULL;
@@ -320,6 +324,7 @@ signal_handler( int num, siginfo_t *info
      direct_log_printf( NULL, "(!) [%5d: %4lld.%03lld] --> Caught signal %d",
                         pid, millis/1000, millis%1000, num );
 
+#ifdef SA_SIGINFO
      if (info && info > (siginfo_t*) 0x100) {
           bool shown = false;
 
@@ -357,6 +362,7 @@ signal_handler( int num, siginfo_t *info
                direct_log_printf( NULL, " (unknown origin) <--\n" );
      }
      else
+#endif
           direct_log_printf( NULL, ", no siginfo available <--\n" );
 
      direct_trace_print_stacks();
@@ -418,8 +424,13 @@ install_handlers()
                struct sigaction action;
                int              signum = sigs_to_handle[i];
 
+#ifdef SA_SIGINFO
                action.sa_sigaction = signal_handler;
                action.sa_flags     = SA_RESTART | SA_SIGINFO;
+#else
+               action.sa_handler   = signal_handler;
+               action.sa_flags     = SA_RESTART;
+#endif
 
                if (signum != SIGSEGV)
                     action.sa_flags |= SA_RESETHAND;

