X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fchown.m4;h=fa46981b2274e8277036e00c1313d6bb1db926df;hb=c604bb86746f7f16471a598df94845e42d0e1b5f;hp=ea3fe4c4c891dffc953553b735d01279d08fc606;hpb=ec919e79c7278b5b69aced77c453e5b165accfcf;p=gnulib.git diff --git a/m4/chown.m4 b/m4/chown.m4 index ea3fe4c4c..fa46981b2 100644 --- a/m4/chown.m4 +++ b/m4/chown.m4 @@ -1,7 +1,7 @@ -# serial 23 +# serial 25 # Determine whether we need the chown wrapper. -dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2010 Free Software +dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2011 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation @@ -25,12 +25,10 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN], dnl mingw lacks chown altogether. if test $ac_cv_func_chown = no; then HAVE_CHOWN=0 - AC_LIBOBJ([chown]) else dnl Some old systems treated chown like lchown. if test $gl_cv_func_chown_follows_symlink = no; then REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl Some old systems tried to use uid/gid -1 literally. @@ -38,7 +36,6 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN], AC_DEFINE([CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE], [1], [Define if chown is not POSIX compliant regarding IDs of -1.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl Solaris 9 ignores trailing slash. @@ -62,7 +59,6 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN], AC_DEFINE([CHOWN_TRAILING_SLASH_BUG], [1], [Define to 1 if chown mishandles trailing slash.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl OpenBSD fails to update ctime if ownership does not change. @@ -90,11 +86,6 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN], AC_DEFINE([CHOWN_CHANGE_TIME_BUG], [1], [Define to 1 if chown fails to change ctime when at least one argument was not -1.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) - fi - - if test $REPLACE_CHOWN = 1 && test $ac_cv_func_fchown = no; then - AC_LIBOBJ([fchown-stub]) fi fi ]) @@ -114,6 +105,7 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN_FOLLOWS_SYMLINK], int main () { + int result = 0; char const *dangling_symlink = "conftest.dangle"; unlink (dangling_symlink); @@ -122,8 +114,11 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN_FOLLOWS_SYMLINK], /* Exit successfully on a conforming system, i.e., where chown must fail with ENOENT. */ - exit ( ! (chown (dangling_symlink, getuid (), getgid ()) != 0 - && errno == ENOENT)); + if (chown (dangling_symlink, getuid (), getgid ()) == 0) + result |= 1; + if (errno != ENOENT) + result |= 2; + return result; } ]])], [gl_cv_func_chown_follows_symlink=yes],