See ChangeLog entry 2005-11-07 for details.

This commit is contained in:
Kean Johnson
2005-11-08 06:33:30 +00:00
parent f5814bf3ff
commit 5390c7ab05
45 changed files with 3310 additions and 178 deletions

View File

@@ -2238,3 +2238,53 @@ CheckUserAuthorization(void)
}
#endif
}
#ifdef __SCO__
#include <fcntl.h>
static void
lockit (int fd, short what)
{
struct flock lck;
lck.l_whence = 0;
lck.l_start = 0;
lck.l_len = 1;
lck.l_type = what;
(void)fcntl (fd, F_SETLKW, &lck);
}
/* SCO OpenServer 5 lacks pread/pwrite. Emulate them. */
ssize_t
pread (int fd, void *buf, size_t nbytes, off_t offset)
{
off_t saved;
ssize_t ret;
lockit (fd, F_RDLCK);
saved = lseek (fd, 0, SEEK_CUR);
lseek (fd, offset, SEEK_SET);
ret = read (fd, buf, nbytes);
lseek (fd, saved, SEEK_SET);
lockit (fd, F_UNLCK);
return ret;
}
ssize_t
pwrite (int fd, const void *buf, size_t nbytes, off_t offset)
{
off_t saved;
ssize_t ret;
lockit (fd, F_WRLCK);
saved = lseek (fd, 0, SEEK_CUR);
lseek (fd, offset, SEEK_SET);
ret = write (fd, buf, nbytes);
lseek (fd, saved, SEEK_SET);
lockit (fd, F_UNLCK);
return ret;
}
#endif /* __SCO__ */