+2009-05-04 David Bartley <dtbartle@csclub.uwaterloo.ca>
+ Bruno Haible <bruno@clisp.org>
+
+ Fix test-file-has-acl on FreeBSD.
+ * tests/test-file-has-acl.sh: Also test a directory. On FreeBSD, the
+ mask is implicitly added.
+ * tests/test-file-has-acl.c: Include <signal.h>.
+ (main): Terminate the test after 5 seconds.
+ * modules/acl-tests (configure.ac): Check for alarm function.
+
2009-05-04 Bruno Haible <bruno@clisp.org>
Exploit new semantics of AC_DEFUN_ONCE available since 2009-01-26.
xalloc
configure.ac:
+AC_CHECK_DECLS_ONCE([alarm])
Makefile.am:
TESTS += test-file-has-acl.sh test-set-mode-acl.sh test-copy-acl.sh
/* Test for presence of ACL.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "acl.h"
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
exit (EXIT_FAILURE);
}
+ /* Check against possible infinite loop in file_has_acl. */
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (5);
+#endif
+
#if USE_ACL
{
int ret = file_has_acl (file, &statbuf);
func_test_has_acl tmpfile0 no
+ mkdir tmpdir0
+ func_test_has_acl tmpdir0 no
+
if test $acl_flavor != none; then
# Use a user and group id different from the current one, to avoid
# redundant/ambiguous ACLs.
*) setfacl -d user:$auid:1 tmpfile0 ;;
esac
- # On Linux, the ACL for the mask is implicitly added.
+ # On Linux and FreeBSD, the ACL for the mask is implicitly added.
# On Solaris, it is always there.
case $acl_flavor in
- linux) func_test_has_acl tmpfile0 yes ;;
- *) func_test_has_acl tmpfile0 no ;;
+ linux | freebsd) func_test_has_acl tmpfile0 yes ;;
+ *) func_test_has_acl tmpfile0 no ;;
esac
# Remove the ACL for the mask, if it was implicitly added.
fi
rm -f tmpfile[0-9] tmp.err
+ rm -rf tmpdir0
) || exit 1
rm -rf "$tmp"