svn commit: samba r7361 - in branches/SAMBA_4_0/source/ntvfs/posix: .

tridge at samba.org tridge at samba.org
Tue Jun 7 12:15:10 GMT 2005


Author: tridge
Date: 2005-06-07 12:15:10 +0000 (Tue, 07 Jun 2005)
New Revision: 7361

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7361

Log:
fixed the 'file becomes a directory' bug that marc kapland found.

Thanks Marc!

Modified:
   branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c
   branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c


Changeset:
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c	2005-06-07 12:02:00 UTC (rev 7360)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_util.c	2005-06-07 12:15:10 UTC (rev 7361)
@@ -68,11 +68,16 @@
 /*
   normalise a file attribute
 */
-uint32_t pvfs_attrib_normalise(uint32_t attrib)
+uint32_t pvfs_attrib_normalise(uint32_t attrib, mode_t mode)
 {
 	if (attrib != FILE_ATTRIBUTE_NORMAL) {
 		attrib &= ~FILE_ATTRIBUTE_NORMAL;
 	}
+	if (S_ISDIR(mode)) {
+		attrib |= FILE_ATTRIBUTE_DIRECTORY;
+	} else {
+		attrib &= ~FILE_ATTRIBUTE_DIRECTORY;
+	}
 	return attrib;
 }
 

Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c	2005-06-07 12:02:00 UTC (rev 7360)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_xattr.c	2005-06-07 12:15:10 UTC (rev 7361)
@@ -184,7 +184,8 @@
 	switch (attrib.version) {
 	case 1:
 		info1 = &attrib.info.info1;
-		name->dos.attrib = pvfs_attrib_normalise(info1->attrib);
+		name->dos.attrib = pvfs_attrib_normalise(info1->attrib, 
+							 name->st.st_mode);
 		name->dos.ea_size = info1->ea_size;
 		if (name->st.st_size == info1->size) {
 			name->dos.alloc_size = 
@@ -201,7 +202,8 @@
 
 	case 2:
 		info2 = &attrib.info.info2;
-		name->dos.attrib = pvfs_attrib_normalise(info2->attrib);
+		name->dos.attrib = pvfs_attrib_normalise(info2->attrib, 
+							 name->st.st_mode);
 		name->dos.ea_size = info2->ea_size;
 		if (name->st.st_size == info2->size) {
 			name->dos.alloc_size = 
@@ -248,7 +250,7 @@
 	attrib.version = 2;
 	info2 = &attrib.info.info2;
 
-	name->dos.attrib = pvfs_attrib_normalise(name->dos.attrib);
+	name->dos.attrib = pvfs_attrib_normalise(name->dos.attrib, name->st.st_mode);
 
 	info2->attrib      = name->dos.attrib;
 	info2->ea_size     = name->dos.ea_size;



More information about the samba-cvs mailing list