Hiya,
I've just built coreutils 8.4 on a machine with libattr installed, and
found that tests/cp/cp-mv-enotsup-xattr was failing because cp was
incorrectly giving the "cp is built without xattr support" error
message. The problem appears to be that the configure script defines
USE_XATTR to "yes" if attr support is enabled, but copy.c and cp.c use
"#if USE_XATTR"/"#if !USE_XATTR" to test it. The attached patch changes
these to use #ifdef/#ifndef, which makes the testsuite pass for me.
Thanks,
--
Adam Sampson <[email protected]> <http://offog.org/>
Test for USE_XATTR correctly: the configure script defines it to "yes" if
libattr is available, or doesn't define it at all if it's not.
diff -x config.log -x config.status -ru tmp/coreutils-8.4/src/copy.c
work/coreutils-8.4/src/copy.c
--- tmp/coreutils-8.4/src/copy.c 2010-01-03 17:06:20.000000000 +0000
+++ work/coreutils-8.4/src/copy.c 2010-01-16 11:26:45.914419566 +0000
@@ -54,7 +54,7 @@
#include "areadlink.h"
#include "yesno.h"
-#if USE_XATTR
+#ifdef USE_XATTR
# include <attr/error_context.h>
# include <attr/libattr.h>
# include <stdarg.h>
@@ -174,7 +174,7 @@
return err == ENOTSUP || err == ENODATA;
}
-#if USE_XATTR
+#ifdef USE_XATTR
static void
copy_attr_error (struct error_context *ctx ATTRIBUTE_UNUSED,
char const *fmt, ...)
diff -x config.log -x config.status -ru tmp/coreutils-8.4/src/cp.c
work/coreutils-8.4/src/cp.c
--- tmp/coreutils-8.4/src/cp.c 2010-01-04 15:46:06.000000000 +0000
+++ work/coreutils-8.4/src/cp.c 2010-01-16 11:26:51.992419509 +0000
@@ -1141,7 +1141,7 @@
"without an SELinux-enabled kernel"));
}
-#if !USE_XATTR
+#ifndef USE_XATTR
if (x.require_preserve_xattr)
error (EXIT_FAILURE, 0, _("cannot preserve extended attributes, cp is "
"built without xattr support"));