version 1.13, 1995/10/26 22:07:00 |
version 1.14, 1996/05/11 11:04:51 |
|
|
ringring = 0; |
ringring = 0; |
(void) sigsuspend(&set); |
(void) sigsuspend(&set); |
|
|
if (ringring) { |
if (!ringring) { |
/* Our alarm went off; timer is not currently running */ |
|
sigaction(SIGALRM, &oact, NULL); |
|
sigprocmask(SIG_SETMASK, &oset, NULL); |
|
(void) setitimer(ITIMER_REAL, &oitv, &itv); |
|
} else { |
|
struct itimerval nulltv; |
struct itimerval nulltv; |
/* |
/* |
* Interrupted by other signal; allow for pending |
* Interrupted by other signal; allow for pending |
|
|
timerclear(&nulltv.it_interval); |
timerclear(&nulltv.it_interval); |
timerclear(&nulltv.it_value); |
timerclear(&nulltv.it_value); |
(void) setitimer(ITIMER_REAL, &nulltv, &itv); |
(void) setitimer(ITIMER_REAL, &nulltv, &itv); |
sigprocmask(SIG_SETMASK, &oset, NULL); |
|
sigaction(SIGALRM, &oact, NULL); |
|
(void) setitimer(ITIMER_REAL, &oitv, NULL); |
|
} |
} |
|
sigprocmask(SIG_SETMASK, &oset, NULL); |
|
sigaction(SIGALRM, &oact, NULL); |
|
(void) setitimer(ITIMER_REAL, &oitv, &itv); |
|
|
if (timerisset(&diff)) |
if (timerisset(&diff)) |
timeradd(&itv.it_value, &diff, &itv.it_value); |
timeradd(&itv.it_value, &diff, &itv.it_value); |