r3658: use handle->fd == -1 as the primary indicator of a directory. This
authorAndrew Tridgell <tridge@samba.org>
Wed, 10 Nov 2004 12:40:33 +0000 (12:40 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:05:42 +0000 (13:05 -0500)
fixes a directory creation problem from WinXP
(This used to be commit 4b3afc6c395b430e7e56d8ebe0ddf85c556a5df5)

source4/ntvfs/posix/pvfs_flush.c
source4/ntvfs/posix/pvfs_lock.c
source4/ntvfs/posix/pvfs_read.c
source4/ntvfs/posix/pvfs_resolve.c
source4/ntvfs/posix/pvfs_write.c

index 66a0cc5edff2fdc39536ccad31902529c7c89444..5c1132db19ffb72332e47dd2b5f41e8fa8628661 100644 (file)
@@ -28,7 +28,7 @@
 */
 static void pvfs_flush_file(struct pvfs_state *pvfs, struct pvfs_file *f)
 {
-       if (f->handle->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
+       if (f->handle->fd == -1) {
                return;
        }
        if (pvfs->flags & PVFS_FLAG_STRICT_SYNC) {
index 485199e6f8b3e7721de136433d933bb638071772..c0d0133f03cff1e49f8ee004e5a345f811b47e28 100644 (file)
@@ -290,7 +290,7 @@ NTSTATUS pvfs_lock(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_INVALID_HANDLE;
        }
 
-       if (f->handle->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
+       if (f->handle->fd == -1) {
                return NT_STATUS_FILE_IS_A_DIRECTORY;
        }
 
index 5598ccfb08537d5d9e8f9d028f6be38c8cb0aaaf..0f7d3b4b0c4f619ce0622ef6e2a135662628ecd5 100644 (file)
@@ -46,7 +46,7 @@ NTSTATUS pvfs_read(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_INVALID_HANDLE;
        }
 
-       if (f->handle->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
+       if (f->handle->fd == -1) {
                return NT_STATUS_FILE_IS_A_DIRECTORY;
        }
 
index 30602b964a1c6b42b26b69ce8361c4443235aacf..5c650440c346cf18fb91ef0f2d98962525f58ce0 100644 (file)
@@ -511,7 +511,7 @@ NTSTATUS pvfs_resolve_name_fd(struct pvfs_state *pvfs, int fd,
                inode = name->st.st_ino;
        }
 
-       if (name->exists && (name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY)) {
+       if (fd == -1) {
                if (stat(name->full_name, &name->st) == -1) {
                        return NT_STATUS_INVALID_HANDLE;
                }
index 6ebd9b70cff4dd7cf635334a71ba2244919a8f88..989e8d7b1b77fd75ea7e8376d0db8234ba6b9589 100644 (file)
@@ -44,7 +44,7 @@ NTSTATUS pvfs_write(struct ntvfs_module_context *ntvfs,
                return NT_STATUS_INVALID_HANDLE;
        }
 
-       if (f->handle->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
+       if (f->handle->fd == -1) {
                return NT_STATUS_FILE_IS_A_DIRECTORY;
        }