From a7f01125771dc56bf0f0794f2a8f6f00bbb74c20 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 16 Sep 2009 16:23:51 +0000 Subject: [PATCH] * ntea.c (write_ea): Don't abort if not-samba. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/ntea.cc | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 6a090c0ac..70440a4c9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2009-09-16 Christopher Faylor + + * ntea.c (write_ea): Don't abort if not-samba. + 2009-09-01 Christopher Faylor * select.cc (peek_console): Always check window size when there is ANY diff --git a/winsup/cygwin/ntea.cc b/winsup/cygwin/ntea.cc index 5b4ec3b53..744076ef7 100644 --- a/winsup/cygwin/ntea.cc +++ b/winsup/cygwin/ntea.cc @@ -214,11 +214,16 @@ write_ea (HANDLE hdl, path_conv &pc, const char *name, const char *value, user namespace item, we remove the leading namespace from the name. This keeps tools like attr/getfattr/setfattr happy. Otherwise setting the EA fails as if we don't have the permissions. */ - if (pc.fs_is_samba () && ascii_strncasematch (name, "user.", 5)) + /* Samba hides the user namespace from Windows clients. If we try to + retrieve a user namespace item, we remove the leading namespace from + the name, otherwise the search fails. */ + if (!pc.fs_is_samba ()) + /* nothing to do */; + else if (ascii_strncasematch (name, "user.", 5)) name += 5; else { - set_errno (EOPNOTSUPP); + set_errno (ENOATTR); goto out; }