/* usleep.c - use it if you have no usleep on your system */
#include <sys/time.h>
#include <signal.h>
void handle_sigalrm(nr)
int nr;
{
/* Do nothing! */
}
usleep(useconds)
unsigned useconds;
{
struct itimerval timer_value, old_timer_value;
void (*old_sigval)();
#ifdef DEMONLORD
/* If we have trouble with an "alarm clock" crashing pmf: */
signal(SIGALRM, SIG_IGN);
#endif
getitimer(ITIMER_REAL, &timer_value);
timerclear(&timer_value.it_value);
timerclear(&timer_value.it_interval);
timer_value.it_interval.tv_sec = useconds / 1000000;
timer_value.it_interval.tv_usec = useconds % 1000000;
timer_value.it_value.tv_sec = useconds / 1000000;
timer_value.it_value.tv_usec = useconds % 1000000;
old_sigval = signal(SIGALRM, handle_sigalrm);
if (setitimer(ITIMER_REAL, &timer_value, &old_timer_value) == -1)
fatal("The call to setitimer failed.");
pause();
setitimer(ITIMER_REAL, &old_timer_value, 0);
signal(SIGALRM, old_sigval);
} /* usleep */
syntax highlighted by Code2HTML, v. 0.9.1