Mercurial > hg > octave-shane > gnulib-hg
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 |
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 | 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 | 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 | 36 fi |
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 | 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 ]) |