Fix building on systems where SA_SIGINFO isn't available (ticket #4)
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 4 Nov 2008 08:28:20 +0000 (10:28 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 4 Nov 2008 08:28:20 +0000 (10:28 +0200)
- patch from Adam Tkac

rpmio/rpmsq.c
rpmio/rpmsq.h

index 45c9a60..d6d77f1 100644 (file)
@@ -152,7 +152,7 @@ static sigset_t rpmsqCaught;
 
 static struct rpmsig_s {
     int signum;
-    void (*handler) (int signum, void * info, void * context);
+    rpmsqAction_t handler;
     int active;
     struct sigaction oact;
 } rpmsigTbl[] = {
@@ -254,7 +254,11 @@ int rpmsqEnable(int signum, rpmsqAction_t handler)
                    continue;
 
                (void) sigemptyset (&sa.sa_mask);
+#ifdef SA_SIGINFO
                sa.sa_flags = SA_SIGINFO;
+#else
+               sa.sa_flags = 0;
+#endif
                sa.sa_sigaction = (void*)(handler != NULL ? handler : tbl->handler);
                if (sigaction(tbl->signum, &sa, &tbl->oact) < 0) {
                    SUB_REF(tbl);
index a78403b..0b34e03 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include <rpm/rpmsw.h>
+#include <signal.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -26,7 +27,11 @@ typedef struct rpmsqElem * rpmsq;
  * @param info         (siginfo_t) signal info
  * @param context      signal context
  */
+#ifdef SA_SIGINFO
 typedef void (*rpmsqAction_t) (int signum, void * info, void * context);
+#else
+typedef void (*rpmsqAction_t) (int signum);
+#endif
 
 extern int _rpmsq_debug;