|
|
1.1 root 1: .\" Copyright (c) 1983 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted provided
5: .\" that: (1) source distributions retain this entire copyright notice and
6: .\" comment, and (2) distributions including binaries display the following
7: .\" acknowledgement: ``This product includes software developed by the
8: .\" University of California, Berkeley and its contributors'' in the
9: .\" documentation or other materials provided with the distribution and in
10: .\" all advertising materials mentioning features or use of this software.
11: .\" Neither the name of the University nor the names of its contributors may
12: .\" be used to endorse or promote products derived from this software without
13: .\" specific prior written permission.
14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: .\"
18: .\" @(#)rename.2 6.6 (Berkeley) 6/23/90
19: .\"
20: .TH RENAME 2 "June 23, 1990"
21: .UC 5
22: .SH NAME
23: rename \- change the name of a file
24: .SH SYNOPSIS
25: .ft B
26: .nf
27: rename(from, to)
28: char *from, *to;
29: .fi
30: .ft R
31: .SH DESCRIPTION
32: .I Rename
33: causes the link named
34: .I from
35: to be renamed as
36: .IR to .
37: If
38: .I to
39: exists, then it is first removed.
40: Both
41: .I from
42: and
43: .I to
44: must be of the same type (that is, both directories or both
45: non-directories), and must reside on the same file system.
46: .PP
47: .I Rename
48: guarantees that an instance of
49: .I to
50: will always exist, even if the system should crash in
51: the middle of the operation.
52: .PP
53: If the final component of
54: .I from
55: is a symbolic link,
56: the symbolic link is renamed,
57: not the file or directory to which it points.
58: .SH CAVEAT
59: The system can deadlock if a loop in the file system graph is present.
60: This loop takes the form of an entry in directory \*(lqa\*(rq,
61: say \*(lqa/foo\*(rq,
62: being a hard link to directory \*(lqb\*(rq, and an entry in
63: directory \*(lqb\*(rq, say \*(lqb/bar\*(rq, being a hard link
64: to directory \*(lqa\*(rq.
65: When such a loop exists and two separate processes attempt to
66: perform \*(lqrename a/foo b/bar\*(rq and \*(lqrename b/bar a/foo\*(rq,
67: respectively,
68: the system may deadlock attempting to lock
69: both directories for modification.
70: Hard links to directories should be
71: replaced by symbolic links by the system administrator.
72: .SH "RETURN VALUE"
73: A 0 value is returned if the operation succeeds, otherwise
74: .I rename
75: returns \-1 and the global variable
76: .I errno
77: indicates the reason for the failure.
78: .SH "ERRORS
79: .I Rename
80: will fail and neither of the argument files will be
81: affected if any of the following are true:
82: .TP 15
83: [EINVAL]
84: Either pathname contains a character with the high-order bit set.
85: .TP 15
86: [ENAMETOOLONG]
87: A component of either pathname exceeded 255 characters,
88: or the entire length of either path name exceeded 1023 characters.
89: .TP 15
90: [ENOENT]
91: A component of the \fIfrom\fP path does not exist,
92: or a path prefix of \fIto\fP does not exist.
93: .TP 15
94: [EACCES]
95: A component of either path prefix denies search permission.
96: .TP 15
97: [EACCES]
98: The requested link requires writing in a directory with a mode
99: that denies write permission.
100: .TP 15
101: [EPERM]
102: The directory containing \fIfrom\fP is marked sticky,
103: and neither the containing directory nor \fIfrom\fP
104: are owned by the effective user ID.
105: .TP 15
106: [EPERM]
107: The \fIto\fP file exists,
108: the directory containing \fIto\fP is marked sticky,
109: and neither the containing directory nor \fIto\fP
110: are owned by the effective user ID.
111: .TP 15
112: [ELOOP]
113: Too many symbolic links were encountered in translating either pathname.
114: .TP 15
115: [ENOTDIR]
116: A component of either path prefix is not a directory.
117: .TP 15
118: [ENOTDIR]
119: .I From
120: is a directory, but \fIto\fP is not a directory.
121: .TP 15
122: [EISDIR]
123: .I To
124: is a directory, but \fIfrom\fP is not a directory.
125: .TP 15
126: [EXDEV]
127: The link named by \fIto\fP and the file named by \fIfrom\fP
128: are on different logical devices (file systems). Note that this error
129: code will not be returned if the implementation permits cross-device
130: links.
131: .TP 15
132: [ENOSPC]
133: The directory in which the entry for the new name is being placed
134: cannot be extended because there is no space left on the file
135: system containing the directory.
136: .TP 15
137: [EDQUOT]
138: The directory in which the entry for the new name
139: is being placed cannot be extended because the
140: user's quota of disk blocks on the file system
141: containing the directory has been exhausted.
142: .TP 15
143: [EIO]
144: An I/O error occurred while making or updating a directory entry.
145: .TP 15
146: [EROFS]
147: The requested link requires writing in a directory on a read-only file
148: system.
149: .TP 15
150: [EFAULT]
151: .I Path
152: points outside the process's allocated address space.
153: .TP 15
154: [EINVAL]
155: .I From
156: is a parent directory of
157: .IR to ,
158: or an attempt is made to rename ``.'' or ``..''.
159: .TP 15
160: [ENOTEMPTY]
161: .I To
162: is a directory and is not empty.
163: .SH "SEE ALSO"
164: open(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.