diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-10-26 05:39:54 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:04:45 -0500 |
commit | e9820e1b6e62240c5a18fa85e38a99685beed2df (patch) | |
tree | 888af697a28788ad89a2c43be1bf0d13799c3785 /source4/ntvfs/posix/pvfs_util.c | |
parent | 84bbf02e95639536c34140906aa4652ad61ea2c3 (diff) | |
download | samba-e9820e1b6e62240c5a18fa85e38a99685beed2df.tar.gz samba-e9820e1b6e62240c5a18fa85e38a99685beed2df.tar.bz2 samba-e9820e1b6e62240c5a18fa85e38a99685beed2df.zip |
r3240: - update the rules for what error codes should be given on the
different type of unlink an seach mismatches
- wildcard directory listings that have attribute
FILE_ATTRIBUTE_DIRECTORY and match "." or ".." should be failed.
- don't set the write_time on SMBclose unless it is non-zero
- added much better support for setfileinfo and setpathinfo in pvfs
- better (and more efficient) handling of .. and . components in filenames
(This used to be commit 9305b07af395a158cb9f0c1c9486f7122c79d357)
Diffstat (limited to 'source4/ntvfs/posix/pvfs_util.c')
-rw-r--r-- | source4/ntvfs/posix/pvfs_util.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source4/ntvfs/posix/pvfs_util.c b/source4/ntvfs/posix/pvfs_util.c index ae1dc6236d..50a78c2965 100644 --- a/source4/ntvfs/posix/pvfs_util.c +++ b/source4/ntvfs/posix/pvfs_util.c @@ -49,15 +49,17 @@ NTSTATUS pvfs_map_errno(struct pvfs_state *pvfs, int unix_errno) this is used by calls like unlink and search which take an attribute and only include special files if they match the given attribute */ -BOOL pvfs_match_attrib(struct pvfs_state *pvfs, struct pvfs_filename *name, - uint32_t attrib, uint32_t must_attrib) +NTSTATUS pvfs_match_attrib(struct pvfs_state *pvfs, struct pvfs_filename *name, + uint32_t attrib, uint32_t must_attrib) { - if ((name->dos.attrib & ~attrib) & - (FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_SYSTEM)) { - return False; + if ((name->dos.attrib & ~attrib) & FILE_ATTRIBUTE_DIRECTORY) { + return NT_STATUS_FILE_IS_A_DIRECTORY; + } + if ((name->dos.attrib & ~attrib) & (FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM)) { + return NT_STATUS_NO_SUCH_FILE; } if (must_attrib & ~name->dos.attrib) { - return False; + return NT_STATUS_OBJECT_NAME_NOT_FOUND; } - return True; + return NT_STATUS_OK; } |