summaryrefslogtreecommitdiff
path: root/m4/chown.m4
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1997-03-11 05:02:11 +0000
committerJim Meyering <jim@meyering.net>1997-03-11 05:02:11 +0000
commitdd2f783492b7e8e6d35ffb2d4535c2725d02af68 (patch)
tree5b472ca1721183123c8556a850f713d6cff17f64 /m4/chown.m4
parentfac7cfba066bc95a33d9c5b132ec31559393228e (diff)
downloadcoreutils-dd2f783492b7e8e6d35ffb2d4535c2725d02af68.tar.xz
.
Diffstat (limited to 'm4/chown.m4')
-rw-r--r--m4/chown.m440
1 files changed, 40 insertions, 0 deletions
diff --git a/m4/chown.m4 b/m4/chown.m4
new file mode 100644
index 000000000..59b4de725
--- /dev/null
+++ b/m4/chown.m4
@@ -0,0 +1,40 @@
+#serial 1
+
+dnl From Jim Meyering.
+dnl If you use this macro in a package, you should
+dnl add the following two lines to acconfig.h:
+dnl /* Define to rpl_chown if the replacement function should be used. */
+dnl #undef chown
+dnl
+
+AC_DEFUN(jm_FUNC_CHOWN,
+[AC_REQUIRE([AC_TYPE_UID_T])dnl
+ test -z "$ac_cv_header_unistd_h" \
+ && AC_CHECK_HEADERS(unistd.h)
+ AC_CACHE_CHECK([for working chown], jm_cv_func_working_chown,
+ [AC_TRY_RUN([
+# include <sys/types.h>
+# include <fcntl.h>
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
+
+ int
+ main ()
+ {
+ char *f = "conftestchown";
+ if (creat (f, 0600) < 0)
+ exit (1);
+ exit (chown (f, (gid_t) -1, (uid_t) -1) == -1 ? 1 : 0);
+ }
+ ],
+ jm_cv_func_working_chown=yes,
+ jm_cv_func_working_chown=no,
+ dnl When crosscompiling, assume chown is broken.
+ jm_cv_func_working_chown=no)
+ ])
+ if test $jm_cv_func_working_chown = no; then
+ LIBOBJS="$LIBOBJS chown.o"
+ AC_DEFINE_UNQUOTED(chown, rpl_chown)
+ fi
+])