*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> rename (2)              
Title
Content
Arch
Section
 

RENAME(2)

Contents


NAME    [Toc]    [Back]

     rename - change the name of a file

SYNOPSIS    [Toc]    [Back]

     #include <stdio.h>

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

DESCRIPTION    [Toc]    [Back]

     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 if to already exists, 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    [Toc]    [Back]

     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    [Toc]    [Back]

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

     [ENAMETOOLONG]
                   A  component of a pathname exceeded {NAME_MAX}
characters,
                   or an entire  path  name  exceeded  {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 permission.

     [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 containing directory
nor to are
                   owned by the effective user ID.

     [ELOOP]       Too many symbolic links  were  encountered  in
translating either
 pathname.

     [EMLINK]       The link count on the source file or destination directory
                   is at the maximum.  A rename  cannot  be  completed under
                   these conditions.

     [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 different
  logical  devices (file systems).  Note
that this error
 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    [Toc]    [Back]

      
      
     open(2), symlink(7)

STANDARDS    [Toc]    [Back]

     The rename()  function  conforms  to  IEEE  Std  1003.1-1988
(``POSIX'').

CAVEATS    [Toc]    [Back]

     The  system  can deadlock if a loop in the file system graph
is present.
     This loop takes the form of an entry in directory  `a',  say
`a/foo', being
     a hard link to directory `b', and an entry in directory `b',
say `b/bar',
     being a hard link to directory `a'.  When such a loop exists
and two separate
  processes attempt to perform `rename a/foo b/bar' and
`rename b/bar
     a/foo', respectively, the system may deadlock attempting  to
lock both directories
  for  modification.   Hard  links  to  directories
should be replaced
     by symbolic links by the system administrator.

OpenBSD      3.6                           June      4,      1993
[ Back ]
 Similar pages
Name OS Title
chattr Linux change file attributes on a Linux second extended file system
chflags FreeBSD change file flags
chown Linux change ownership of a file
lchmod NetBSD change mode of file
chmod FreeBSD change mode of file
chmod OpenBSD change mode of file
chmod IRIX change mode of file
fchmod FreeBSD change mode of file
chmod Linux change permissions of a file
chmod OpenBSD change file modes
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service