|
|
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.