chown: work around OpenBSD bug
[pspp] / m4 / lchown.m4
index a7b357297f56c1502011f8df19e000e90021dc1f..f0d67fe806cc6bc9e516d44d00550a3c4f789f67 100644 (file)
@@ -1,6 +1,7 @@
-#serial 11
+# serial 15
+# Determine whether we need the lchown wrapper.
 
 
-dnl Copyright (C) 1998, 2001, 2003, 2004, 2005, 2006 Free Software
+dnl Copyright (C) 1998, 2001, 2003-2007, 2009 Free Software
 dnl Foundation, Inc.
 
 dnl This file is free software; the Free Software Foundation
 dnl Foundation, Inc.
 
 dnl This file is free software; the Free Software Foundation
@@ -8,12 +9,21 @@ dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Jim Meyering.
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Jim Meyering.
-dnl Provide lchown on systems that lack it.
+dnl Provide lchown on systems that lack it, and work around bugs
+dnl on systems that have it.
 
 AC_DEFUN([gl_FUNC_LCHOWN],
 [
 
 AC_DEFUN([gl_FUNC_LCHOWN],
 [
-  AC_REQUIRE([AC_TYPE_UID_T])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
   AC_REQUIRE([gl_FUNC_CHOWN])
   AC_REQUIRE([gl_FUNC_CHOWN])
-  AC_CHECK_DECLS_ONCE([lchown])
-  AC_REPLACE_FUNCS(lchown)
+  AC_CHECK_FUNCS_ONCE([lchmod])
+  AC_REPLACE_FUNCS([lchown])
+  if test $ac_cv_func_lchown = no; then
+    HAVE_LCHOWN=0
+  elif test "$gl_cv_func_chown_slash_works" != yes \
+      || test "$gl_cv_func_chown_ctime_works" != yes; then
+    dnl Trailing slash and ctime bugs in chown also occur in lchown.
+    AC_LIBOBJ([lchown])
+    REPLACE_LCHOWN=1
+  fi
 ])
 ])