annotate lib/renameat.c @ 17480:f40b3156a43e

selinux-at: omit unnecessary include * lib/selinux-at.c: Don't include dosname.h; not needed, since this source file doesn't use its macros, and subsidiary files that use the macros already include it.
author Paul Eggert <eggert@cs.ucla.edu>
date Fri, 23 Aug 2013 13:53:46 -0700
parents e542fd46ad6f
children 344018b6e5d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12099
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1 /* Rename a file relative to open directories.
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 16201
diff changeset
2 Copyright (C) 2009-2013 Free Software Foundation, Inc.
12099
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
3
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
4 This program is free software: you can redistribute it and/or modify
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
6 the Free Software Foundation; either version 3 of the License, or
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
7 (at your option) any later version.
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
8
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
12 GNU General Public License for more details.
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
13
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
16
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
17 /* written by Eric Blake */
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
18
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
19 #include <config.h>
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
20
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
21 #include <stdio.h>
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
22
12100
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
23 #if HAVE_RENAMEAT
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
24
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
25 # include <errno.h>
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
26 # include <stdbool.h>
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
27 # include <stdlib.h>
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
28 # include <string.h>
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
29 # include <sys/stat.h>
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
30
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
31 # include "dirname.h"
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
32 # include "openat.h"
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
33
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
34 # undef renameat
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
35
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
36 /* renameat does not honor trailing / on Solaris 10. Solve it in a
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
37 similar manner to rename. No need to worry about bugs not present
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
38 on Solaris, since all other systems either lack renameat or honor
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
39 trailing slash correctly. */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
40
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
41 int
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
42 rpl_renameat (int fd1, char const *src, int fd2, char const *dst)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
43 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
44 size_t src_len = strlen (src);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
45 size_t dst_len = strlen (dst);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
46 char *src_temp = (char *) src;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
47 char *dst_temp = (char *) dst;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
48 bool src_slash;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
49 bool dst_slash;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
50 int ret_val = -1;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
51 int rename_errno = ENOTDIR;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
52 struct stat src_st;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
53 struct stat dst_st;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
54
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
55 /* Let strace see any ENOENT failure. */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
56 if (!src_len || !dst_len)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
57 return renameat (fd1, src, fd2, dst);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
58
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
59 src_slash = src[src_len - 1] == '/';
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
60 dst_slash = dst[dst_len - 1] == '/';
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
61 if (!src_slash && !dst_slash)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
62 return renameat (fd1, src, fd2, dst);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
63
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
64 /* Presence of a trailing slash requires directory semantics. If
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
65 the source does not exist, or if the destination cannot be turned
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
66 into a directory, give up now. Otherwise, strip trailing slashes
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
67 before calling rename. */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
68 if (lstatat (fd1, src, &src_st))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
69 return -1;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
70 if (lstatat (fd2, dst, &dst_st))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
71 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
72 if (errno != ENOENT || !S_ISDIR (src_st.st_mode))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
73 return -1;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
74 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
75 else if (!S_ISDIR (dst_st.st_mode))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
76 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
77 errno = ENOTDIR;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
78 return -1;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
79 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
80 else if (!S_ISDIR (src_st.st_mode))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
81 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
82 errno = EISDIR;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
83 return -1;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
84 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
85
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
86 # if RENAME_TRAILING_SLASH_SOURCE_BUG
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
87 /* See the lengthy comment in rename.c why Solaris 9 is forced to
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
88 GNU behavior, while Solaris 10 is left with POSIX behavior,
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
89 regarding symlinks with trailing slash. */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
90 if (src_slash)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
91 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
92 src_temp = strdup (src);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
93 if (!src_temp)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
94 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
95 /* Rather than rely on strdup-posix, we set errno ourselves. */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
96 rename_errno = ENOMEM;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
97 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
98 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
99 strip_trailing_slashes (src_temp);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
100 if (lstatat (fd1, src_temp, &src_st))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
101 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
102 rename_errno = errno;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
103 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
104 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
105 if (S_ISLNK (src_st.st_mode))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
106 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
107 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
108 if (dst_slash)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
109 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
110 dst_temp = strdup (dst);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
111 if (!dst_temp)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
112 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
113 rename_errno = ENOMEM;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
114 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
115 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
116 strip_trailing_slashes (dst_temp);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
117 if (lstatat (fd2, dst_temp, &dst_st))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
118 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
119 if (errno != ENOENT)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
120 {
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
121 rename_errno = errno;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
122 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
123 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
124 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
125 else if (S_ISLNK (dst_st.st_mode))
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
126 goto out;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
127 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
128 # endif /* RENAME_TRAILING_SLASH_SOURCE_BUG */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
129
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
130 ret_val = renameat (fd1, src_temp, fd2, dst_temp);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
131 rename_errno = errno;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
132 out:
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
133 if (src_temp != src)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
134 free (src_temp);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
135 if (dst_temp != dst)
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
136 free (dst_temp);
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
137 errno = rename_errno;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
138 return ret_val;
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
139 }
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
140
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
141 #else /* !HAVE_RENAMEAT */
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
142
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
143 # include "openat-priv.h"
12099
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
144
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
145 /* Rename FILE1, in the directory open on descriptor FD1, to FILE2, in
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
146 the directory open on descriptor FD2. If possible, do it without
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
147 changing the working directory. Otherwise, resort to using
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
148 save_cwd/fchdir, then rename/restore_cwd. If either the save_cwd or
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
149 the restore_cwd fails, then give a diagnostic and exit nonzero. */
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
150
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
151 int
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
152 renameat (int fd1, char const *file1, int fd2, char const *file2)
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
153 {
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
154 return at_func2 (fd1, file1, fd2, file2, rename);
01c66cf797b5 renameat: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
155 }
12100
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
156
8e81b30aa8b7 renameat: fix Solaris bugs
Eric Blake <ebb9@byu.net>
parents: 12099
diff changeset
157 #endif /* !HAVE_RENAMEAT */