diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index bd7761fcd..969dd03f6 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2008-02-11  Corinna Vinschen  <corinna@vinschen.de>
+
+	* fhandler_disk_file.cc (fhandler_disk_file::fgetxattr): Remove unused
+	attr.
+	(fhandler_disk_file::fsetxattr): Ditto.
+	* include/attr/xattr.h: New file.
+
 2008-02-11  Corinna Vinschen  <corinna@vinschen.de>
 
 	* dcrt0.cc (dll_crt0_1): Fix typo in call to sys_wcstombs.
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index a3c6566f5..d324a2c1d 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -949,8 +949,6 @@ cant_access_acl:
 ssize_t
 fhandler_disk_file::fgetxattr (const char *name, void *value, size_t size)
 {
-  OBJECT_ATTRIBUTES attr;
-
   if (pc.is_fs_special ())
     {
       set_errno (ENOTSUP);
@@ -963,8 +961,6 @@ int
 fhandler_disk_file::fsetxattr (const char *name, const void *value, size_t size,
 			       int flags)
 {
-  OBJECT_ATTRIBUTES attr;
-
   if (pc.is_fs_special ())
     {
       set_errno (ENOTSUP);
diff --git a/winsup/cygwin/include/attr/xattr.h b/winsup/cygwin/include/attr/xattr.h
new file mode 100644
index 000000000..421e6871d
--- /dev/null
+++ b/winsup/cygwin/include/attr/xattr.h
@@ -0,0 +1,46 @@
+/* attr/xattr.h
+
+   Copyright 2008 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#ifndef _ATTR_XATTR_H
+#define _ATTR_XATTR_H
+
+#include "_ansi.h"
+#if 0
+/* Per man pages you have to include <sys/types.h> explicitely before
+   including <attr/xattr.h>.  That's how it works on Linux, too. */
+#include <sys/types.h>
+#endif
+#include <sys/errno.h>
+
+#define XATTR_CREATE	1
+#define XATTR_REPLACE	2
+
+#ifndef ENOATTR
+#define ENOATTR ENODATA
+#endif
+
+_BEGIN_STD_C
+
+ssize_t _EXFUN(getxattr,(const char *, const char *, void *, size_t ));
+ssize_t _EXFUN(lgetxattr,(const char *, const char *, void *, size_t ));
+ssize_t _EXFUN(fgetxattr,(int , const char *, void *, size_t ));
+ssize_t _EXFUN(listxattr,(const char *, char *, size_t ));
+ssize_t _EXFUN(llistxattr,(const char *, char *, size_t ));
+ssize_t _EXFUN(flistxattr,(int , char *, size_t ));
+int _EXFUN(setxattr,(const char *, const char *, const void *, size_t , int ));
+int _EXFUN(lsetxattr,(const char *, const char *, const void *, size_t , int ));
+int _EXFUN(fsetxattr,(int , const char *, const void *, size_t , int ));
+int _EXFUN(removexattr,(const char *, const char *));
+int _EXFUN(lremovexattr,(const char *, const char *));
+int _EXFUN(fremovexattr,(int ,   const char *));
+
+_END_STD_C
+
+#endif	/* _ATTR_XATTR_H */