annotate m4/rename.m4 @ 12454:f7624052e60d

fcntl: support F_DUPFD_CLOEXEC on systems with fcntl Implement F_DUPFD_CLOEXEC. The unit test still fails on systems with other fcntl bugs (such as cygwin 1.5 mishandling F_DUPFD, or mingw lacking fcntl altogether). Passes on Linux, both with and without kernel support, and on cygwin 1.7. * modules/fcntl (Files): List new files. (configure.ac): Run a test. * m4/fcntl.m4 (gl_FUNC_FCNTL): New file. * lib/fcntl.c (rpl_fcntl): Likewise. * m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Add witness defaults. (gl_FCNTL_H): Always replace fcntl.h. * modules/fcntl-h (Makefile.am): Substitute witnesses. * lib/fcntl.in.h (fcntl): Declare replacement. (F_DUPFD_CLOEXEC, GNULIB_defined_F_DUPFD_CLOEXEC): New macro when needed, plus a witness. * doc/posix-functions/fcntl.texi (fcntl): Document this. * doc/posix-headers/fcntl.texi (fcntl.h): Likewise. * tests/test-fcntl.c: New file. * modules/fcntl-tests: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Mon, 07 Dec 2009 11:50:59 -0700
parents 18ce29e54b9f
children b5e42ef33b49
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
1 # serial 21
5611
87c42e194f4a Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4674
diff changeset
2
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 7305
diff changeset
3 # Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc.
5611
87c42e194f4a Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4674
diff changeset
4 # This file is free software; the Free Software Foundation
87c42e194f4a Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4674
diff changeset
5 # gives unlimited permission to copy and/or distribute it,
87c42e194f4a Use an all-permissive copyright notice, recommended by RMS.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4674
diff changeset
6 # with or without modifications, as long as this notice is preserved.
3097
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
8 dnl From Volker Borchert.
5907
c47674a83a78 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5611
diff changeset
9 dnl Determine whether rename works for source file names with a trailing slash.
3097
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10 dnl The rename from SunOS 4.1.1_U1 doesn't.
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 dnl
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 dnl If it doesn't, then define RENAME_TRAILING_SLASH_BUG and arrange
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13 dnl to compile the wrapper function.
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14 dnl
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15
7305
7fab62b5331d [ChangeLog]
Jim Meyering <jim@meyering.net>
parents: 6744
diff changeset
16 AC_DEFUN([gl_FUNC_RENAME],
3097
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
17 [
11478
df9a59a3f8bc Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents: 11007
diff changeset
18 AC_REQUIRE([AC_CANONICAL_HOST])
11972
24ed6ac9fe07 rename: modernize replacement
Eric Blake <ebb9@byu.net>
parents: 11929
diff changeset
19 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
20 AC_CHECK_FUNCS_ONCE([lstat])
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
21
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
22 dnl Solaris 10 mistakenly allows rename("file","name/").
12096
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
23 dnl NetBSD 1.6 mistakenly forbids rename("dir","name/").
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
24 dnl FreeBSD 7.2 mistakenly allows rename("file","link-to-file/").
12096
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
25 dnl The Solaris bug can be worked around without stripping
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
26 dnl trailing slash, while the NetBSD bug requires stripping;
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
27 dnl the two conditions can be distinguished by whether hard
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
28 dnl links are also broken.
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
29 AC_CACHE_CHECK([whether rename honors trailing slash on destination],
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
30 [gl_cv_func_rename_slash_dst_works],
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
31 [rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
12096
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
32 touch conftest.f && mkdir conftest.d1 ||
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
33 AC_MSG_ERROR([cannot create temporary files])
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
34 # Assume that if we have lstat, we can also check symlinks.
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
35 if test $ac_cv_func_lstat = yes; then
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
36 ln -s conftest.f conftest.lnk
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
37 fi
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
38 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
39 # include <stdio.h>
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
40 # include <stdlib.h>
12096
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
41 ]], [if (rename ("conftest.f", "conftest.f1/") == 0) return 1;
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
42 if (rename ("conftest.d1", "conftest.d2/") != 0) return 2;
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
43 #if HAVE_LSTAT
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
44 if (rename ("conftest.f", "conftest.lnk/") == 0) return 3;
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
45 #endif
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
46 ])],
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
47 [gl_cv_func_rename_slash_dst_works=yes],
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
48 [gl_cv_func_rename_slash_dst_works=no],
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
49 dnl When crosscompiling, assume rename is broken.
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
50 [gl_cv_func_rename_slash_dst_works="guessing no"])
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
51 rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
52 ])
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
53 if test "x$gl_cv_func_rename_slash_dst_works" != xyes; then
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
54 AC_LIBOBJ([rename])
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
55 REPLACE_RENAME=1
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
56 AC_DEFINE([RENAME_TRAILING_SLASH_DEST_BUG], [1],
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
57 [Define if rename does not correctly handle slashes on the destination
12096
1f43035b0900 rename-dest-slash: merge into rename module
Eric Blake <ebb9@byu.net>
parents: 12095
diff changeset
58 argument, such as on Solaris 10 or NetBSD 1.6.])
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
59 fi
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
60
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
61 dnl SunOS 4.1.1_U1 mistakenly forbids rename("dir/","name").
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
62 dnl Solaris 9 mistakenly allows rename("file/","name").
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
63 dnl FreeBSD 7.2 mistakenly allows rename("link-to-file/","name").
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
64 dnl These bugs require stripping trailing slash to avoid corrupting
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
65 dnl symlinks with a trailing slash.
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
66 AC_CACHE_CHECK([whether rename honors trailing slash on source],
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
67 [gl_cv_func_rename_slash_src_works],
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
68 [rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
69 touch conftest.f && mkdir conftest.d1 ||
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
70 AC_MSG_ERROR([cannot create temporary files])
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
71 # Assume that if we have lstat, we can also check symlinks.
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
72 if test $ac_cv_func_lstat = yes; then
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
73 ln -s conftest.f conftest.lnk
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
74 fi
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
75 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
3105
20833ed0761f Remove conftestdir{,2} before trying to create the directory.
Jim Meyering <jim@meyering.net>
parents: 3100
diff changeset
76 # include <stdio.h>
6744
3d99d01160aa * fsusage.m4 (gl_FILE_SYSTEM_USAGE): Use return, not exit.
Paul Eggert <eggert@cs.ucla.edu>
parents: 5907
diff changeset
77 # include <stdlib.h>
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
78 ]], [if (rename ("conftest.f/", "conftest.d2") == 0) return 1;
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
79 if (rename ("conftest.d1/", "conftest.d2") != 0) return 2;
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
80 #if HAVE_LSTAT
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
81 if (rename ("conftest.lnk/", "conftest.f") == 0) return 3;
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
82 #endif
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
83 ])],
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
84 [gl_cv_func_rename_slash_src_works=yes],
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
85 [gl_cv_func_rename_slash_src_works=no],
3105
20833ed0761f Remove conftestdir{,2} before trying to create the directory.
Jim Meyering <jim@meyering.net>
parents: 3100
diff changeset
86 dnl When crosscompiling, assume rename is broken.
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
87 [gl_cv_func_rename_slash_src_works="guessing no"])
12260
18ce29e54b9f rename: detect FreeBSD bug
Eric Blake <ebb9@byu.net>
parents: 12097
diff changeset
88 rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
3097
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
89 ])
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
90 if test "x$gl_cv_func_rename_slash_src_works" != xyes; then
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
91 AC_LIBOBJ([rename])
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
92 REPLACE_RENAME=1
12094
67458384fb3f rename: fix Solaris 10 bug
Eric Blake <ebb9@byu.net>
parents: 12093
diff changeset
93 AC_DEFINE([RENAME_TRAILING_SLASH_SOURCE_BUG], [1],
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
94 [Define if rename does not correctly handle slashes on the source
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
95 argument, such as on Solaris 9 or cygwin 1.5.])
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
96 fi
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
97
12097
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
98 dnl NetBSD 1.6 and cygwin 1.5.x mistakenly reduce hard link count
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
99 dnl on rename("h1","h2").
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
100 dnl This bug requires stat'ting targets prior to attempting rename.
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
101 AC_CACHE_CHECK([whether rename manages hard links correctly],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
102 [gl_cv_func_rename_link_works],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
103 [rm -rf conftest.f conftest.f1
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
104 if touch conftest.f && ln conftest.f conftest.f1 &&
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
105 set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
106 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
107 # include <stdio.h>
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
108 # include <stdlib.h>
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
109 # include <unistd.h>
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
110 ]], [if (rename ("conftest.f", "conftest.f1")) return 1;
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
111 if (unlink ("conftest.f1")) return 2;
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
112 if (rename ("conftest.f", "conftest.f")) return 3;
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
113 if (rename ("conftest.f1", "conftest.f1") == 0) return 4;])],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
114 [gl_cv_func_rename_link_works=yes],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
115 [gl_cv_func_rename_link_works=no],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
116 dnl When crosscompiling, assume rename is broken.
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
117 [gl_cv_func_rename_link_works="guessing no"])
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
118 else
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
119 gl_cv_func_rename_link_works="guessing no"
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
120 fi
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
121 rm -rf conftest.f conftest.f1
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
122 ])
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
123 if test "x$gl_cv_func_rename_link_works" != xyes; then
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
124 AC_LIBOBJ([rename])
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
125 REPLACE_RENAME=1
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
126 AC_DEFINE([RENAME_HARD_LINK_BUG], [1],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
127 [Define if rename fails to leave hard links alone, as on NetBSD 1.6
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
128 or Cygwin 1.5.])
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
129 fi
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
130
12095
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
131 dnl Cygwin 1.5.x mistakenly allows rename("dir","file").
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
132 dnl mingw mistakenly forbids rename("dir1","dir2").
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
133 dnl These bugs require stripping trailing slash to avoid corrupting
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
134 dnl symlinks with a trailing slash.
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
135 AC_CACHE_CHECK([whether rename manages existing destinations correctly],
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
136 [gl_cv_func_rename_dest_works],
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
137 [rm -rf conftest.f conftest.d1 conftest.d2
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
138 touch conftest.f && mkdir conftest.d1 conftest.d2 ||
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
139 AC_MSG_ERROR([cannot create temporary files])
12097
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
140 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
12095
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
141 # include <stdio.h>
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
142 # include <stdlib.h>
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
143 ]], [if (rename ("conftest.d1", "conftest.d2") != 0) return 1;
12097
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
144 if (rename ("conftest.d2", "conftest.f") == 0) return 2;])],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
145 [gl_cv_func_rename_dest_works=yes],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
146 [gl_cv_func_rename_dest_works=no],
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
147 dnl When crosscompiling, assume rename is broken.
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
148 [gl_cv_func_rename_dest_works="guessing no"])
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
149 rm -rf conftest.f conftest.d1 conftest.d2
11478
df9a59a3f8bc Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents: 11007
diff changeset
150 ])
12095
724dd32f13f7 rename: fix cygwin 1.5.x bugs
Eric Blake <ebb9@byu.net>
parents: 12094
diff changeset
151 if test "x$gl_cv_func_rename_dest_works" != xyes; then
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 7305
diff changeset
152 AC_LIBOBJ([rename])
11972
24ed6ac9fe07 rename: modernize replacement
Eric Blake <ebb9@byu.net>
parents: 11929
diff changeset
153 REPLACE_RENAME=1
12093
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
154 AC_DEFINE([RENAME_DEST_EXISTS_BUG], [1],
b07a0a61b0c1 rename: fix Solaris 9 bug
Eric Blake <ebb9@byu.net>
parents: 11972
diff changeset
155 [Define if rename does not work when the destination file exists,
12097
bb32464985d7 rename: fix another cygwin 1.5 bug
Eric Blake <ebb9@byu.net>
parents: 12096
diff changeset
156 as on Cygwin 1.5 or Windows.])
3097
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
157 fi
78239ec08d9d check for SunOS4.1.1U bug in rename
Jim Meyering <jim@meyering.net>
parents:
diff changeset
158 ])