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