Mercurial > hg > octave-lojdl > gnulib-hg
annotate lib/rename.c @ 11972:24ed6ac9fe07
rename: modernize replacement
* modules/rename (Depends-on): Add stdio.
(configure.ac): Declare witness.
* m4/rename.m4 (gl_FUNC_RENAME): Ensure dependency order, and let
stdio take care of replacement.
* m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Add new defaults.
* modules/stdio (Makefile.am): Substitute them.
* lib/stdio.in.h (rename): Declare replacement.
* lib/rename.c (includes): Allow cross-compilation to non-windows
machines.
* doc/posix-functions/rename.texi (rename): Improve
documentation.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Mon, 07 Sep 2009 11:27:05 -0600 |
parents | df9a59a3f8bc |
children | b07a0a61b0c1 |
rev | line source |
---|---|
11478
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
1 /* Work around rename bugs in some systems. On SunOS 4.1.1_U1 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
2 and mips-dec-ultrix4.4, rename fails when the source file has |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
3 a trailing slash. On mingw, rename fails when the destination |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
4 exists. |
7302
8a1a9361108c
* _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents:
6259
diff
changeset
|
5 |
11972 | 6 Copyright (C) 2001, 2002, 2003, 2005, 2006, 2009 Free Software |
7 Foundation, Inc. | |
3099 | 8 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7302
diff
changeset
|
9 This program is free software: you can redistribute it and/or modify |
3099 | 10 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7302
diff
changeset
|
11 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7302
diff
changeset
|
12 (at your option) any later version. |
3099 | 13 |
14 This program is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7302
diff
changeset
|
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
3099 | 21 |
22 /* written by Volker Borchert */ | |
23 | |
7302
8a1a9361108c
* _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents:
6259
diff
changeset
|
24 #include <config.h> |
11972 | 25 |
26 #include <stdio.h> | |
27 | |
4229
c7ddde35beec
Make this module usable in shared libraries.
Bruno Haible <bruno@clisp.org>
parents:
3782
diff
changeset
|
28 #undef rename |
c7ddde35beec
Make this module usable in shared libraries.
Bruno Haible <bruno@clisp.org>
parents:
3782
diff
changeset
|
29 |
11972 | 30 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ |
31 /* The mingw rename has problems with trailing slashes; it also | |
32 requires use of native Windows calls to allow atomic renames over | |
33 existing files. */ | |
11478
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
34 |
11972 | 35 # include <errno.h> |
36 | |
37 # define WIN32_LEAN_AND_MEAN | |
38 # include <windows.h> | |
11478
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
39 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
40 /* Rename the file SRC to DST. This replacement is necessary on |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
41 Windows, on which the system rename function will not replace |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
42 an existing DST. */ |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
43 int |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
44 rpl_rename (char const *src, char const *dst) |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
45 { |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
46 int error; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
47 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
48 /* MoveFileEx works if SRC is a directory without any flags, |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
49 but fails with MOVEFILE_REPLACE_EXISTING, so try without |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
50 flags first. */ |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
51 if (MoveFileEx (src, dst, 0)) |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
52 return 0; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
53 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
54 /* Retry with MOVEFILE_REPLACE_EXISTING if the move failed |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
55 * due to the destination already existing. */ |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
56 error = GetLastError (); |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
57 if (error == ERROR_FILE_EXISTS || error == ERROR_ALREADY_EXISTS) |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
58 { |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
59 if (MoveFileEx (src, dst, MOVEFILE_REPLACE_EXISTING)) |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
60 return 0; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
61 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
62 error = GetLastError (); |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
63 } |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
64 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
65 switch (error) |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
66 { |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
67 case ERROR_FILE_NOT_FOUND: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
68 case ERROR_PATH_NOT_FOUND: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
69 case ERROR_BAD_PATHNAME: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
70 case ERROR_DIRECTORY: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
71 errno = ENOENT; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
72 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
73 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
74 case ERROR_ACCESS_DENIED: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
75 case ERROR_SHARING_VIOLATION: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
76 errno = EACCES; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
77 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
78 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
79 case ERROR_OUTOFMEMORY: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
80 errno = ENOMEM; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
81 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
82 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
83 case ERROR_CURRENT_DIRECTORY: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
84 errno = EBUSY; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
85 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
86 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
87 case ERROR_NOT_SAME_DEVICE: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
88 errno = EXDEV; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
89 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
90 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
91 case ERROR_WRITE_PROTECT: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
92 errno = EROFS; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
93 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
94 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
95 case ERROR_WRITE_FAULT: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
96 case ERROR_READ_FAULT: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
97 case ERROR_GEN_FAILURE: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
98 errno = EIO; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
99 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
100 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
101 case ERROR_HANDLE_DISK_FULL: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
102 case ERROR_DISK_FULL: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
103 case ERROR_DISK_TOO_FRAGMENTED: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
104 errno = ENOSPC; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
105 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
106 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
107 case ERROR_FILE_EXISTS: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
108 case ERROR_ALREADY_EXISTS: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
109 errno = EEXIST; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
110 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
111 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
112 case ERROR_BUFFER_OVERFLOW: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
113 case ERROR_FILENAME_EXCED_RANGE: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
114 errno = ENAMETOOLONG; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
115 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
116 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
117 case ERROR_INVALID_NAME: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
118 case ERROR_DELETE_PENDING: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
119 errno = EPERM; /* ? */ |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
120 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
121 |
11972 | 122 # ifndef ERROR_FILE_TOO_LARGE |
11478
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
123 /* This value is documented but not defined in all versions of windows.h. */ |
11972 | 124 # define ERROR_FILE_TOO_LARGE 223 |
125 # endif | |
11478
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
126 case ERROR_FILE_TOO_LARGE: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
127 errno = EFBIG; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
128 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
129 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
130 default: |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
131 errno = EINVAL; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
132 break; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
133 } |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
134 |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
135 return -1; |
df9a59a3f8bc
Make rename replace existing destinations on Windows.
Ben Pfaff <blp@cs.stanford.edu>
parents:
9309
diff
changeset
|
136 } |
11972 | 137 |
138 #else /* ! W32 platform */ | |
3102
a17f2d7d7ee1
Include stdlib.h, string.h or strings.h, and xalloc.h.
Jim Meyering <jim@meyering.net>
parents:
3099
diff
changeset
|
139 |
11972 | 140 # if RENAME_DEST_EXISTS_BUG |
141 # error Please report your platform and this message to bug-gnulib@gnu.org. | |
142 # elif RENAME_TRAILING_SLASH_BUG | |
143 # include <stdio.h> | |
144 # include <stdlib.h> | |
145 # include <string.h> | |
146 | |
147 # include "dirname.h" | |
148 # include "xalloc.h" | |
3099 | 149 |
5907 | 150 /* Rename the file SRC to DST, removing any trailing |
151 slashes from SRC. Needed for SunOS 4.1.1_U1. */ | |
3099 | 152 |
153 int | |
5907 | 154 rpl_rename (char const *src, char const *dst) |
3099 | 155 { |
156 char *src_temp; | |
3102
a17f2d7d7ee1
Include stdlib.h, string.h or strings.h, and xalloc.h.
Jim Meyering <jim@meyering.net>
parents:
3099
diff
changeset
|
157 int ret_val; |
5907 | 158 size_t s_len = strlen (src); |
3099 | 159 |
5907 | 160 if (s_len && src[s_len - 1] == '/') |
3099 | 161 { |
5907 | 162 src_temp = xstrdup (src); |
3102
a17f2d7d7ee1
Include stdlib.h, string.h or strings.h, and xalloc.h.
Jim Meyering <jim@meyering.net>
parents:
3099
diff
changeset
|
163 strip_trailing_slashes (src_temp); |
3099 | 164 } |
165 else | |
5907 | 166 src_temp = (char *) src; |
3099 | 167 |
5907 | 168 ret_val = rename (src_temp, dst); |
3099 | 169 |
5907 | 170 if (src_temp != src) |
3099 | 171 free (src_temp); |
172 | |
3102
a17f2d7d7ee1
Include stdlib.h, string.h or strings.h, and xalloc.h.
Jim Meyering <jim@meyering.net>
parents:
3099
diff
changeset
|
173 return ret_val; |
3099 | 174 } |
11972 | 175 # endif /* RENAME_TRAILING_SLASH_BUG */ |
176 #endif /* ! W32 platform */ |