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, then 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 opera-
     tion.

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


RETURN VALUE

     A 0 value is returned if the operation  succeeds,  otherwise
     rename  returns  -1  and the global variable errno indicates
     the reason for the failure.


ERRORS

     Rename will fail and neither of the argument files  will  be
     affected if any of the following are true:

     [ENAMETOOLONG] A path name exceeds PATH_MAX characters.

     [ENOENT]       A component of the from path does not  exist,
                    or a path prefix 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 per-
                    mission.

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

     [EPERM]        The to file exists, the directory  containing
                    to is marked sticky, and neither the contain-
                    ing directory nor to are owned by the  effec-
                    tive user ID.

     [ELOOP]        Too many symbolic links were  encountered  in
                    translating either pathname.  (Minix-vmd)

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

     [ENOTDIR]      From is a directory, but to is not  a  direc-
                    tory.

     [EISDIR]       To is a directory, but from is not  a  direc-
                    tory.

     [EXDEV]        The link named by to and the  file  named  by
                    from  are  on different logical devices (file
                    systems).

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

     [EIO]          An I/O error occurred while making or  updat-
                    ing 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)