From: Sebastian Lackner sebastian@fds-team.de
From: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com --- dlls/ntdll/file.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 3fefcf0981..f7b4bacd84 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -218,12 +218,15 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr ) if (S_ISDIR( st->st_mode )) *attr |= FILE_ATTRIBUTE_REPARSE_POINT; } *attr |= get_file_attributes( st ); - /* convert Unix-style hidden files to a DOS hidden file attribute */ - if (DIR_is_hidden_file( path )) - *attr |= FILE_ATTRIBUTE_HIDDEN; /* retrieve any stored DOS attributes */ len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 ); - if (len == -1) return ret; + if (len == -1) + { + /* convert Unix-style hidden files to a DOS hidden file attribute */ + if (DIR_is_hidden_file( path )) + *attr |= FILE_ATTRIBUTE_HIDDEN; + return ret; + } *attr |= get_file_xattr( hexattr, len ); return ret; } @@ -236,7 +239,7 @@ NTSTATUS set_file_info( const char *path, ULONG attr ) /* Note: unix mode already set when called this way */ attr &= ~FILE_ATTRIBUTE_NORMAL; /* do not store everything, but keep everything Samba can use */ len = sprintf( hexattr, "0x%x", attr ); - if (attr != 0) + if (attr != 0 || DIR_is_hidden_file( path )) xattr_set( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, len ); else xattr_remove( path, SAMBA_XATTR_DOS_ATTRIB );