Index: include/apr.h.in
===================================================================
--- include/apr.h.in	(revision 606117)
+++ include/apr.h.in	(working copy)
@@ -103,6 +103,8 @@
 #define APR_HAVE_SYS_UIO_H       @sys_uioh@
 #define APR_HAVE_SYS_UN_H        @sys_unh@
 #define APR_HAVE_SYS_WAIT_H      @sys_waith@
+#define APR_HAVE_SYS_XATTR_H     @sys_xattrh@
+#define APR_HAVE_SYS_EXTATTR_H   @sys_extattrh@
 #define APR_HAVE_TIME_H          @timeh@
 #define APR_HAVE_UNISTD_H        @unistdh@
 #define APR_HAVE_WINDOWS_H       @windowsh@
@@ -238,6 +240,7 @@
 #define APR_HAS_UNICODE_FS        @have_unicode_fs@
 #define APR_HAS_PROC_INVOKED      @have_proc_invoked@
 #define APR_HAS_USER              1
+#define APR_HAS_XATTR             @xattr@
 #define APR_HAS_LARGE_FILES       @aprlfs@
 #define APR_HAS_XTHREAD_FILES     0
 #define APR_HAS_OS_UUID           @osuuid@
Index: configure.in
===================================================================
--- configure.in	(revision 606117)
+++ configure.in	(working copy)
@@ -1135,7 +1135,9 @@
     sys/types.h		\
     sys/uio.h		\
     sys/un.h		\
-    sys/wait.h)
+    sys/wait.h          \
+    sys/xattr.h         \
+    sys/extattr.h)
 
 # IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
 # being included by itself.  Check for <netinet/tcp.h> manually,
@@ -1187,6 +1189,8 @@
 AC_SUBST(unistdh)
 AC_SUBST(signalh)
 AC_SUBST(sys_waith)
+AC_SUBST(sys_xattrh)
+AC_SUBST(sys_extattrh)
 AC_SUBST(pthreadh)
 AC_SUBST(semaphoreh)
 AC_SUBST(windowsh)
@@ -2030,6 +2034,87 @@
 APR_CHECK_DIRENT_INODE
 APR_CHECK_DIRENT_TYPE
 
+dnl ----------------------------- Checking for Extended Attributes Support
+echo "${nl}Checking for Extended Attributes Support..."
+
+# Check whether Extended Attributes have explicitly been disabled
+AC_ARG_ENABLE(xattr,
+  [  --disable-xattr         Disable Extended Attributes support in APR.],
+  [ if test "$enableval" = "no"; then
+        user_disabled_xattr=1
+    fi ],
+  [ user_disabled_xattr=0 ] )
+
+xattrdarwin="0"
+xattrlinux="0"
+xattrfreebsd="0"
+xattrsolaris="0"
+if test "$user_disabled_xattr" = 1; then
+    echo "no -- disabled by user"
+else
+    AC_CHECK_FUNCS([fsetxattr fgetxattr flistxattr fremovexattr \
+                    lgetxattr openat unlinkat extattr_set_fd \
+                    extattr_get_fd extattr_list_fd extattr_delete_fd])
+    APR_CHECK_DEFINE(O_XATTR, sys/fcntl.h)
+    APR_CHECK_DEFINE(XATTR_NOFOLLOW, sys/xattr.h)
+    APR_CHECK_DEFINE(XATTR_CREATE, sys/xattr.h)
+    APR_CHECK_DEFINE(XATTR_REPLACE, sys/xattr.h)
+    APR_CHECK_DEFINE(XATTR_NAME_MAX, linux/limits.h)
+    APR_CHECK_DEFINE(XATTR_SIZE_MAX, linux/limits.h)
+    APR_CHECK_DEFINE(XATTR_LIST_MAX, linux/limits.h)
+    APR_CHECK_DEFINE(XATTR_MAXNAMELEN, sys/xattr.h)
+    APR_CHECK_DEFINE(EXTATTR_NAMESPACE_USER, sys/extattr.h)
+    APR_CHECK_DEFINE(EXTATTR_NAMESPACE_SYSTEM, sys/extattr.h)
+    APR_CHECK_DEFINE(EXTATTR_MAXNAMELEN, sys/extattr.h)
+
+    APR_BEGIN_DECISION([xattr attribute system interface])
+    APR_IFALLYES(header:sys/xattr.h dnl
+                 define:XATTR_NOFOLLOW dnl
+                 func:fgetxattr dnl
+                 func:fsetxattr dnl
+                 func:flistxattr dnl
+                 func:fremovexattr,
+                 [xattrdarwin="1"
+                  APR_DECIDE(USE_XATTR_DARWIN, [xattr (Darwin)])])
+
+    APR_IFALLYES(header:sys/xattr.h dnl
+                 func:lgetxattr dnl
+                 func:fgetxattr dnl
+                 func:fsetxattr dnl
+                 func:flistxattr dnl
+                 func:fremovexattr,
+                 [xattrlinux="1"
+                  APR_DECIDE(USE_XATTR_LINUX, [xattr (Linux)])])
+
+    APR_IFALLYES(header:sys/extattr.h dnl
+                 func:extattr_set_fd dnl
+                 func:func:extattr_get_fd dnl
+                 func:extattr_list_fd dnl
+                 func:func:extattr_delete_fd,
+                 [xattrfreebsd="1"
+                  APR_DECIDE(USE_XATTR_FREEBSD, [extattr (FreeBSD)])])
+
+    APR_IFALLYES(define:O_XATTR dnl
+                 func:openat dnl
+                 func:unlinkat,
+                 [xattrsolaris="1"
+                  APR_DECIDE(USE_XATTR_SOLARIS, [attropen (Solaris)])])
+
+    if test "x$ac_decision" = "x"; then
+        ac_decision="USE_XATTR_NONE"
+        ac_decision_msg="no xattr interface available"
+    fi
+    APR_END_DECISION
+    AC_DEFINE_UNQUOTED($ac_decision)
+fi
+
+if test "$xattrdarwin$xattrlinux$xattrfreebsd$xattrsolaris" = "0000"; then
+  xattr="0"
+else
+  xattr="1"
+fi
+AC_SUBST(xattr)
+
 dnl ----------------------------- Checking for UUID Support 
 echo "${nl}Checking for OS UUID Support..."
 

