Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RENAME(2)		    BSD	System Calls Manual		     RENAME(2)

NAME
     rename -- change the name of a file

SYNOPSIS
     #include <stdio.h>

     int
     rename(const char *from, const char *to);

DESCRIPTION
     Rename() causes the link named from to be renamed as to.  If to exists,
     it	is first removed.  Both	from and to must be of the same	type (that is,
     both directories or both non-directories),	and must reside	on the same
     file system.

     Rename() guarantees that an instance of to	will always exist, even	if the
     system should crash in the	middle of the operation.

     If	the final component of from is a symbolic link,	the symbolic link is
     renamed, not the file or directory	to which it points.

RETURN VALUES
     A 0 value is returned if the operation succeeds, otherwise	rename() re-
     turns -1 and the global variable errno indicates the reason for the fail-
     ure.

ERRORS
     Rename() will fail	and neither of the argument files will be affected if:

     [ENAMETOOLONG]
		   A component of either pathname exceeded 255 characters, or
		   the entire length of	either path name exceeded 1023 charac-
		   ters.

     [ENOENT]	   A component of the from path	does not exist,	or a path pre-
		   fix of to does not exist.

     [EACCES]	   A component of either path prefix denies search permission.

     [EACCES]	   The requested link requires writing in a directory with a
		   mode	that denies write permission.

     [EPERM]	   The directory containing from is marked sticky, and neither
		   the containing directory nor	from are owned by the effec-
		   tive	user ID.

     [EPERM]	   The to file exists, the directory containing	to is marked
		   sticky, and neither the containing directory	nor to are
		   owned by the	effective user ID.

     [ELOOP]	   Too many symbolic links were	encountered in translating ei-
		   ther	pathname.

     [ENOTDIR]	   A component of either path prefix is	not a directory.

     [ENOTDIR]	   from	is a directory,	but to is not a	directory.

     [EISDIR]	   to is a directory, but from is not a	directory.

     [EXDEV]	   The link named by to	and the	file named by from are on dif-
		   ferent logical devices (file	systems).  Note	that this er-
		   ror code will not be	returned if the	implementation permits
		   cross-device	links.

     [ENOSPC]	   The directory in which the entry for	the new	name is	being
		   placed cannot be extended because there is no space left on
		   the file system containing the directory.

     [EDQUOT]	   The directory in which the entry for	the new	name is	being
		   placed cannot be extended because the user's	quota of disk
		   blocks on the file system containing	the directory has been
		   exhausted.

     [EIO]	   An I/O error	occurred while making or updating a directory
		   entry.

     [EROFS]	   The requested link requires writing in a directory on a
		   read-only file system.

     [EFAULT]	   Path	points outside the process's allocated address space.

     [EINVAL]	   From	is a parent directory of to, or	an attempt is made to
		   rename `.' or `..'.

     [ENOTEMPTY]   To is a directory and is not	empty.

SEE ALSO
     open(2), symlink(7)

STANDARDS
     The rename() function call	is expected to conform to ISO/IEC 9945-1:1990
     ("POSIX.1").

4.2 Berkeley Distribution	 June 4, 1993	     4.2 Berkeley Distribution

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=rename&sektion=2&manpath=FreeBSD+3.2-RELEASE>

home | help