From c5cb1a186dc5fd4699e475e3227496f48eb8acc6 Mon Sep 17 00:00:00 2001 From: Chaskiel M Grundman Date: Wed, 24 Oct 2007 06:30:41 +0000 Subject: [PATCH] DEVEL15-finder-and-tiger-cp-deal-with-dropboxes-20071024 FIXES 69363 this way copying finishes (cherry picked from commit f814c8a9636b2939da9d0f17de4d71c6fd23ae6c) --- src/afs/DARWIN/osi_vnodeops.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/afs/DARWIN/osi_vnodeops.c b/src/afs/DARWIN/osi_vnodeops.c index 25c231f6c..391be2732 100644 --- a/src/afs/DARWIN/osi_vnodeops.c +++ b/src/afs/DARWIN/osi_vnodeops.c @@ -634,22 +634,21 @@ afs_vop_access(ap) /* we can't check for KAUTH_VNODE_TAKE_OWNERSHIP, so we always permit it */ code = afs_AccessOK(tvc, bits, &treq, cmb); - +#if defined(AFS_DARWIN80_ENV) + /* In a dropbox, cp on 10.4 behaves badly, looping on EACCES */ + /* In a dropbox, Finder may reopen the file. Let it. */ + if (code == 0 && ((bits &~(PRSFS_READ|PRSFS_WRITE)) == 0)) { + code = afs_AccessOK(tvc, PRSFS_ADMINISTER|PRSFS_INSERT|bits, &treq, cmb); + } +#endif if (code == 1 && vnode_vtype(ap->a_vp) == VREG && ap->a_action & KAUTH_VNODE_EXECUTE && (tvc->m.Mode & 0100) != 0100) { code = 0; - } + } if (code) { code= 0; /* if access is ok */ } else { -#if defined(AFS_DARWIN80_ENV) && !defined(AFS_DARWIN90_ENV) - if (ap->a_action == KAUTH_VNODE_READ_DATA) { - /* In 10.4 cp will loop forever on EACCES */ - code = afs_CheckCode(EACCES, &treq, 57); - } else - /* but kinit wants EACCES or it gets dumb */ -#endif code = afs_CheckCode(EACCES, &treq, 57); /* failure code */ } out: -- 2.39.5