pvfs_resolve: stream_name = "" is only the same as NULL for files
authorStefan Metzmacher <metze@samba.org>
Fri, 23 May 2008 07:46:50 +0000 (09:46 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 23 May 2008 07:55:15 +0000 (09:55 +0200)
metze
(This used to be commit 47756129fdf01075bac06cdd24107d7dc8ba34af)

source4/ntvfs/posix/pvfs_fileinfo.c
source4/ntvfs/posix/pvfs_resolve.c

index e35f42e955566c8613bd136affdceb450e0d7eae..04f6ad78d0f8e44e1ca32cd3970e5a7602dcd23f 100644 (file)
@@ -58,6 +58,8 @@ NTSTATUS pvfs_fill_dos_info(struct pvfs_state *pvfs, struct pvfs_filename *name,
        if (S_ISDIR(name->st.st_mode)) {
                name->st.st_size = 0;
                name->st.st_nlink = 1;
+       } else if (name->stream_id == 0) {
+               name->stream_name = NULL;
        }
 
        /* for now just use the simple samba mapping */
index 325bc74f8f00180cc764747bcc60d61509284e1b..2e97925c494e735557980eda4d809030e8963998 100644 (file)
@@ -202,7 +202,13 @@ static NTSTATUS parse_stream_name(struct pvfs_filename *name, const char *s)
        }
        *p = 0;
        if (strcmp(name->stream_name, "") == 0) {
-               name->stream_name = NULL;
+               /*
+                * we don't set stream_name to NULL, here
+                * as this would be wrong for directories
+                *
+                * pvfs_fill_dos_info() will set it to NULL
+                * if it's not a directory.
+                */
                name->stream_id = 0;
        } else {
                name->stream_id = pvfs_name_hash(name->stream_name,