summaryrefslogtreecommitdiff
path: root/source4/ntvfs/posix/pvfs_util.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-10-26 05:39:54 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:04:45 -0500
commite9820e1b6e62240c5a18fa85e38a99685beed2df (patch)
tree888af697a28788ad89a2c43be1bf0d13799c3785 /source4/ntvfs/posix/pvfs_util.c
parent84bbf02e95639536c34140906aa4652ad61ea2c3 (diff)
downloadsamba-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.c16
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;
}