Annotation of cci/usr/src/man/man2/rename.2, revision 1.1.1.1

1.1       root        1: .TH RENAME 2 "12 February 1983"
                      2: .UC 4
                      3: .SH NAME
                      4: rename \- change the name of a file
                      5: .SH SYNOPSIS
                      6: .ft B
                      7: .nf
                      8: rename(from, to)
                      9: char *from, *to;
                     10: .fi
                     11: .ft R
                     12: .SH DESCRIPTION
                     13: .I Rename
                     14: causes the link named
                     15: .I from
                     16: to be renamed as
                     17: .IR to .
                     18: If 
                     19: .I to
                     20: exists, then it is first removed.
                     21: Both 
                     22: .I from
                     23: and
                     24: .I to
                     25: must be of the same type (that is, both directories or both
                     26: non-directories), and must reside on the same file system.
                     27: .PP
                     28: .I Rename
                     29: guarantees that an instance of
                     30: .I to
                     31: will always exist, even if the system should crash in
                     32: the middle of the operation.
                     33: .SH CAVEAT
                     34: The system can deadlock if a loop in the file system graph is present.
                     35: This loop takes the form of an entry in directory \*(lqa\*(rq,
                     36: say \*(lqa/foo\*(rq,
                     37: being a hard link to directory \*(lqb\*(rq, and an entry in
                     38: directory \*(lqb\*(rq, say \*(lqb/bar\*(rq, being a hard link
                     39: to directory \*(lqa\*(rq.
                     40: When such a loop exists and two separate processes attempt to
                     41: perform \*(lqrename a/foo b/bar\*(rq and \*(lqrename b/bar a/foo\*(rq,
                     42: respectively, 
                     43: the system may deadlock attempting to lock
                     44: both directories for modification.
                     45: Hard links to directories should be
                     46: replaced by symbolic links by the system administrator.
                     47: .SH "RETURN VALUE"
                     48: A 0 value is returned if the operation succeeds, otherwise
                     49: .I rename
                     50: returns \-1 and the global variable 
                     51: .I errno
                     52: indicates the reason for the failure.
                     53: .SH "ERRORS
                     54: .I Rename
                     55: will fail and neither of the argument files will be
                     56: affected if any of the following are true:
                     57: .TP 15
                     58: [ENOTDIR]
                     59: A component of either path prefix is not a directory.
                     60: .TP 15
                     61: [ENOENT]
                     62: A component of either path prefix does not exist.
                     63: .TP 15
                     64: [EACCES]
                     65: A component of either path prefix denies search permission.
                     66: .TP 15
                     67: [ENOENT]
                     68: The file named by \fIfrom\fP does not exist.
                     69: .TP 15
                     70: [EPERM]
                     71: The file named by \fIfrom\fP is a directory and the effective
                     72: user ID is not super-user.
                     73: .TP 15
                     74: [EXDEV]
                     75: The link named by \fIto\fP and the file named by \fIfrom\fP
                     76: are on different logical devices (file systems).  Note that this error
                     77: code will not be returned if the implementation permits cross-device
                     78: links.
                     79: .TP 15
                     80: [EACCES]
                     81: The requested link requires writing in a directory with a mode
                     82: that denies write permission.
                     83: .TP 15
                     84: [EROFS]
                     85: The requested link requires writing in a directory on a read-only file
                     86: system.
                     87: .TP 15
                     88: [EFAULT]
                     89: .I Path
                     90: points outside the process's allocated address space.
                     91: .TP 15
                     92: [EINVAL]
                     93: .I From
                     94: is a parent directory of
                     95: .IR to .
                     96: .SH "SEE ALSO"
                     97: open(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.