On Sun, Oct 24, 2004 at 12:24:50PM -0400, Greg Hudson wrote:
> Look up the documentation for LockFileEx(); you'll see there is a flag
> field for a shared vs. exclusive lock. The idea is that many people can
> get shared locks on the same file at the same time, but nobody can get
> an exclusive lock on the file until no one else has a lock of any sort.
>
> If win98 does not have LockFileEx(), then it sounds like APR silently
> maps shared locks (or "read locks") to exclusive locks, meaning a
> repository can only be opened once at a time, meaning any operation
> which opens a repository twice in the same process won't work. Since
> "checkout" is one of those operations (due to some sloppiness in
> libsvn_client), that renders svn not terribly useful.
Correct from file_io/win32/flock.c:
if (apr_os_level >= APR_WIN_NT) {
/* Syntax is correct, len is passed for LengthLow and LengthHigh*/
OVERLAPPED offset;
memset (&offset, 0, sizeof(offset));
if (!LockFileEx(thefile->filehand, flags, 0, len, len, &offset))
return apr_get_os_error();
}
else {
if (!LockFile(thefile->filehand, 0, 0, len, 0))
return apr_get_os_error();
}
I really don't think this is worth trying to fix. Though I do agree
that the APR behavior is wrong. If you set flags that aren't supported
by the platform you should get APR_ENOTIMPL.
But in order for us to work around it would require us to implement our
own locking scheme. Don't think it's worth it for a dying platform that
we already didn't technically support and that is about to be end of
lifed anyway.
--
Ben Reser <ben@reser.org>
http://ben.reser.org
"Conscience is the inner voice which warns us somebody may be looking."
- H.L. Mencken
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Oct 25 06:58:39 2004