Index: src/main.cc
===================================================================
--- src/main.cc	(revision 68ff3de6e19eb721d9358d17fa972de80caa1eae)
+++ src/main.cc	(revision 1f68d5d103ce802b81fc6891deddf85f956a0455)
@@ -160,8 +160,5 @@
 #define SIGPARMS int sig __attribute__(( unused )), siginfo_t * sfp __attribute__(( unused )), ucontext_t * cxt __attribute__(( unused ))
 
-static void Signal( int sig, void (* handler)(SIGPARMS), int flags ) {
-	struct sigaction act;
-
-	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
+static void _Signal(struct sigaction & act, int sig, int flags ) {
 	act.sa_flags = flags;
 
@@ -170,4 +167,16 @@
 	    _exit( EXIT_FAILURE );
 	} // if
+}
+
+static void Signal( int sig, void (* handler)(SIGPARMS), int flags ) {
+	struct sigaction act;
+	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
+	_Signal(act, sig, flags);
+} // Signal
+
+static void Signal( int sig, void (* handler)(int), int flags ) {
+	struct sigaction act;
+	act.sa_handler = handler;
+	_Signal(act, sig, flags);
 } // Signal
 
@@ -202,5 +211,5 @@
 static void sigAbortHandler( SIGPARMS ) {
 	backtrace( 6 );										// skip first 6 stack frames
-	Signal( SIGABRT, (void (*)(SIGPARMS))SIG_DFL, SA_SIGINFO );	// reset default signal handler
+	Signal( SIGABRT, SIG_DFL, SA_SIGINFO );	// reset default signal handler
 	raise( SIGABRT );									// reraise SIGABRT
 } // sigAbortHandler
