+ if (secs) {
+ if (sigemptyset(&sigs)) fail("Initialising signal set");
+ if (sigaddset(&sigs,SIGALRM)) fail("Adding SIGALRM to signal set");
+ if (sigprocmask(SIG_BLOCK,&sigs,&oldsigs)) fail("Blocking SIGALRM");
+ memset(&siga,0,sizeof(siga));
+ siga.sa_handler=alrm_handler;
+ if (sigaction(SIGALRM,&siga,NULL)) fail("Installing SIGALRM handler");
+ memset(&itv,0,sizeof(itv));
+ itv.it_value.tv_sec=secs;
+ if (setitimer(ITIMER_REAL,&itv,NULL)) fail("Setting timer");
+ }
+