annotate m4/chown.m4 @ 10649:aafc4daf1581

open-safer.c: avoid 'signed and unsigned in conditional...' warning * lib/open-safer.c (open_safer): Use an "if/else" statement in place of the ternary operator. Reported by Reuben Thomas <rrt@sc3d.org>.
author Paul Eggert <eggert@cs.ucla.edu>
date Thu, 16 Oct 2008 21:48:54 +0200
parents 51d32a83a7df
children f6cba5a556ce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 6275
diff changeset
1 #serial 17
5591
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
2 # Determine whether we need the chown wrapper.
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
3
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 6275
diff changeset
4 dnl Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007 Free
5591
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
5 dnl Software Foundation, Inc.
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
6
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
7 dnl This file is free software; the Free Software Foundation
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
8 dnl gives unlimited permission to copy and/or distribute it,
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
9 dnl with or without modifications, as long as this notice is preserved.
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
10
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
11 # chown should accept arguments of -1 for uid and gid, and it should
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
12 # dereference symlinks. If it doesn't, arrange to use the replacement
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
13 # function.
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
14
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
15 # From Jim Meyering.
889
Jim Meyering <jim@meyering.net>
parents:
diff changeset
16
5016
7141ea4946af Change jm_ to gl_ in AC_DEFINE'd names. Update all uses.
Jim Meyering <jim@meyering.net>
parents: 4108
diff changeset
17 AC_DEFUN([gl_FUNC_CHOWN],
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
18 [
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 6275
diff changeset
19 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
20 AC_REQUIRE([AC_TYPE_UID_T])
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
21 AC_REQUIRE([AC_FUNC_CHOWN])
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
22 AC_REQUIRE([gl_FUNC_CHOWN_FOLLOWS_SYMLINK])
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
23
5871
8b95519c71b9 * lib/chown.c (rpl_chown): Return -1 on failure.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5591
diff changeset
24 if test $ac_cv_func_chown_works = no; then
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
25 AC_DEFINE(CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE, 1,
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
26 [Define if chown is not POSIX compliant regarding IDs of -1.])
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
27 fi
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
28
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
29 # If chown has either of the above problems, then we need the wrapper.
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
30 if test $ac_cv_func_chown_works$gl_cv_func_chown_follows_symlink = yesyes; then
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
31 : # no wrapper needed
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
32 else
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 6275
diff changeset
33 REPLACE_CHOWN=1
2685
d4ea46c69b9f fix typo in last change
Jim Meyering <jim@meyering.net>
parents: 2683
diff changeset
34 AC_LIBOBJ(chown)
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
35 gl_PREREQ_CHOWN
889
Jim Meyering <jim@meyering.net>
parents:
diff changeset
36 fi
Jim Meyering <jim@meyering.net>
parents:
diff changeset
37 ])
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
38
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
39 # Determine whether chown follows symlinks (it should).
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
40 AC_DEFUN([gl_FUNC_CHOWN_FOLLOWS_SYMLINK],
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
41 [
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
42 AC_CACHE_CHECK(
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
43 [whether chown(2) dereferences symlinks],
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
44 gl_cv_func_chown_follows_symlink,
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
45 [
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
46 AC_RUN_IFELSE([AC_LANG_SOURCE([[
6275
fd0ccce602e4 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5956
diff changeset
47 #include <unistd.h>
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
48 #include <stdlib.h>
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
49 #include <errno.h>
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
50
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
51 int
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
52 main ()
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
53 {
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
54 char const *dangling_symlink = "conftest.dangle";
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
55
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
56 unlink (dangling_symlink);
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
57 if (symlink ("conftest.no-such", dangling_symlink))
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
58 abort ();
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
59
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
60 /* Exit successfully on a conforming system,
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
61 i.e., where chown must fail with ENOENT. */
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
62 exit ( ! (chown (dangling_symlink, getuid (), getgid ()) != 0
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
63 && errno == ENOENT));
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
64 }
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
65 ]])],
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
66 [gl_cv_func_chown_follows_symlink=yes],
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
67 [gl_cv_func_chown_follows_symlink=no],
5591
487bb44907f4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
Paul Eggert <eggert@cs.ucla.edu>
parents: 5078
diff changeset
68 [gl_cv_func_chown_follows_symlink=yes]
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
69 )
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
70 ]
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
71 )
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
72
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
73 if test $gl_cv_func_chown_follows_symlink = no; then
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
74 AC_DEFINE(CHOWN_MODIFIES_SYMLINK, 1,
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
75 [Define if chown modifies symlinks.])
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
76 fi
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
77 ])
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
78
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
79 # Prerequisites of lib/chown.c.
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
80 AC_DEFUN([gl_PREREQ_CHOWN],
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
81 [
5078
146129232fe0 Merge from coreutils CVS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5016
diff changeset
82 AC_CHECK_FUNC([fchown], , [AC_LIBOBJ(fchown-stub)])
4108
c1d472db5c30 An independent .m4 file for each module.
Bruno Haible <bruno@clisp.org>
parents: 3486
diff changeset
83 ])