+ al = alarm(0);
+ if (al && al < LOCK_TIMEOUT)
+ d = al;
+ else
+ d = LOCK_TIMEOUT;
+ alarm(d);
+
+ /* --- Set up the return context for the signal handler --- */
+
+ if (setjmp(jmp)) {
+ sigprocmask(SIG_SETMASK, &oss, 0);
+ errno = EINTR;
+ e = -1;
+ goto done;
+ }
+
+ /* --- Unblock the signal and we're ready --- */
+
+ if (sigprocmask(SIG_SETMASK, &oss, 0)) {
+ alarm(al);
+ e = -1;
+ goto done;