-
-\f
-
-#include <setjmp.h>
-
-static sigjmp_buf env;
-
-static void
-give_up_callback (int signal UNUSED)
-{
- siglongjmp (env, 1);
-}
-
-static double
-timed_wilcoxon_significance (double w, long int n, double timer)
-{
- double p = SYSMIS;
-
- sigset_t set;
-
- struct sigaction timeout_action;
- struct sigaction old_action;
-
- if (timer <= 0 )
- return LevelOfSignificanceWXMPSR (w, n);
-
- sigemptyset (&set);
-
- timeout_action.sa_mask = set;
- timeout_action.sa_flags = 0;
-
- timeout_action.sa_restorer = 0;
- timeout_action.sa_handler = give_up_callback;
-
- if ( 0 == sigsetjmp (env, 1))
- {
- sigaction (SIGALRM, &timeout_action, &old_action);
- alarm (timer * 60.0);
-
- p = LevelOfSignificanceWXMPSR (w, n);
- }
-
- sigaction (SIGALRM, &old_action, NULL);
-
- return p;
-}