Lines 290-295
Link Here
|
290 |
{ |
290 |
{ |
291 |
flags &= ~O_EXLOCK; |
291 |
flags &= ~O_EXLOCK; |
292 |
flags |= O_SHLOCK; |
292 |
flags |= O_SHLOCK; |
|
|
293 |
} |
294 |
else |
295 |
{ |
296 |
/* Needed flags to allow opening a webdav file */ |
297 |
flags &= ~( O_EXLOCK | O_SHLOCK ); |
293 |
} |
298 |
} |
294 |
} |
299 |
} |
295 |
|
300 |
|
Lines 689-695
Link Here
|
689 |
aflock.l_type = 0; |
694 |
aflock.l_type = 0; |
690 |
|
695 |
|
691 |
/* lock the file if flock.l_type is set */ |
696 |
/* lock the file if flock.l_type is set */ |
|
|
697 |
#ifdef MACOSX |
698 |
bLocked = ( F_WRLCK != aflock.l_type ); |
699 |
if (!bLocked) |
700 |
{ |
701 |
/* Mac OSX returns ENOTSUP for webdav drives. We should try read lock */ |
702 |
if ( 0 == flock( fd, LOCK_EX | LOCK_NB ) || errno == ENOTSUP ) |
703 |
bLocked = ( errno != ENOTSUP ) || ( 0 == flock( fd, LOCK_SH | LOCK_NB ) || errno == ENOTSUP ); |
704 |
} |
705 |
#else /* MACOSX */ |
692 |
bLocked = ( F_WRLCK != aflock.l_type || -1 != fcntl( fd, F_SETLK, &aflock ) ); |
706 |
bLocked = ( F_WRLCK != aflock.l_type || -1 != fcntl( fd, F_SETLK, &aflock ) ); |
|
|
707 |
#endif /* MACOSX */ |
693 |
} |
708 |
} |
694 |
|
709 |
|
695 |
if ( !bNeedsLock || bLocked ) |
710 |
if ( !bNeedsLock || bLocked ) |
Lines 756-762
Link Here
|
756 |
/* FIXME: check if file is really locked ? */ |
771 |
/* FIXME: check if file is really locked ? */ |
757 |
|
772 |
|
758 |
/* release the file share lock on this file */ |
773 |
/* release the file share lock on this file */ |
|
|
774 |
#ifdef MACOSX |
775 |
/* Mac OSX will return ENOTSUP for webdav drives. We should ignore the error */ |
776 |
if ( 0 != flock( pHandleImpl->fd, LOCK_UN | LOCK_NB ) && errno != ENOTSUP ) |
777 |
#else /* MACOSX */ |
759 |
if( -1 == fcntl( pHandleImpl->fd, F_SETLK, &aflock ) ) |
778 |
if( -1 == fcntl( pHandleImpl->fd, F_SETLK, &aflock ) ) |
|
|
779 |
#endif /* MACOSX */ |
760 |
{ |
780 |
{ |
761 |
PERROR( "osl_closeFile", "unlock failed" ); |
781 |
PERROR( "osl_closeFile", "unlock failed" ); |
762 |
} |
782 |
} |