-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\" 1993 Michael Haardt;
-.\" 1993,1995 Ian Jackson.
+.\" and Copyright (C) 1993 Michael Haardt;
+.\" and Copyright (C) 1993,1995 Ian Jackson
+.\" and Copyright (C) 2006, 2014 Michael Kerrisk
.\"
+.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
.\"
.\" Modified Sat Jul 24 00:35:52 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Thu Jun 4 12:21:13 1998 by Andries Brouwer <aeb@cwi.nl>
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH RENAME 2 2009\-03\-30 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
+.\" all rights reserved.
+.\" Translated Fri Dec 12 00:15:52 JST 1997
+.\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated & Modified Thu Feb 10 07:23:59 JST 2005
+.\" by Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified Fri Apr 22 03:21:04 JST 2005 by Yuichi SATO
+.\" Updated 2007-05-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.44
+.\" Updated 2009-04-24, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.20
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH RENAME 2 2014\-05\-08 Linux "Linux Programmer's Manual"
.SH 名前
-rename \- ファイルの名前や位置を変更する
+rename, renameat, renameat2 \- ファイルの名前や位置を変更する
.SH 書式
+.nf
\fB#include <stdio.h>\fP
.sp
\fBint rename(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
+.sp
+\fB#include <fcntl.h> \fP/* AT_* 定数の定義 */
+\fB#include <stdio.h>\fP
+.sp
+\fBint renameat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP
+\fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
+
+\fBint renameat2(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP
+\fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照):
+.in
+.sp
+\fBrenameat\fP():
+.PD 0
+.ad l
+.RS 4
+.TP 4
+glibc 2.10 以降:
+_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+.TP
+glibc 2.10 より前:
+.\" FIXME need to define FTMs for renameat2(), once it hits glibc
+_ATFILE_SOURCE
+.RE
+.ad
+.PD
.SH 説明
\fBrename\fP() はファイルの名前を変更し、必要ならばディレクトリ間の移動を行なう。 そのファイルに対する (\fBlink\fP(2)
を使用して作られた) 他のハードリンク (hard link) には影響はない。 オープン済の \fIoldpath\fP
\fIoldpath\fP がシンボリックリンク (symbolic link) を参照している場合は、 リンクの名前が変更される。 また、
\fInewpath\fP がシンボリックリンクを参照している場合は、リンクが上書きされる。
+.SS "renameat ()"
+\fBrenameat\fP() システムコールは \fBrename\fP() と全く同様に動作するが、以下で説明する点が異なる。
+
+\fIoldpath\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIolddirfd\fP
+が参照するディレクトリに対する相対パスと解釈される (\fBrename\fP(2)
+に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。
+
+\fIoldpath\fP で指定されたパス名が相対パスで、 \fIolddirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBrename\fP(2)
+と同様に) \fIoldpath\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。
+
+\fIoldpath\fP で指定されたパス名が絶対パスの場合、 \fIolddirfd\fP は無視される。
+
+\fInewpath\fP の解釈は \fIoldpath\fP と同じである。 相対パスのパス名がファイルディスクリプター \fInewdirfd\fP
+が参照するディレクトリと解釈される点だけが異なる。
+
+\fBrenameat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。
+.SS renameat2()
+\fBrenameat2\fP() has an additional \fIflags\fP argument. A \fBrenameat2\fP() call
+with a zero \fIflags\fP argument is equivalent to \fBrenameat\fP().
+
+The \fIflags\fP argument is a bit mask consisting of zero or more of the
+following flags:
+.TP
+\fBRENAME_NOREPLACE\fP
+Don't overwrite \fInewpath\fP. of the rename. Return an error if \fInewpath\fP
+already exists.
+.TP
+\fBRENAME_EXCHANGE\fP
+Atomically exchange \fIoldpath\fP and \fInewpath\fP. Both pathnames must exist
+but may be of different types (e.g., one could be a non\-empty directory and
+the other a symbolic link).
.SH 返り値
成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
.SH エラー
\fBEBUSY\fP を返すことは規格では要求されていない点に注意すること。 このような場合に、rename をとにかく実行してみるのは何の問題もない。
ただし、そのような状況で、システムが他に返すエラーがない場合には \fBEBUSY\fP を返すことが許されている。)
.TP
+\fBEDQUOT\fP
+ディスクブロックか inode がそのファイルシステムのユーザクォータに達していた。
+.TP
\fBEFAULT\fP
\fIoldpath\fP や \fInewpath\fP がアクセス可能なアドレス空間の外を指している。
.TP
\fIoldpath\fP と \fInewpath\fP が同じマウントされたファイルシステムに存在しない。 (Linux は 1
つのファイルシステムを複数のマウント位置に マウントすることを許可している。 しかし \fBrename\fP()
は、たとえ同じファイルシステムであっても、 別々のマウント位置を跨いでは動作しない。)
+.PP
+\fBrenameat\fP() と \fBrenameat2\fP() では以下のエラーも発生する。
+.TP
+\fBEBADF\fP
+\fIolddirfd\fP か \fInewdirfd\fP が有効なファイルディスクリプタでない。
+.TP
+\fBENOTDIR\fP
+\fIoldpath\fP が相対パスで、 \fIolddirfd\fP がディレクトリ以外のファイルを参照している。または \fInewpath\fP と
+\fInewdirfd\fP に関して同じ状況である。
+.PP
+\fBrenameat2\fP() では以下のエラーも発生する。
+.TP
+\fBEEXIST\fP
+\fIflags\fP contains \fBRENAME_NOREPLACE\fP and \fInewpath\fP already exists.
+.TP
+\fBEINVAL\fP
+An invalid flag was specified in \fIflags\fP, or both \fBRENAME_NOREPLACE\fP and
+\fBRENAME_EXCHANGE\fP were specified.
+.TP
+\fBEINVAL\fP
+The filesystem does not support one of the flags in \fIflags\fP.
+.TP
+\fBENOENT\fP
+\fIflags\fP contains \fBRENAME_EXCHANGE\fP and \fInewpath\fP does not exist.
+.SH バージョン
+\fBrenameat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc
+に追加された。
+
+.\" FIXME glibc support is pending.
+\fBrenameat2\fP() はカーネル 2.6.16 で Linux に追加された。
.SH 準拠
-4.3BSD, C89, C99, POSIX.1\-2001.
+\fBrename\fP(): 4.3BSD, C89, C99, POSIX.1\-2001, POSIX.1\-2008.
+
+\fBrenameat\fP(): POSIX.1\-2008.
+
+\fBrenameat2\fP() は Linux 固有である。
.SH バグ
NFS ファイルシステムでは、操作が失敗したからといって、 ファイルの名前が変更できなかったと決めてかかることはできない。 サーバが rename
操作を終えてからクラッシュした場合、 サーバが再び立ち上がったときに、 再送信された RPC が処理されるが、これは失敗となる。
アプリケーションはこの問題を正しく取り扱うことが期待されている。 同様の問題について \fBlink\fP(2) にも書かれている。
.SH 関連項目
-\fBmv\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBrenameat\fP(2), \fBsymlink\fP(2),
-\fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
+\fBmv\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2),
+\fBpath_resolution\fP(7), \fBsymlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。