From f1e86c99287b3f72a1cc025e39646a4df2fb533a Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Thu, 4 Sep 1997 02:42:37 +0000 Subject: [PATCH] some nextstep support git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3378 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/des/rnd_keys.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/des/rnd_keys.c b/lib/des/rnd_keys.c index c78d263bc..f74dc0f36 100644 --- a/lib/des/rnd_keys.c +++ b/lib/des/rnd_keys.c @@ -57,6 +57,10 @@ RCSID("$Id$"); #include #endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif + #ifdef HAVE_UNISTD_H #include #endif @@ -226,7 +230,11 @@ void des_rand_data(unsigned char *data, int size) { struct itimerval tv, otv; +#ifdef HAVE_SIGACTION struct sigaction sa, osa; +#else + RETSIGTYPE (*osa)(int); +#endif int i, j; pid_t pid; char *rnd_devices[] = {"/dev/random", @@ -253,11 +261,15 @@ des_rand_data(unsigned char *data, int size) gsize = size; igdata = 0; +#ifdef HAVE_SIGACTION /* Setup signal handler */ sa.sa_handler = sigALRM; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); sigaction(SIGALRM, &sa, &osa); +#else + osa = signal(SIGALRM, sigALRM); +#endif /* Start timer */ tv.it_value.tv_sec = 0; @@ -287,7 +299,11 @@ des_rand_data(unsigned char *data, int size) kill(pid, SIGKILL); waitpid(pid, NULL, 0); #endif +#ifdef HAVE_SIGACTION sigaction(SIGALRM, &osa, 0); +#else + signal(SIGALRM, osa < 0 ? SIG_DFL : osa); +#endif } #else void