summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/gamin/files/gamin-0.1.7-sigaction.patch')
-rw-r--r--app-admin/gamin/files/gamin-0.1.7-sigaction.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/app-admin/gamin/files/gamin-0.1.7-sigaction.patch b/app-admin/gamin/files/gamin-0.1.7-sigaction.patch
new file mode 100644
index 0000000..3457c3a
--- /dev/null
+++ b/app-admin/gamin/files/gamin-0.1.7-sigaction.patch
@@ -0,0 +1,60 @@
+diff -urN gamin-0.1.7/lib/gam_error.c /gnome/head/cvs/gamin/lib/gam_error.c
+--- gamin-0.1.7/lib/gam_error.c 2005-09-08 09:46:45.000000000 +0200
++++ /gnome/head/cvs/gamin/lib/gam_error.c 2006-06-01 11:59:14.000000000 +0200
+@@ -76,7 +76,7 @@
+ gam_error_init(void)
+ {
+ if (initialized == 0) {
+- signal_handler prev;
++ struct sigaction oldact;
+
+ initialized = 1;
+
+@@ -89,11 +89,12 @@
+ gam_error_handle_signal();
+ }
+
+- prev = signal(SIGUSR2, gam_error_signal);
+- /* if there is already an handler switch back to the original
+- * to avoid disturbing the application behaviour */
+- if ((prev != SIG_IGN) && (prev != SIG_DFL) && (prev != NULL))
+- signal(SIGUSR2, prev);
++ /* if there is already an handler, leave it as is to
++ * avoid disturbing the application's behaviour */
++ if (sigaction (SIGUSR2, NULL, &oldact) == 0) {
++ if (oldact.sa_handler == NULL && oldact.sa_sigaction == NULL)
++ signal(SIGUSR2, gam_error_signal);
++ }
+ }
+ }
+
+diff -urN gamin-0.1.7/libgamin/gam_error.c /gnome/head/cvs/gamin/libgamin/gam_error.c
+--- gamin-0.1.7/libgamin/gam_error.c 2005-10-25 16:16:51.000000000 +0200
++++ /gnome/head/cvs/gamin/libgamin/gam_error.c 2006-06-01 12:00:09.000000000 +0200
+@@ -76,7 +76,7 @@
+ gam_error_init(void)
+ {
+ if (initialized == 0) {
+- signal_handler prev;
++ struct sigaction oldact;
+
+ initialized = 1;
+
+@@ -89,11 +89,12 @@
+ gam_error_handle_signal();
+ }
+
+- prev = signal(SIGUSR2, gam_error_signal);
+- /* if there is already an handler switch back to the original
+- * to avoid disturbing the application behaviour */
+- if ((prev != SIG_IGN) && (prev != SIG_DFL) && (prev != NULL))
+- signal(SIGUSR2, prev);
++ /* if there is already an handler, leave it as is to
++ * avoid disturbing the application's behaviour */
++ if (sigaction (SIGUSR2, NULL, &oldact) == 0) {
++ if (oldact.sa_handler == NULL && oldact.sa_sigaction == NULL)
++ signal(SIGUSR2, gam_error_signal);
++ }
+ }
+ }
+