Lines 187-192
Link Here
|
187 |
vap->va_fsid = dev2udev(ip->i_dev); |
187 |
vap->va_fsid = dev2udev(ip->i_dev); |
188 |
vap->va_fileid = ip->i_number; |
188 |
vap->va_fileid = ip->i_number; |
189 |
vap->va_mode = ip->i_mp->ntm_mode; |
189 |
vap->va_mode = ip->i_mp->ntm_mode; |
|
|
190 |
if (vp->v_type == VDIR) |
191 |
vap->va_mode |= (VEXEC | VEXEC >> 3 | VEXEC >> 6); |
190 |
vap->va_nlink = (ip->i_nlink || ip->i_flag & IN_LOADED ? ip->i_nlink : 1); |
192 |
vap->va_nlink = (ip->i_nlink || ip->i_flag & IN_LOADED ? ip->i_nlink : 1); |
191 |
vap->va_uid = ip->i_mp->ntm_uid; |
193 |
vap->va_uid = ip->i_mp->ntm_uid; |
192 |
vap->va_gid = ip->i_mp->ntm_gid; |
194 |
vap->va_gid = ip->i_mp->ntm_gid; |
Lines 392-404
Link Here
|
392 |
{ |
394 |
{ |
393 |
struct vnode *vp = ap->a_vp; |
395 |
struct vnode *vp = ap->a_vp; |
394 |
struct ntnode *ip = VTONT(vp); |
396 |
struct ntnode *ip = VTONT(vp); |
395 |
mode_t mode = ap->a_mode; |
397 |
mode_t file_mode, mode = ap->a_mode; |
396 |
#ifdef QUOTA |
398 |
#ifdef QUOTA |
397 |
int error; |
399 |
int error; |
398 |
#endif |
400 |
#endif |
399 |
|
401 |
|
400 |
dprintf(("ntfs_access: %d\n",ip->i_number)); |
402 |
dprintf(("ntfs_access: %d\n",ip->i_number)); |
401 |
|
403 |
|
|
|
404 |
file_mode = ip->i_mp->ntm_mode; |
405 |
if (vp->v_type == VDIR) |
406 |
file_mode |= (S_IXUSR | S_IXGRP | S_IXOTH); |
407 |
|
402 |
/* |
408 |
/* |
403 |
* Disallow write attempts on read-only filesystems; |
409 |
* Disallow write attempts on read-only filesystems; |
404 |
* unless the file is a socket, fifo, or a block or |
410 |
* unless the file is a socket, fifo, or a block or |
Lines 419-425
Link Here
|
419 |
} |
425 |
} |
420 |
} |
426 |
} |
421 |
|
427 |
|
422 |
return (vaccess(vp->v_type, ip->i_mp->ntm_mode, ip->i_mp->ntm_uid, |
428 |
return (vaccess(vp->v_type, file_mode, ip->i_mp->ntm_uid, |
423 |
ip->i_mp->ntm_gid, ap->a_mode, ap->a_cred, NULL)); |
429 |
ip->i_mp->ntm_gid, ap->a_mode, ap->a_cred, NULL)); |
424 |
} |
430 |
} |
425 |
|
431 |
|