Mercurial > gnulib
annotate m4/symlinkat.m4 @ 40186:8964917f9574
autoupdate
author | Karl Berry <karl@freefriends.org> |
---|---|
date | Mon, 18 Feb 2019 08:02:49 -0800 |
parents | b06060465f09 |
children |
rev | line source |
---|---|
19660
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
1 # serial 9 |
13539
56e31af9a41e
readlinkat: split into its own module
Eric Blake <eblake@redhat.com>
parents:
12559
diff
changeset
|
2 # See if we need to provide symlinkat replacement. |
11956 | 3 |
40057
b06060465f09
maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents:
19660
diff
changeset
|
4 dnl Copyright (C) 2009-2019 Free Software Foundation, Inc. |
11956 | 5 dnl This file is free software; the Free Software Foundation |
6 dnl gives unlimited permission to copy and/or distribute it, | |
7 dnl with or without modifications, as long as this notice is preserved. | |
8 | |
9 # Written by Eric Blake. | |
10 | |
11 AC_DEFUN([gl_FUNC_SYMLINKAT], | |
12 [ | |
18985
89722d6723c5
Make sure $host and $host_os are defined when used.
Bruno Haible <bruno@clisp.org>
parents:
18626
diff
changeset
|
13 AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) |
11956 | 14 AC_REQUIRE([gl_FUNC_OPENAT]) |
15 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | |
18985
89722d6723c5
Make sure $host and $host_os are defined when used.
Bruno Haible <bruno@clisp.org>
parents:
18626
diff
changeset
|
16 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
13539
56e31af9a41e
readlinkat: split into its own module
Eric Blake <eblake@redhat.com>
parents:
12559
diff
changeset
|
17 AC_CHECK_FUNCS_ONCE([symlinkat]) |
11956 | 18 if test $ac_cv_func_symlinkat = no; then |
19 HAVE_SYMLINKAT=0 | |
17770
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
20 else |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
21 AC_CACHE_CHECK([whether symlinkat handles trailing slash correctly], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
22 [gl_cv_func_symlinkat_works], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
23 [AC_RUN_IFELSE( |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
24 [AC_LANG_PROGRAM( |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
25 [[#include <fcntl.h> |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
26 #include <unistd.h> |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
27 ]], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
28 [[int result = 0; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
29 if (!symlinkat ("a", AT_FDCWD, "conftest.link/")) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
30 result |= 1; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
31 if (symlinkat ("conftest.f", AT_FDCWD, "conftest.lnk2")) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
32 result |= 2; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
33 else if (!symlinkat ("a", AT_FDCWD, "conftest.lnk2/")) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
34 result |= 4; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
35 return result; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
36 ]])], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
37 [gl_cv_func_symlinkat_works=yes], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
38 [gl_cv_func_symlinkat_works=no], |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
39 [case "$host_os" in |
19660
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
40 # Guess yes on Linux systems. |
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
41 linux-* | linux) gl_cv_func_symlinkat_works="guessing yes" ;; |
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
42 # Guess yes on glibc systems. |
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
43 *-gnu* | gnu*) gl_cv_func_symlinkat_works="guessing yes" ;; |
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
44 # If we don't know, assume the worst. |
d7562698c771
Add cross-compilation guesses for Linux systems without glibc.
Bruno Haible <bruno@clisp.org>
parents:
19484
diff
changeset
|
45 *) gl_cv_func_symlinkat_works="guessing no" ;; |
17770
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
46 esac |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
47 ]) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
48 rm -f conftest.f conftest.link conftest.lnk2]) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
49 case "$gl_cv_func_symlinkat_works" in |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
50 *yes) ;; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
51 *) |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
52 REPLACE_SYMLINKAT=1 |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
53 ;; |
a0a111d28e75
symlinkat: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents:
17576
diff
changeset
|
54 esac |
11956 | 55 fi |
56 ]) |