particular) running on the same game state. fairland does not use
ef_open() at this time, and thus ignores the lock.
ef_open(int type, int how)
{
struct empfile *ep;
+ struct flock lock;
int oflags, fd, fsiz, size;
if (ef_check(type) < 0)
return 0;
}
+ lock.l_type = how & EFF_RDONLY ? F_RDLCK : F_WRLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = lock.l_len = 0;
+ if (fcntl(fd, F_SETLK, &lock) == -1) {
+ logerror("Can't lock %s (%s)", ep->file, strerror(errno));
+ return 0;
+ }
+
/* get file size */
fsiz = fsize(fd);
if (fsiz % ep->size) {