long trights;
if (scp->flags & CM_SCACHEFLAG_EACCESS) {
- *outRightsp = aclScp->anyAccess;
- return CM_ERROR_NOACCESS;
+ *outRightsp = 0;
+ return 1;
}
didLock = 0;
return 0;
}
- /* check that we have a callback, too */
+ /* check that we have a callback, too */
if (!cm_HaveCallback(aclScp)) {
/* can't use it */
lock_ReleaseMutex(&aclScp->mx);
*outRightsp = trights;
}
- if (scp->fileType != CM_SCACHETYPE_DIRECTORY) {
+ if (scp->fileType > 0 && scp->fileType != CM_SCACHETYPE_DIRECTORY) {
/* check mode bits */
if ((scp->unixModeBits & 0400) == 0) {
osi_Log2(afsd_logp,"cm_HaveAccessRights UnixMode removing READ scp 0x%p unix 0x%x",
/* invalidate so next merge works fine;
* also initialize some flags */
+ scp->fileType = 0;
scp->flags &= ~(CM_SCACHEFLAG_STATD
| CM_SCACHEFLAG_DELETED
| CM_SCACHEFLAG_RO
return 0;
}
}
-
+
// yj: when we get here, it means we don't have an scp
// so we need to either load it or fake it, depending
// on whether the file is "special", see below.
scp->flags |= CM_SCACHEFLAG_EACCESS;
osi_Log2(afsd_logp, "Merge, Failure scp %x code 0x%x", scp, statusp->errorCode);
+ scp->fileType = 0; /* unknown */
+
scp->serverModTime = 0;
scp->clientModTime = 0;
scp->length.LowPart = 0;