+#else BSD4_2 || USG
+ register int fd;
+ fd = open(file, 0);
+ if (fd >= 0) {
+ int upid, ret;
+ ret = read(fd, &upid, sizeof upid);
+ close(fd);
+ if (ret == sizeof upid && (kill(upid, 0) == 0
+ || errno != ESRCH))
+ return FAIL; /* process is still running */
+ }
+#endif BSD4_2 || USG
+ assert("DEAD LOCK", file, errno);
+ logent(file, "DEAD LOCK");
+ (void) unlink(file);
+ sleep(5); /* avoid a possible race */
+ ASSERT(i++ < 5, "CAN'T GET LOCKFILE", tempfile, errno);