From d9793e532af4f3eb40d2d4d6abdf2735cac8117b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 12 Apr 2011 11:31:15 +0000 Subject: [PATCH] added edg_wll_gss_set_signal_handler() --- org.glite.lbjp-common.gss/interface/glite_gss.h | 5 +++++ org.glite.lbjp-common.gss/src/glite_gss.c | 28 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/org.glite.lbjp-common.gss/interface/glite_gss.h b/org.glite.lbjp-common.gss/interface/glite_gss.h index 37f719f..5a1e3fc 100644 --- a/org.glite.lbjp-common.gss/interface/glite_gss.h +++ b/org.glite.lbjp-common.gss/interface/glite_gss.h @@ -181,6 +181,11 @@ edg_wll_gss_unread(edg_wll_GssConnection *connection, void *data, size_t len); + +int +edg_wll_gss_set_signal_handler(int signum, + void (*handler_func)(int)); + #ifdef __cplusplus } #endif diff --git a/org.glite.lbjp-common.gss/src/glite_gss.c b/org.glite.lbjp-common.gss/src/glite_gss.c index f77c3c3..db0fdb8 100644 --- a/org.glite.lbjp-common.gss/src/glite_gss.c +++ b/org.glite.lbjp-common.gss/src/glite_gss.c @@ -1551,3 +1551,31 @@ edg_wll_gss_unread(edg_wll_GssConnection *con, void *data, size_t len) return 0; } + + +int +edg_wll_gss_set_signal_handler(int signum, + void (*handler_func)(int)) +{ + int ret; + + ret = globus_module_activate(GLOBUS_COMMON_MODULE); + if (ret != GLOBUS_SUCCESS) { + struct sigaction sa,osa; + + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_handler = handler_func; + ret = sigaction(signum, &sa, &osa); + return ret; + } + ret = globus_callback_space_register_signal_handler(signum, + GLOBUS_TRUE, + (globus_callback_func_t)handler_func, + (void *)signum, + GLOBUS_CALLBACK_GLOBAL_SPACE); + + globus_module_deactivate(GLOBUS_COMMON_MODULE); + + return ret; +} -- 1.8.2.3