OSDN Git Service

Complete open.2, printf.3, read.2, rename.2, write.2
authorAkihiro MOTOKI <amotoki@gmail.com>
Thu, 8 Jan 2015 21:07:20 +0000 (06:07 +0900)
committerAkihiro MOTOKI <amotoki@gmail.com>
Thu, 8 Jan 2015 21:07:59 +0000 (06:07 +0900)
draft/man2/open.2
draft/man2/read.2
draft/man2/rename.2
draft/man2/write.2
draft/man3/printf.3
po4a/stdio/po/ja.po
stats/stdio
untrans.html

index 352f9dd..b61ab43 100644 (file)
@@ -127,12 +127,11 @@ _ATFILE_SOURCE
 を使うとこのデフォルトを変更することができる。 ファイルオフセット
 (file offset) はファイルの先頭に設定される (\fBlseek\fP(2) 参照)。
 .PP
-A call to \fBopen\fP()  creates a new \fIopen file description\fP, an entry in the
-system\-wide table of open files.  The open file description records the file
-offset and the file status flags (see below).  A file descriptor is a
-reference to an open file description; this reference is unaffected if
-\fIpathname\fP is subsequently removed or modified to refer to a different
-file.  For further details on open file descriptions, see NOTES.
+\fBopen\fP()  を呼び出すと、「オープンファイル記述」 \fI(open file description)\fP
+が作成される。ファイル記述とは、システム全体のオープン中のファイルのテーブルのエントリである。
+このオープンファイル記述は、ファイルオフセットとファイル状態フラグ (下記参照) が保持する。
+ファイルディスクリプタはオープンファイルっ記述への参照である。 この後で \fIpathname\fP
+が削除されたり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けない。 オープンファイル記述の詳細な説明は「注意」の節を参照。
 .PP
 引き数 \fIflags\fP には、アクセスモード \fBO_RDONLY\fP, \fBO_WRONLY\fP, \fBO_RDWR\fP
 のどれかひとつが入っていなければならない。 これらはそれぞれ読み込み専用、書き込み専用、読み書き用に ファイルをオープンすることを要求するものである。
@@ -360,10 +359,9 @@ PID を組み合わせた名前) を作成し、 \fBlink\fP(2)  を使用して
 \fBfcntl\fP(2) の \fBF_GETFL\fP 操作を使ったオープンされたファイルの状態フラグの取得。 返されるフラグには \fBO_PATH\fP
 ビットが含まれる。
 .IP *
-Passing the file descriptor as the \fIdirfd\fP argument of \fBopenat\fP(2)  and
-the other "*at()" system calls.  This includes \fBlinkat\fP(2)  with
-\fBAT_EMPTY_PATH\fP (or via procfs using \fBAT_SYMLINK_FOLLOW\fP)  even if the
-file is not a directory.
+\fBopenat\fP(2) や他の "*at()" 系のシステムコールの \fIdirfd\fP 引数としてそのファイルディスクリプタを渡す。 これには、
+ファイルがディレクトリでない場合に \fBlinkat\fP(2) に \fBAT_EMPTY_PATH\fP が指定された場合 (や procfs 経由で
+\fBAT_SYMLINK_FOLLOW\fP が使用された場合) を含む。
 .IP *
 そのファイルディスクリプタを別のプロセスに UNIX ドメインソケット経由で渡す。 (\fBunix\fP(7) の \fBSCM_RIGHTS\fP を参照)
 .RE
@@ -614,24 +612,21 @@ Linux では、 \fBO_NONBLOCK\fP フラグは、 open を実行したいが read
 \fIst_ctime\fP と \fIst_mtime\fP も現在時刻に設定される。 それ以外の場合で、O_TRUNC フラグでファイルが修正されたときは、
 ファイルの \fIst_ctime\fP と \fIst_mtime\fP フィールドが現在時刻に設定される。
 .SS オープンファイル記述
-The term open file description is the one used by POSIX to refer to the
-entries in the system\-wide table of open files.  In other contexts, this
-object is variously also called an "open file object", a "file handle", an
-"open file table entry", or\(emin kernel\-developer parlance\(ema \fIstruct
-file\fP.
-
-When a file descriptor is duplicated (using \fBdup\fP(2)  or similar), the
-duplicate refers to the same open file description as the original file
-descriptor, and the two file descriptors consequently share the file offset
-and file status flags.  Such sharing can also occur between processes: a
-child process created via \fBfork\fP(2)  inherits duplicates of its parent's
-file descriptors, and those duplicates refer to the same open file
-descriptions.
+オープンファイル記述という用語は POSIX
+で使用されている用語で、オープンされているファイルのシステム共通のテーブルのエントリーを参照するものである。
+別の文脈では、このオブジェクトはいろいろな呼び方があり、
+「オープンファイルオブジェクト」、「ファイルハンドル」、「オープンファイルテーブルエントリー」、 カーネル開発者の用語では \fIstruct file\fP
+などと呼ばれる。
+
+ファイルディスクリプタが (\fBdup\fP(2) や同様のシステムコールを使って) 複製される際に、
+複製されたファイルディスクリプタは元のファイルディスクリプタと同じオープンファイル記述を参照する。 結果として 2
+つのファイルディスクリプタはファイルオフセットとファイル状態フラグを共有する。 このような共有はプロセス間でも起こり得る。 \fBfork\fP(2)
+で作成された子プロセスは親プロセスのファイルディスクリプタの複製を継承し、これらの複製は同じオープンファイル記述を参照する。
 
 .\"
 .\"
-Each \fBopen\fP(2)  of a file creates a new open file description; thus, there
-may be multiple open file descriptions corresponding to a file inode.
+1 つのファイルに対して \fBopen\fP(2) を行う毎に、新しいオープンファイル記述が作成される。 したがって、 1 つのファイル inode
+に対して複数のオープンファイル記述が存在することがありえる。
 .SS "同期 I/O"
 POSIX.1\-2008 の「同期 I/O」の選択肢として複数種類が規定されており、 動作を制御するために \fBopen\fP() フラグとして
 \fBO_SYNC\fP, \fBO_DSYNC\fP, \fBO_RSYNC\fP が規定されている。 この選択肢を実装がサポートしているかに関わらず、
@@ -696,18 +691,14 @@ Linux では、特別な、非標準なアクセスモードとして 3 (バイ
 \fBunlinkat\fP(2), \fButimensat\fP(2) \fBmkfifoat\fP(3), \fBscandirat\fP(3))
 は二つの理由から用意されている。 ここでは、 \fBopenat\fP コールに関して説明するが、この基本原理は他のインターフェースでも同じである。
 
-First, \fBopenat\fP()  allows an application to avoid race conditions that
-could occur when using \fBopen\fP()  to open files in directories other than
-the current working directory.  These race conditions result from the fact
-that some component of the directory prefix given to \fBopen\fP()  could be
-changed in parallel with the call to \fBopen\fP().  Suppose, for example, that
-we wish to create the file \fIpath/to/xxx.dep\fP if the file \fIpath/to/xxx\fP
-exists.  The problem is that between the existence check and the file
-creation step, \fIpath\fP or \fIto\fP (which might be symbolic links)  could be
-modified to point to a different location.  Such races can be avoided by
-opening a file descriptor for the target directory, and then specifying that
-file descriptor as the \fIdirfd\fP argument of (say)  \fBfstatat\fP(2)  and
-\fBopenat\fP().
+最初の理由として、 \fBopenat\fP() を使うと、 アプリケーションは、 カレントワーキングディレクトリ以外のディレクトリで \fBopen\fP()
+を使ってファイルをオープンする際に起こり得る競合条件を避けることができる。 これらの競合条件は、 \fBopen\fP()
+に渡されたディレクトリプレフィックスの構成要素が \fBopen\fP() の呼び出しと並行して変化する可能性があるという点に由来している。 例えば、ファイル
+\fIpath/to/xxx\fP が存在する場合にファイル \fIpath/to/xxx.dep\fP を作成したいとする。
+問題は、存在確認とファイル作成の間に、 \fIpath\fP や \fIto\fP (シンボリックリンクでもよい)
+が別の場所を指すように変更されることがあるということだ。 このような競合条件は、 対象のディレクトリに対するファイルディスクリプタをオープンし、
+それから \fBfstatat\fP(2) や \fBopenat\fP() の \fIdirfd\fP 引き数としてそのファイルディスクリプタを指定することで、
+避けることができる。
 
 .\"
 .\"
@@ -723,12 +714,10 @@ file descriptor as the \fIdirfd\fP argument of (say)  \fBfstatat\fP(2)  and
 いくつかのファイルシステムでは、制限を確認するための独自のインタフェースが 提供されている。例えば、 \fBxfsctl\fP(3)  の
 \fBXFS_IOC_DIOINFO\fP 命令である。
 .LP
-Under Linux 2.4, transfer sizes, and the alignment of the user buffer and
-the file offset must all be multiples of the logical block size of the
-filesystem.  Since Linux 2.6.0, alignment to the logical block size of the
-underlying storage (typically 512 bytes) suffices.  The logical block size
-can be determined using the \fBioctl\fP(2)  \fBBLKSSZGET\fP operation or from the
-shell using the command:
+Linux 2.4 では、転送サイズ、 ユーザーバッファのアライメント、ファイルオフセットは、
+ファイルシステムの論理ブロックサイズの倍数でなければならない。 Linux 2.6.0 以降では、
+内部で使われるストレージの論理ブロックサイズのアライメント (通常は 512 バイト) で十分である。 論理ブロックサイズは \fBioctl\fP(2)
+\fBBLKSSZGET\fP 操作や以下のシェルコマンドから知ることができる。
 
     blockdev \-\-getss
 .LP
index a93aadc..407d087 100644 (file)
@@ -125,13 +125,12 @@ NFS において。少量のデータを読み込む場合、最初の時のみ
 は発生しないので st_atime の更新は行なわれからだ。 UNIX の方式では、クライアント側の属性のキャッシングを無効にすることで、
 これを得ることができる。しかしほとんどの状況ではこれは続くサーバーの 負荷を増加させ、パフォーマンスの低下をもたらす。
 .SH バグ
-According to POSIX.1\-2008/SUSv4 Section XSI 2.9.7 ("Thread Interactions with
-Regular File Operations"):
+POSIX.1\-2008/SUSv4 セクション XSI 2.9.7 ("Thread Interactions with Regular File
+Operations") によると、
 
 .RS 4
-All of the following functions shall be atomic with respect to each other in
-the effects specified in POSIX.1\-2008 when they operate on regular files or
-symbolic links: ...
+以下のすべての関数では、 通常ファイルもしくはシンボリックリンクに対する操作では POSIX.1\-2008
+で規定された効果が互いにアトミックに行われなければならない: ...
 .RE
 
 .\" http://thread.gmane.org/gmane.linux.kernel/1649458
@@ -144,15 +143,11 @@ symbolic links: ...
 .\"    Date:   Mon Mar 3 09:36:58 2014 -0800
 .\"
 .\"        vfs: atomic f_pos accesses as per POSIX
-Among the APIs subsequently listed are \fBread\fP()  and \fBreadv\fP(2).  And
-among the effects that should be atomic across threads (and processes)  are
-updates of the file offset.  However, on Linux before version 3.14, this was
-not the case: if two processes that share an open file description (see
-\fBopen\fP(2))  perform a \fBread\fP()  (or \fBreadv\fP(2))  at the same time, then
-the I/O operations were not atomic with respect updating the file offset,
-with the result that the reads in the two processes might (incorrectly)
-overlap in the blocks of data that they obtained.  This problem was fixed in
-Linux 3.14.
+この後に書かれている API の中に \fBread\fP() と \fBreadv\fP(2) である。 スレッド(やプロセス)
+間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux
+では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に
+\fBread\fP() (や \fBreadv\fP(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、 2
+つのプロセスの read で取得されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。
 .SH 関連項目
 \fBclose\fP(2), \fBfcntl\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2), \fBpread\fP(2),
 \fBreaddir\fP(2), \fBreadlink\fP(2), \fBreadv\fP(2), \fBselect\fP(2), \fBwrite\fP(2),
index b971a89..0461433 100644 (file)
@@ -124,20 +124,17 @@ _ATFILE_SOURCE
 
 \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().
+\fBrenameat2\fP() には追加の \fIflags\fP 引き数がある。 \fIflags\fP 引き数が 0 の \fBrenameat2\fP()
+の呼び出しは \fBrenameat\fP() と等価である。
 
-The \fIflags\fP argument is a bit mask consisting of zero or more of the
-following flags:
+\fIflags\fP 引き数は、以下のフラグの 0 個以上のビットマスクである。
 .TP 
 \fBRENAME_NOREPLACE\fP
-Don't overwrite \fInewpath\fP.  of the rename.  Return an error if \fInewpath\fP
-already exists.
+rename の \fInewpath\fP を上書きしない。 \fInewpath\fP がすでに存在する場合エラーを返す。
 .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).
+\fIoldpath\fP と \fInewpath\fP をアトミックに入れ換える。 両方のパス名が存在しなければならないが、 ファイル種別は異なっていてもよい
+(例えば、一方は空でないディレクトリで、もう一方はシンボリックリンクであるなど)。
 .SH 返り値
 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
 .SH エラー
@@ -223,17 +220,16 @@ the other a symbolic link).
 \fBrenameat2\fP() では以下のエラーも発生する。
 .TP 
 \fBEEXIST\fP
-\fIflags\fP contains \fBRENAME_NOREPLACE\fP and \fInewpath\fP already exists.
+\fIflags\fP に \fBRENAME_NOREPLACE\fP が指定されているが、 \fInewpath\fP がすでに存在する。
 .TP 
 \fBEINVAL\fP
-An invalid flag was specified in \fIflags\fP, or both \fBRENAME_NOREPLACE\fP and
-\fBRENAME_EXCHANGE\fP were specified.
+\fIflags\fP に無効なフラグが指定された。 \fBRENAME_NOREPLACE\fP と \fBRENAME_EXCHANGE\fP の両方が指定された。
 .TP 
 \fBEINVAL\fP
-The filesystem does not support one of the flags in \fIflags\fP.
+\fIflags\fP にファイルシステムでサポートされていないフラグが指定された。
 .TP 
 \fBENOENT\fP
-\fIflags\fP contains \fBRENAME_EXCHANGE\fP and \fInewpath\fP does not exist.
+\fIflags\fP に \fBRENAME_EXCHANGE\fP が指定されたが、 \fInewpath\fP が存在しない。
 .SH バージョン
 \fBrenameat\fP()  はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc
 に追加された。
index c03621a..aefd4a6 100644 (file)
@@ -149,13 +149,12 @@ SVr4 では write が割り込まれると、データが書き込まれる直
 \fBwrite\fP()  が 1 バイトも書き込まないうちにシグナルハンドラにより割り込まれた場合、 \fBwrite\fP()  はエラー \fBEINTR\fP
 で失敗する。 1バイトでも書き込んだ後で割り込まれた場合には、 \fBwrite\fP()  は成功し、書き込んだバイト数を返す。
 .SH バグ
-According to POSIX.1\-2008/SUSv4 Section XSI 2.9.7 ("Thread Interactions with
-Regular File Operations"):
+POSIX.1\-2008/SUSv4 セクション XSI 2.9.7 ("Thread Interactions with Regular File
+Operations") によると、
 
 .RS 4
-All of the following functions shall be atomic with respect to each other in
-the effects specified in POSIX.1\-2008 when they operate on regular files or
-symbolic links: ...
+以下のすべての関数では、 通常ファイルもしくはシンボリックリンクに対する操作では POSIX.1\-2008
+で規定された効果が互いにアトミックに行われなければならない: ...
 .RE
 
 .\" http://thread.gmane.org/gmane.linux.kernel/1649458
@@ -168,14 +167,11 @@ symbolic links: ...
 .\"    Date:   Mon Mar 3 09:36:58 2014 -0800
 .\"
 .\"        vfs: atomic f_pos accesses as per POSIX
-Among the APIs subsequently listed are \fBwrite\fP()  and \fBwritev\fP(2).  And
-among the effects that should be atomic across threads (and processes)  are
-updates of the file offset.  However, on Linux before version 3.14, this was
-not the case: if two processes that share an open file description (see
-\fBopen\fP(2))  perform a \fBwrite\fP()  (or \fBwritev\fP(2))  at the same time, then
-the I/O operations were not atomic with respect updating the file offset,
-with the result that the blocks of data output by the two processes might
-(incorrectly) overlap.  This problem was fixed in Linux 3.14.
+この後に書かれている API の中に \fBwrite\fP() と \fBwritev\fP(2) である。 スレッド(やプロセス)
+間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux
+では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に
+\fBwrite\fP() (や \fBwritev\fP(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、
+2 つのプロセスから出力されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。
 .SH 関連項目
 \fBclose\fP(2), \fBfcntl\fP(2), \fBfsync\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2),
 \fBpwrite\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBwritev\fP(2), \fBfwrite\fP(3)
index f27ef8f..05f5b57 100644 (file)
@@ -251,23 +251,19 @@ long int\fP へのポインタ、 \fBc\fP 変換では \fIwint_t\fP、 \fBs\fP 
 であることを示す。 (C99 では %LF を使うことを認めているが、SUSv2 では認められていない。) これは \fBll\fP の同義語である。
 .TP 
 \fBj\fP
-A following integer conversion corresponds to an \fIintmax_t\fP or \fIuintmax_t\fP
-argument, or a following \fBn\fP conversion corresponds to a pointer to an
-\fIintmax_t\fP argument.
+整数変換に対応する引き数が \fIintmax_t\fP か \fIuintmax_t\fP で、 \fBn\fP 変換に対応する引き数が \fIintmax_t\fP
+へのポインタであることを示す。
 .TP 
 \fBz\fP
 .\" (Linux libc5 has
 .\" .B Z
 .\" with this meaning.
 .\" Don't use it.)
-A following integer conversion corresponds to a \fIsize_t\fP or \fIssize_t\fP
-argument, or a following \fBn\fP conversion corresponds to a pointer to a
-\fIsize_t\fP argument.
+整数変換に対応する引き数が \fIsize_t\fP か \fIssize_t\fP で、 \fBn\fP 変換に対応する引き数が \fIsize_t\fP
+へのポインタであることを示す。
 .TP 
 \fBt\fP
-A following integer conversion corresponds to a \fIptrdiff_t\fP argument, or a
-following \fBn\fP conversion corresponds to a pointer to a \fIptrdiff_t\fP
-argument.
+整数変換に対応する引き数が \fIptrdiff_t\fP で、 \fBn\fP 変換に対応する引き数が \fIptrdiff_t\fP へのポインタであることを示す。
 .PP
 SUSv3 では上記のすべてが規定されている。 SUSv2 で規定されていたのは、 長さ修飾子 \fBh\fP (\fBhd\fP, \fBhi\fP, \fBho\fP,
 \fBhx\fP, \fBhX\fP, \fBhn\fP), \fBl\fP (\fBld\fP, \fBli\fP, \fBlo\fP, \fBlx\fP, \fBlX\fP, \fBln\fP, \fBlc\fP,
@@ -298,12 +294,10 @@ SUSv3 では上記のすべてが規定されている。 SUSv2 で規定され
 精度が指定されていない場合には 6 として扱われる。 精度として明示的に 0 が指定されたときには、小数点以下は表示されない。
 小数点を表示する際には、小数点の前に少なくとも一桁は数字が表示される。
 
-(SUSv2 does not know about \fBF\fP and says that character string
-representations for infinity and NaN may be made available.  SUSv3 adds a
-specification for \fBF\fP.  The C99 standard specifies "[\-]inf" or
-"[\-]infinity" for infinity, and a string starting with "nan" for NaN, in the
-case of \fBf\fP conversion, and "[\-]INF" or "[\-]INFINITY" or "NAN*" in the case
-of \fBF\fP conversion.)
+(SUSv2 では、\fBF\fP は規定されておらず、無限や NaN に関する文字列表現を行ってもよいことになっている。 SUSv3 では \fBF\fP
+の規定が追加された。 C99 標準では、\fBf\fP 変換では、無限は "[\-]inf" か "[\-]infinity" と表示し、 NaN
+は文字列の先頭に `nan' をつけて表示するように規定されている。 \fBF\fP 変換の場合は "[\-]INF", "[\-]INFINITY",
+"NAN*" と表示される。)
 .TP 
 \fBg\fP, \fBG\fP
 \fIdouble\fP 引き数を \fBf\fP か \fBe\fP (\fBG\fP 変換の場合は \fBF\fP か \fBE\fP)  の形式に変換する。
@@ -312,16 +306,17 @@ of \fBF\fP conversion.)
 小数点以下に数字が少なくとも一つある場合にだけである。
 .TP 
 \fBa\fP, \fBA\fP
-(C99; not in SUSv2, but added in SUSv3)  For \fBa\fP conversion, the \fIdouble\fP
-argument is converted to hexadecimal notation (using the letters abcdef)  in
-the style [\-]\fB0x\fPh\fB\&.\fPhhhh\fBp\fP\(+-; for \fBA\fP conversion the prefix \fB0X\fP,
-the letters ABCDEF, and the exponent separator \fBP\fP is used.  There is one
-hexadecimal digit before the decimal point, and the number of digits after
-it is equal to the precision.  The default precision suffices for an exact
-representation of the value if an exact representation in base 2 exists and
-otherwise is sufficiently large to distinguish values of type \fIdouble\fP.
-The digit before the decimal point is unspecified for nonnormalized numbers,
-and nonzero but otherwise unspecified for normalized numbers.
+(C99 にはあるが SUSv2 にはないが SUSv3 で追加された)
+\fBa\fP 変換では、 \fIdouble\fP 引き数を
+(abcdef の文字を使って) [\-]\fB0x\fPh\fB\&.\fPhhhh\fBp\fP\(+- 形式の
+16 進表記に変換する。
+\fBA\fP 変換では、前置文字列 \fB0X\fP, 文字 ABCDEF, 指数文字 \fBP\fP を用いる。
+小数点の前には 1 桁の 16 進数が置かれ、小数点の後ろの桁数は 精度で指定
+された値となる。デフォルトの精度は、その値が 2 進数で正確に表現できる
+場合には、その値を正確に表現できる桁数となる。それ以外の場合は、
+\fIdouble\fP 型の値を区別するのに十分な大きさとなる。 小数点の前の数字は、
+正規化されていない数の場合はいくつになるか分からない。 正規化された数の
+場合は、 0 以外の値になるが、いくつになるかは分からない。
 .TP 
 \fBc\fP
 \fBl\fP 修飾子がなければ、 \fIint\fP 引き数を \fIunsigned char\fP に変換して、その結果に対応する文字を出力する。 \fBl\fP
@@ -344,22 +339,18 @@ and nonzero but otherwise unspecified for normalized numbers.
 精度の値を超える場合だけは、配列はヌルワイド文字で終端されていなくてもよい。 それ以外の場合は、必ず配列はヌルワイド文字で終端されていなければならない。
 .TP 
 \fBC\fP
-(Not in C99 or C11, but in SUSv2, SUSv3, and SUSv4.)  Synonym for \fBlc\fP.
-Don't use.
+(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある)  \fBlc\fP と同じ。使ってはならない。
 .TP 
 \fBS\fP
-(Not in C99 or C11, but in SUSv2, SUSv3, and SUSv4.)  Synonym for \fBls\fP.
-Don't use.
+(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある)  \fBls\fP と同じ。使ってはならない。
 .TP 
 \fBp\fP
 \fIvoid\ *\fP ポインタ引き数を (\fB%#x\fP や \fB%#lx\fP のような) 16 進数で出力する。
 .TP 
 \fBn\fP
-The number of characters written so far is stored into the integer pointed
-to by the corresponding argument.  That argument shall be an \fIint\ * ,\fP or
-variant whose size matches the (optionally)  supplied integer length
-modifier.  No argument is converted.  The behavior is undefined if the
-conversion specification includes any flags, a field width, or a precision.
+これまでに書き込まれた文字数が対応する引き数が指す整数に格納される。 この引き数は \fIint\ *\fP
+系でなければならず、そのサイズは指定された整数の長さ修飾子 (省略可能) と一致していなければならない。 引き数の変換は行われない。
+変換指定にフラグ、フィールド幅、精度に含まれていた場合の動作は不定である。
 .TP 
 \fBm\fP
 (glibc での拡張)  \fIstrerror(errno)\fP の出力を表示する。引き数は必要ない。
@@ -398,13 +389,10 @@ conversion specification includes any flags, a field width, or a precision.
 .\" .IR strerror(errno) .
 .\" .PP
 .\" glibc 2.0 adds conversion characters \fBC\fP and \fBS\fP.
-Concerning the return value of \fBsnprintf\fP(), SUSv2 and C99 contradict each
-other: when \fBsnprintf\fP()  is called with \fIsize\fP=0 then SUSv2 stipulates an
-unspecified return value less than 1, while C99 allows \fIstr\fP to be NULL in
-this case, and gives the return value (as always)  as the number of
-characters that would have been written in case the output string has been
-large enough.  SUSv3 and later align their specification of \fBsnprintf\fP()
-with C99.
+\fBsnprintf\fP()  の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 SUSv2 では、 \fBsnprintf\fP()
+が \fIsize\fP=0 で呼び出された場合、 1 未満の値を何か返り値とするように規定している。 一方 C99 では、このような場合 \fIstr\fP を
+NULL とし、返り値として (通常通り) 出力バッファが十分な大きさが あった場合に出力されるであろう文字数を返す。 SUSv3 やそれ以降では
+C99 の \fBsnprintf\fP() の規定にあわせたものとなっている。
 .PP
 glibc 2.1 では、長さ修飾子 \fBhh\fP, \fBj\fP, \fBt\fP, \fBz\fP と変換文字 \fBa\fP, \fBA\fP が追加された。
 .PP
index 59df474..26351a9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: 2015-01-06 03:03+0900\n"
-"PO-Revision-Date: 2015-01-06 03:11+0900\n"
+"PO-Revision-Date: 2015-01-09 05:27+0900\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
@@ -6481,16 +6481,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man2/open.2:123
-#, fuzzy
-#| msgid ""
-#| "A call to B<open>()  creates a new I<open file description>, an entry in "
-#| "the system-wide table of open files.  This entry records the file offset "
-#| "and the file status flags (modifiable via the B<fcntl>(2)  B<F_SETFL> "
-#| "operation).  A file descriptor is a reference to one of these entries; "
-#| "this reference is unaffected if I<pathname> is subsequently removed or "
-#| "modified to refer to a different file.  The new open file description is "
-#| "initially not shared with any other process, but sharing may arise via "
-#| "B<fork>(2)."
 msgid ""
 "A call to B<open>()  creates a new I<open file description>, an entry in the "
 "system-wide table of open files.  The open file description records the file "
@@ -6498,15 +6488,7 @@ msgid ""
 "reference to an open file description; this reference is unaffected if "
 "I<pathname> is subsequently removed or modified to refer to a different "
 "file.  For further details on open file descriptions, see NOTES."
-msgstr ""
-"B<open>()  を呼び出すと、「オープンファイル記述」 I<(open file description)> "
-"が作成される。ファイル記述とは、システム全体の オープン中のファイルのテーブル"
-"のエントリである。 このエントリは、ファイルオフセットとファイル状態フラグ "
-"(B<fcntl>(2)  B<F_SETFL> 操作により変更可能) が保持する。 ファイルディスクリ"
-"プタはこれらのエントリの一つへの参照である。 この後で I<pathname> が削除され"
-"たり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けな"
-"い。 新しいオープンファイル記述は最初は他のどのプロセスとも 共有されていない"
-"が、 B<fork>(2)  で共有が起こる場合がある。"
+msgstr "B<open>()  を呼び出すと、「オープンファイル記述」 I<(open file description)> が作成される。ファイル記述とは、システム全体のオープン中のファイルのテーブルのエントリである。 このオープンファイル記述は、ファイルオフセットとファイル状態フラグ (下記参照) が保持する。 ファイルディスクリプタはオープンファイルっ記述への参照である。 この後で I<pathname> が削除されたり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けない。 オープンファイル記述の詳細な説明は「注意」の節を参照。"
 
 #. type: Plain text
 #: build/C/man2/open.2:131
@@ -7185,18 +7167,12 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man2/open.2:566
-#, fuzzy
-#| msgid ""
-#| "Passing the file descriptor as the I<dirfd> argument of B<openat>(2)  and "
-#| "the other \"*at()\" system calls."
 msgid ""
 "Passing the file descriptor as the I<dirfd> argument of B<openat>(2)  and "
 "the other \"*at()\" system calls.  This includes B<linkat>(2)  with "
 "B<AT_EMPTY_PATH> (or via procfs using B<AT_SYMLINK_FOLLOW>)  even if the "
 "file is not a directory."
-msgstr ""
-"B<openat>(2) や他の \"*at()\" 系のシステムコールの I<dirfd> 引数としてその"
-"ファイルディスクリプタを渡す。"
+msgstr "B<openat>(2) や他の \"*at()\" 系のシステムコールの I<dirfd> 引数としてそのファイルディスクリプタを渡す。 これには、 ファイルがディレクトリでない場合に B<linkat>(2) に B<AT_EMPTY_PATH> が指定された場合 (や procfs 経由で B<AT_SYMLINK_FOLLOW> が使用された場合) を含む。"
 
 #. type: Plain text
 #: build/C/man2/open.2:572
@@ -7938,7 +7914,7 @@ msgid ""
 "object is variously also called an \"open file object\", a \"file handle\", "
 "an \"open file table entry\", or\\(emin kernel-developer parlance\\(ema "
 "I<struct file>."
-msgstr ""
+msgstr "オープンファイル記述という用語は POSIX で使用されている用語で、オープンされているファイルのシステム共通のテーブルのエントリーを参照するものである。 別の文脈では、このオブジェクトはいろいろな呼び方があり、 「オープンファイルオブジェクト」、「ファイルハンドル」、「オープンファイルテーブルエントリー」、 カーネル開発者の用語では I<struct file> などと呼ばれる。"
 
 #. type: Plain text
 #: build/C/man2/open.2:1126
@@ -7950,14 +7926,14 @@ msgid ""
 "child process created via B<fork>(2)  inherits duplicates of its parent's "
 "file descriptors, and those duplicates refer to the same open file "
 "descriptions."
-msgstr ""
+msgstr "ファイルディスクリプタが (B<dup>(2) や同様のシステムコールを使って) 複製される際に、 複製されたファイルディスクリプタは元のファイルディスクリプタと同じオープンファイル記述を参照する。 結果として 2 つのファイルディスクリプタはファイルオフセットとファイル状態フラグを共有する。 このような共有はプロセス間でも起こり得る。 B<fork>(2) で作成された子プロセスは親プロセスのファイルディスクリプタの複製を継承し、これらの複製は同じオープンファイル記述を参照する。"
 
 #. type: Plain text
 #: build/C/man2/open.2:1134
 msgid ""
 "Each B<open>(2)  of a file creates a new open file description; thus, there "
 "may be multiple open file descriptions corresponding to a file inode."
-msgstr ""
+msgstr "1 つのファイルに対して B<open>(2) を行う毎に、新しいオープンファイル記述が作成される。 したがって、 1 つのファイル inode に対して複数のオープンファイル記述が存在することがありえる。"
 
 #. type: SS
 #: build/C/man2/open.2:1134
@@ -8163,16 +8139,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man2/open.2:1336
-#, fuzzy
-#| msgid ""
-#| "First, B<openat>()  allows an application to avoid race conditions that "
-#| "could occur when using B<open>()  to open files in directories other than "
-#| "the current working directory.  These race conditions result from the "
-#| "fact that some component of the directory prefix given to B<open>()  "
-#| "could be changed in parallel with the call to B<open>().  Such races can "
-#| "be avoided by opening a file descriptor for the target directory, and "
-#| "then specifying that file descriptor as the I<dirfd> argument of "
-#| "B<openat>()."
 msgid ""
 "First, B<openat>()  allows an application to avoid race conditions that "
 "could occur when using B<open>()  to open files in directories other than "
@@ -8186,15 +8152,7 @@ msgid ""
 "opening a file descriptor for the target directory, and then specifying that "
 "file descriptor as the I<dirfd> argument of (say)  B<fstatat>(2)  and "
 "B<openat>()."
-msgstr ""
-"最初の理由として、 B<openat>() を使うと、 アプリケーションは、 カレントワーキ"
-"ングディレクトリ以外のディレクトリで B<open>() を使ってファイルをオープンする"
-"際に起こり得る競合条件を避けることができる。 これらの競合条件は、 B<open>() "
-"に渡されたディレクトリプレフィックスの構成要素が B<open>() の呼び出しと並行し"
-"て変化する可能性があるという点に由来している。 このような競合条件は、 対象の"
-"ディレクトリに対するファイルディスクリプタをオープンし、 それから "
-"B<openat>() の I<dirfd> 引き数としてそのファイルディスクリプタを指定すること"
-"で、 避けることができる。"
+msgstr "最初の理由として、 B<openat>() を使うと、 アプリケーションは、 カレントワーキングディレクトリ以外のディレクトリで B<open>() を使ってファイルをオープンする際に起こり得る競合条件を避けることができる。 これらの競合条件は、 B<open>() に渡されたディレクトリプレフィックスの構成要素が B<open>() の呼び出しと並行して変化する可能性があるという点に由来している。 例えば、ファイル I<path/to/xxx> が存在する場合にファイル I<path/to/xxx.dep> を作成したいとする。 問題は、存在確認とファイル作成の間に、 I<path> や I<to> (シンボリックリンクでもよい) が別の場所を指すように変更されることがあるということだ。 このような競合条件は、 対象のディレクトリに対するファイルディスクリプタをオープンし、 それから B<fstatat>(2) や B<openat>() の I<dirfd> 引き数としてそのファイルディスクリプタを指定することで、 避けることができる。"
 
 #. type: Plain text
 #: build/C/man2/open.2:1347
@@ -8237,11 +8195,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man2/open.2:1374
-#, fuzzy
-#| msgid ""
-#| "Under Linux 2.4, transfer sizes, and the alignment of the user buffer and "
-#| "the file offset must all be multiples of the logical block size of the "
-#| "filesystem.  Under Linux 2.6, alignment to 512-byte boundaries suffices."
 msgid ""
 "Under Linux 2.4, transfer sizes, and the alignment of the user buffer and "
 "the file offset must all be multiples of the logical block size of the "
@@ -8249,16 +8202,13 @@ msgid ""
 "underlying storage (typically 512 bytes) suffices.  The logical block size "
 "can be determined using the B<ioctl>(2)  B<BLKSSZGET> operation or from the "
 "shell using the command:"
-msgstr ""
-"Linux 2.4 では、転送サイズ、 ユーザーバッファのアラインメント、ファイルオフ"
-"セットは、 ファイルシステムの論理ブロックサイズの倍数でなければならない。 "
-"Linux 2.6 では、512 バイトごとの境界に配置されていれば充分である。"
+msgstr "Linux 2.4 では、転送サイズ、 ユーザーバッファのアライメント、ファイルオフセットは、 ファイルシステムの論理ブロックサイズの倍数でなければならない。 Linux 2.6.0 以降では、 内部で使われるストレージの論理ブロックサイズのアライメント (通常は 512 バイト) で十分である。 論理ブロックサイズは B<ioctl>(2) B<BLKSSZGET> 操作や以下のシェルコマンドから知ることができる。"
 
 #. type: Plain text
 #: build/C/man2/open.2:1376
 #, no-wrap
 msgid "    blockdev --getss\n"
-msgstr ""
+msgstr "    blockdev --getss\n"
 
 #. type: Plain text
 #: build/C/man2/open.2:1410
@@ -8573,22 +8523,13 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man2/open_by_handle_at.2:170
-#, fuzzy
-#| msgid ""
-#| "If I<pathname> is a nonempty string containing a relative pathname and "
-#| "I<dirfd> has the special value B<AT_FDCWD>, then I<pathname> is "
-#| "interpreted relative to the current working directory of the caller, and "
-#| "a handle is returned for the file to which it refers."
 msgid ""
 "If I<pathname> is a nonempty string containing a relative pathname and "
 "I<dirfd> is a file descriptor referring to a directory, then I<pathname> is "
 "interpreted relative to the directory referred to by I<dirfd>, and a handle "
 "is returned for the file to which it refers.  (See B<openat>(2)  for an "
 "explanation of why \"directory file descriptors\" are useful.)"
-msgstr ""
-"I<pathname> が相対パスが入った空でない文字列で、 I<dirfd> が特別な値 "
-"B<AT_FDCWD> の場合、 I<pathname> は呼び出し元のカレントワーキングディレクトリ"
-"に対する相対パスと解釈され、 そのファイルを参照するハンドルが返される。"
+msgstr "I<pathname> が相対パスが入った空でない文字列で、 I<dirfd> がディレクトリを参照するファイルディスクリプタの場合、 I<pathname> は I<dirfd> が参照するディレクトリに対する相対パスと解釈され、 そのファイルを参照するハンドルが返される。(なぜ「ディレクトリファイルディスクリプタ」が役に立つのかについては B<openat>(2) を参照。)"
 
 #. type: Plain text
 #: build/C/man2/open_by_handle_at.2:184
@@ -10899,18 +10840,11 @@ msgstr "B<j>"
 
 #. type: Plain text
 #: build/C/man3/printf.3:535
-#, fuzzy
-#| msgid ""
-#| "A following integer conversion corresponds to a I<short int> or "
-#| "I<unsigned short int> argument, or a following B<n> conversion "
-#| "corresponds to a pointer to a I<short int> argument."
 msgid ""
 "A following integer conversion corresponds to an I<intmax_t> or I<uintmax_t> "
 "argument, or a following B<n> conversion corresponds to a pointer to an "
 "I<intmax_t> argument."
-msgstr ""
-"整数変換に対応する引き数が I<short int> か I<unsigned short int> で、 B<n> 変"
-"換に対応する引き数が I<short int> へのポインタであることを示す。"
+msgstr "整数変換に対応する引き数が I<intmax_t> か I<uintmax_t> で、 B<n> 変換に対応する引き数が I<intmax_t> へのポインタであることを示す。"
 
 #. type: TP
 #: build/C/man3/printf.3:535 build/C/man3/scanf.3:366
@@ -10924,18 +10858,11 @@ msgstr "B<z>"
 #.  Don't use it.)
 #. type: Plain text
 #: build/C/man3/printf.3:550
-#, fuzzy
-#| msgid ""
-#| "A following integer conversion corresponds to a I<short int> or "
-#| "I<unsigned short int> argument, or a following B<n> conversion "
-#| "corresponds to a pointer to a I<short int> argument."
 msgid ""
 "A following integer conversion corresponds to a I<size_t> or I<ssize_t> "
 "argument, or a following B<n> conversion corresponds to a pointer to a "
 "I<size_t> argument."
-msgstr ""
-"整数変換に対応する引き数が I<short int> か I<unsigned short int> で、 B<n> 変"
-"換に対応する引き数が I<short int> へのポインタであることを示す。"
+msgstr "整数変換に対応する引き数が I<size_t> か I<ssize_t> で、 B<n> 変換に対応する引き数が I<size_t> へのポインタであることを示す。"
 
 #. type: TP
 #: build/C/man3/printf.3:550 build/C/man3/scanf.3:359
@@ -10945,18 +10872,11 @@ msgstr "B<t>"
 
 #. type: Plain text
 #: build/C/man3/printf.3:559
-#, fuzzy
-#| msgid ""
-#| "A following integer conversion corresponds to a I<short int> or "
-#| "I<unsigned short int> argument, or a following B<n> conversion "
-#| "corresponds to a pointer to a I<short int> argument."
 msgid ""
 "A following integer conversion corresponds to a I<ptrdiff_t> argument, or a "
 "following B<n> conversion corresponds to a pointer to a I<ptrdiff_t> "
 "argument."
-msgstr ""
-"整数変換に対応する引き数が I<short int> か I<unsigned short int> で、 B<n> 変"
-"換に対応する引き数が I<short int> へのポインタであることを示す。"
+msgstr "整数変換に対応する引き数が I<ptrdiff_t> で、 B<n> 変換に対応する引き数が I<ptrdiff_t> へのポインタであることを示す。"
 
 #. type: Plain text
 #: build/C/man3/printf.3:589
@@ -11075,13 +10995,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/printf.3:672
-#, fuzzy
-#| msgid ""
-#| "(The SUSv2 does not know about B<F> and says that character string "
-#| "representations for infinity and NaN may be made available.  The C99 "
-#| "standard specifies \"[-]inf\" or \"[-]infinity\" for infinity, and a "
-#| "string starting with \"nan\" for NaN, in the case of B<f> conversion, and "
-#| "\"[-]INF\" or \"[-]INFINITY\" or \"NAN*\" in the case of B<F> conversion.)"
 msgid ""
 "(SUSv2 does not know about B<F> and says that character string "
 "representations for infinity and NaN may be made available.  SUSv3 adds a "
@@ -11089,13 +11002,7 @@ msgid ""
 "\"[-]infinity\" for infinity, and a string starting with \"nan\" for NaN, in "
 "the case of B<f> conversion, and \"[-]INF\" or \"[-]INFINITY\" or \"NAN*\" "
 "in the case of B<F> conversion.)"
-msgstr ""
-"(SUSv2 では、B<F> は規定されておらず、無限や NaN に関する文字列表現を\n"
-"行ってもよいことになっている。\n"
-" C99 標準では、B<f> 変換では、無限は \"[-]inf\" か \"[-]infinity\" と表示"
-"し、\n"
-"NaN は文字列の先頭に `nan' をつけて表示するように規定されている。\n"
-"B<F> 変換の場合は \"[-]INF\", \"[-]INFINITY\", \"NAN*\" と表示される。)"
+msgstr "(SUSv2 では、B<F> は規定されておらず、無限や NaN に関する文字列表現を行ってもよいことになっている。 SUSv3 では B<F> の規定が追加された。 C99 標準では、B<f> 変換では、無限は \"[-]inf\" か \"[-]infinity\" と表示し、 NaN は文字列の先頭に `nan' をつけて表示するように規定されている。 B<F> 変換の場合は \"[-]INF\", \"[-]INFINITY\", \"NAN*\" と表示される。)"
 
 #. type: TP
 #: build/C/man3/printf.3:672
@@ -11129,19 +11036,6 @@ msgstr "B<a>, B<A>"
 
 #. type: Plain text
 #: build/C/man3/printf.3:722
-#, fuzzy
-#| msgid ""
-#| "(C99; not in SUSv2) For B<a> conversion, the I<double> argument is "
-#| "converted to hexadecimal notation (using the letters abcdef)  in the "
-#| "style [-]B<0x>hB<\\&.>hhhhB<p>\\(+-; for B<A> conversion the prefix "
-#| "B<0X>, the letters ABCDEF, and the exponent separator B<P> is used.  "
-#| "There is one hexadecimal digit before the decimal point, and the number "
-#| "of digits after it is equal to the precision.  The default precision "
-#| "suffices for an exact representation of the value if an exact "
-#| "representation in base 2 exists and otherwise is sufficiently large to "
-#| "distinguish values of type I<double>.  The digit before the decimal point "
-#| "is unspecified for nonnormalized numbers, and nonzero but otherwise "
-#| "unspecified for normalized numbers."
 msgid ""
 "(C99; not in SUSv2, but added in SUSv3)  For B<a> conversion, the I<double> "
 "argument is converted to hexadecimal notation (using the letters abcdef)  in "
@@ -11155,7 +11049,8 @@ msgid ""
 "nonnormalized numbers, and nonzero but otherwise unspecified for normalized "
 "numbers."
 msgstr ""
-"(C99 にはあるが SUSv2 にはない) B<a> 変換では、 I<double> 引き数を\n"
+"(C99 にはあるが SUSv2 にはないが SUSv3 で追加された) \n"
+"B<a> 変換では、 I<double> 引き数を\n"
 "(abcdef の文字を使って) [-]B<0x>hB<\\&.>hhhhB<p>\\(+- 形式の\n"
 "16 進表記に変換する。\n"
 "B<A> 変換では、前置文字列 B<0X>, 文字 ABCDEF, 指数文字 B<P> を用いる。\n"
@@ -11253,12 +11148,10 @@ msgstr "B<C>"
 
 #. type: Plain text
 #: build/C/man3/printf.3:788
-#, fuzzy
-#| msgid "(Not in C99, but in SUSv2.)  Synonym for B<lc>.  Don't use."
 msgid ""
 "(Not in C99 or C11, but in SUSv2, SUSv3, and SUSv4.)  Synonym for B<lc>.  "
 "Don't use."
-msgstr "(C99 にはないが SUSv2 にはある)  B<lc> と同じ。使ってはならない。"
+msgstr "(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある)  B<lc> と同じ。使ってはならない。"
 
 #. type: TP
 #: build/C/man3/printf.3:788
@@ -11268,12 +11161,10 @@ msgstr "B<S>"
 
 #. type: Plain text
 #: build/C/man3/printf.3:794
-#, fuzzy
-#| msgid "(Not in C99, but in SUSv2.)  Synonym for B<ls>.  Don't use."
 msgid ""
 "(Not in C99 or C11, but in SUSv2, SUSv3, and SUSv4.)  Synonym for B<ls>.  "
 "Don't use."
-msgstr "(C99 にはないが SUSv2 にはある)  B<ls> と同じ。使ってはならない。"
+msgstr "(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある)  B<ls> と同じ。使ってはならない。"
 
 #. type: TP
 #: build/C/man3/printf.3:794 build/C/man3/scanf.3:502
@@ -11303,7 +11194,7 @@ msgid ""
 "variant whose size matches the (optionally)  supplied integer length "
 "modifier.  No argument is converted.  The behavior is undefined if the "
 "conversion specification includes any flags, a field width, or a precision."
-msgstr ""
+msgstr "これまでに書き込まれた文字数が対応する引き数が指す整数に格納される。 この引き数は I<int\\ *> 系でなければならず、そのサイズは指定された整数の長さ修飾子 (省略可能) と一致していなければならない。 引き数の変換は行われない。 変換指定にフラグ、フィールド幅、精度に含まれていた場合の動作は不定である。"
 
 #. type: TP
 #: build/C/man3/printf.3:813
@@ -11374,14 +11265,6 @@ msgstr ""
 #.  glibc 2.0 adds conversion characters \fBC\fP and \fBS\fP.
 #. type: Plain text
 #: build/C/man3/printf.3:883
-#, fuzzy
-#| msgid ""
-#| "Concerning the return value of B<snprintf>(), SUSv2 and C99 contradict "
-#| "each other: when B<snprintf>()  is called with I<size>=0 then SUSv2 "
-#| "stipulates an unspecified return value less than 1, while C99 allows "
-#| "I<str> to be NULL in this case, and gives the return value (as always)  "
-#| "as the number of characters that would have been written in case the "
-#| "output string has been large enough."
 msgid ""
 "Concerning the return value of B<snprintf>(), SUSv2 and C99 contradict each "
 "other: when B<snprintf>()  is called with I<size>=0 then SUSv2 stipulates an "
@@ -11390,12 +11273,7 @@ msgid ""
 "characters that would have been written in case the output string has been "
 "large enough.  SUSv3 and later align their specification of B<snprintf>()  "
 "with C99."
-msgstr ""
-"B<snprintf>()  の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 "
-"SUSv2 では、 B<snprintf>()  が I<size>=0 で呼び出された場合、 1 未満の値を何"
-"か返り値とするように規定している。 一方 C99 では、このような場合 I<str> を "
-"NULL とし、返り値として (通常通り) 出力バッファが十分な大きさが あった場合に"
-"出力されるであろう文字数を返す。"
+msgstr "B<snprintf>()  の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 SUSv2 では、 B<snprintf>()  が I<size>=0 で呼び出された場合、 1 未満の値を何か返り値とするように規定している。 一方 C99 では、このような場合 I<str> を NULL とし、返り値として (通常通り) 出力バッファが十分な大きさが あった場合に出力されるであろう文字数を返す。 SUSv3 やそれ以降では C99 の B<snprintf>() の規定にあわせたものとなっている。"
 
 #. type: Plain text
 #: build/C/man3/printf.3:886
@@ -12140,7 +12018,7 @@ msgstr ""
 msgid ""
 "According to POSIX.1-2008/SUSv4 Section XSI 2.9.7 (\"Thread Interactions "
 "with Regular File Operations\"):"
-msgstr ""
+msgstr "POSIX.1-2008/SUSv4 セクション XSI 2.9.7 (\"Thread Interactions with Regular File Operations\") によると、"
 
 #. type: Plain text
 #: build/C/man2/read.2:195 build/C/man2/write.2:219
@@ -12148,7 +12026,7 @@ msgid ""
 "All of the following functions shall be atomic with respect to each other in "
 "the effects specified in POSIX.1-2008 when they operate on regular files or "
 "symbolic links: ..."
-msgstr ""
+msgstr "以下のすべての関数では、 通常ファイルもしくはシンボリックリンクに対する操作では POSIX.1-2008 で規定された効果が互いにアトミックに行われなければならない: ..."
 
 #
 #.  http://thread.gmane.org/gmane.linux.kernel/1649458
@@ -12172,7 +12050,7 @@ msgid ""
 "with the result that the reads in the two processes might (incorrectly) "
 "overlap in the blocks of data that they obtained.  This problem was fixed in "
 "Linux 3.14."
-msgstr ""
+msgstr "この後に書かれている API の中に B<read>() と B<readv>(2) である。 スレッド(やプロセス) 間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に B<read>() (や B<readv>(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、 2 つのプロセスの read で取得されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。"
 
 #. type: Plain text
 #: build/C/man2/read.2:239
@@ -13263,29 +13141,27 @@ msgstr "renameat2()"
 msgid ""
 "B<renameat2>()  has an additional I<flags> argument.  A B<renameat2>()  call "
 "with a zero I<flags> argument is equivalent to B<renameat>()."
-msgstr ""
+msgstr "B<renameat2>() には追加の I<flags> 引き数がある。 I<flags> 引き数が 0 の B<renameat2>() の呼び出しは B<renameat>() と等価である。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:186
-#, fuzzy
-#| msgid "The character % is followed by zero or more of the following flags:"
 msgid ""
 "The I<flags> argument is a bit mask consisting of zero or more of the "
 "following flags:"
-msgstr "% 文字の後ろには 0 個以上のフラグ文字が続く。"
+msgstr "I<flags> 引き数は、以下のフラグの 0 個以上のビットマスクである。"
 
 #. type: TP
 #: build/C/man2/rename.2:186
 #, no-wrap
 msgid "B<RENAME_NOREPLACE>"
-msgstr ""
+msgstr "B<RENAME_NOREPLACE>"
 
 #. type: Plain text
 #: build/C/man2/rename.2:194
 msgid ""
 "Don't overwrite I<newpath>.  of the rename.  Return an error if I<newpath> "
 "already exists."
-msgstr ""
+msgstr "rename の I<newpath> を上書きしない。 I<newpath> がすでに存在する場合エラーを返す。"
 
 #. type: TP
 #: build/C/man2/rename.2:194
@@ -13299,7 +13175,7 @@ msgid ""
 "Atomically exchange I<oldpath> and I<newpath>.  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)."
-msgstr ""
+msgstr "I<oldpath> と I<newpath> をアトミックに入れ換える。 両方のパス名が存在しなければならないが、 ファイル種別は異なっていてもよい (例えば、一方は空でないディレクトリで、もう一方はシンボリックリンクであるなど)。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:228
@@ -13462,24 +13338,24 @@ msgstr "B<renameat2>() では以下のエラーも発生する。"
 #. type: Plain text
 #: build/C/man2/rename.2:376
 msgid "I<flags> contains B<RENAME_NOREPLACE> and I<newpath> already exists."
-msgstr ""
+msgstr "I<flags> に B<RENAME_NOREPLACE> が指定されているが、 I<newpath> がすでに存在する。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:385
 msgid ""
 "An invalid flag was specified in I<flags>, or both B<RENAME_NOREPLACE> and "
 "B<RENAME_EXCHANGE> were specified."
-msgstr ""
+msgstr "I<flags> に無効なフラグが指定された。 B<RENAME_NOREPLACE> と B<RENAME_EXCHANGE> の両方が指定された。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:389
 msgid "The filesystem does not support one of the flags in I<flags>."
-msgstr ""
+msgstr "I<flags> にファイルシステムでサポートされていないフラグが指定された。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:397
 msgid "I<flags> contains B<RENAME_EXCHANGE> and I<newpath> does not exist."
-msgstr ""
+msgstr "I<flags> に B<RENAME_EXCHANGE> が指定されたが、 I<newpath> が存在しない。"
 
 #. type: Plain text
 #: build/C/man2/rename.2:401
@@ -16154,18 +16030,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man7/symlink.7:60
-#, fuzzy
-#| msgid ""
-#| "A hard link to a file is indistinguishable from the original file because "
-#| "it is a reference to the object underlying the original filename.  (To be "
-#| "precise: each of the hard links to a file is a reference to the same I<i-"
-#| "node number>, where an i-node number is an index into the i-node table, "
-#| "which contains metadata about all files on a filesystem.  See "
-#| "B<stat>(2).)  Changes to a file are independent of the name used to "
-#| "reference the file.  Hard links may not refer to directories (to prevent "
-#| "the possibility of loops within the filesystem tree, which would confuse "
-#| "many programs)  and may not refer to files on different filesystems "
-#| "(because i-node numbers are not unique across filesystems)."
 msgid ""
 "A hard link to a file is indistinguishable from the original file because it "
 "is a reference to the object underlying the original filename.  (To be "
@@ -16177,18 +16041,7 @@ msgid ""
 "within the filesystem tree, which would confuse many programs)  and may not "
 "refer to files on different filesystems (because inode numbers are not "
 "unique across filesystems)."
-msgstr ""
-"あるファイルへのハードリンクは、 元々のファイルと区別することができない。 な"
-"ぜなら、 ハードリンクは元々のファイル名の裏にあるオブジェクトへの参照だからで"
-"ある。 (より正確には、 あるファイルへのハードリンクはそれぞれ同じ I<i-node 番"
-"号> への参照である。 i-node 番号は i-node テーブルへのインデックスで、 i-"
-"node テーブルはファイルシステム上のすべてのファイルについてのメタデータを保持"
-"している。 B<stat>(2) 参照。) ファイルへの変更は、ファイルの参照に使用された"
-"名前とは独立に行われる。 ハードリンクはディレクトリを参照することはできない "
-"(これはファイルシステムツリー内でループが発生する可能性を防止するためであ"
-"り、 ループが発生すると、 多くのプログラムが混乱してしまうことだろう)。 ま"
-"た、 ハードリンクは異なるファイルシステム上のファイルを参照することもできな"
-"い (i-node 番号はファイルシステムをまたがると一意ではないからである)。"
+msgstr "あるファイルへのハードリンクは、 元々のファイルと区別することができない。 なぜなら、 ハードリンクは元々のファイル名の裏にあるオブジェクトへの参照だからである。 (より正確には、 あるファイルへのハードリンクはそれぞれ同じ I<inode 番号> への参照である。 inode 番号は inode テーブルへのインデックスで、 inode テーブルはファイルシステム上のすべてのファイルについてのメタデータを保持している。 B<stat>(2) 参照。) ファイルへの変更は、ファイルの参照に使用された名前とは独立に行われる。 ハードリンクはディレクトリを参照することはできない (これはファイルシステムツリー内でループが発生する可能性を防止するためであり、 ループが発生すると、 多くのプログラムが混乱してしまうことだろう)。 また、 ハードリンクは異なるファイルシステム上のファイルを参照することもできない (inode 番号はファイルシステムをまたがると一意ではないからである)。"
 
 #. type: Plain text
 #: build/C/man7/symlink.7:69
@@ -16295,7 +16148,7 @@ msgstr ""
 #: build/C/man7/symlink.7:120
 #, no-wrap
 msgid "Obtaining a file descriptor that refers to a symbolic link"
-msgstr ""
+msgstr "シンボリックリンクを参照するファイルディスクリプタを取得する"
 
 #. type: Plain text
 #: build/C/man7/symlink.7:138
@@ -16428,7 +16281,7 @@ msgid ""
 "itself.  They are: B<lchown>(2), B<lgetxattr>(2), B<llistxattr>(2), "
 "B<lremovexattr>(2), B<lsetxattr>(2), B<lstat>(2), B<readlink>(2), "
 "B<rename>(2), B<rmdir>(2), and B<unlink>(2)."
-msgstr ""
+msgstr "リンクを辿らず、シンボリックリンク自身に対して操作を行うシステムコールもある。 このようなシステムコールとしては、 B<lchown>(2), B<lgetxattr>(2), B<llistxattr>(2), B<lremovexattr>(2), B<lsetxattr>(2), B<lstat>(2), B<readlink>(2), B<rename>(2), B<rmdir>(2), B<unlink>(2) がある。"
 
 #.  Maybe one day: .BR fchownat (2)
 #. type: Plain text
@@ -16441,7 +16294,7 @@ msgid ""
 "B<remove>(3)  is an alias for B<unlink>(2), that library function also does "
 "not follow symbolic links.  When B<rmdir>(2)  is applied to a symbolic link, "
 "it fails with the error B<ENOTDIR>."
-msgstr ""
+msgstr "他のいくつかのシステムコールは、指定された場合にのみシンボリックリンクを辿る。 これらのシステムコールとしては、 B<faccessat>(2), B<fchownat>(2), B<fstatat>(2), B<linkat>(2), B<name_to_handle_at>(2), B<open>(2), B<openat>(2), B<open_by_handle_at>(2), B<utimensat>(2) がある。 詳細はそれぞれのマニュアルページを参照してほしい。 B<remove>(3) は B<unlink>(2) の別名なので、 このライブラリ関数もシンボリックリンクを辿らない。 B<rmdir>(2) がシンボリックリンクに対して行われた場合、その呼び出しはエラー B<ENOTDIR> で失敗する。"
 
 #. type: Plain text
 #: build/C/man7/symlink.7:248
@@ -16452,7 +16305,7 @@ msgid ""
 "POSIX.1-2001 specified behavior can be obtained with suitable compiler "
 "options.)  The upcoming POSIX.1 revision changes the specification to allow "
 "either behavior in an implementation."
-msgstr ""
+msgstr "B<link>(2) については特別に議論が必要である。 POSIX.1-2001 では B<link>(2) は I<oldpath> がシンボリックリンクであればこれを展開するように規定している。 しかしながら、 Linux はシンボリックリンクを展開しない。 (デフォルトでは Solaris も同じだが、 適切なコンパイラーオプションを指定することで POSIX.1-2001 で規定された動作をさせることができる。) 今後のバージョンの POSIX.1 では、どちらの動作の実装も認められるように規定が変更される。"
 
 #. type: SS
 #: build/C/man7/symlink.7:248
@@ -18269,7 +18122,7 @@ msgid ""
 "the I/O operations were not atomic with respect updating the file offset, "
 "with the result that the blocks of data output by the two processes might "
 "(incorrectly) overlap.  This problem was fixed in Linux 3.14."
-msgstr ""
+msgstr "この後に書かれている API の中に B<write>() と B<writev>(2) である。 スレッド(やプロセス) 間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に B<write>() (や B<writev>(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、 2 つのプロセスから出力されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。"
 
 #. type: Plain text
 #: build/C/man2/write.2:262
index b368f3d..2f54ca6 100644 (file)
@@ -1,9 +1,4 @@
 # pagename,#complete,#remaining,#all
 fopencookie.3,65,33,98
-open.2,236,8,244
-open_by_handle_at.2,96,48,144
-printf.3,147,9,156
-read.2,45,3,48
-rename.2,98,9,107
-symlink.7,47,24,71
-write.2,54,3,57
+open_by_handle_at.2,97,47,144
+symlink.7,52,19,71
index 3275efc..e85a7a1 100644 (file)
 <TR class="over80"><TD>syslog.2</TD><TD>8/86</TD><TD>90.70</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>stdio</B></TD></TR>
 <TR><TD>fopencookie.3</TD><TD>33/98</TD><TD>66.33</TD></TR>
-<TR class="over80"><TD>open.2</TD><TD>8/244</TD><TD>96.72</TD></TR>
-<TR><TD>open_by_handle_at.2</TD><TD>48/144</TD><TD>66.67</TD></TR>
-<TR class="over80"><TD>printf.3</TD><TD>9/156</TD><TD>94.23</TD></TR>
-<TR class="over80"><TD>read.2</TD><TD>3/48</TD><TD>93.75</TD></TR>
-<TR class="over80"><TD>rename.2</TD><TD>9/107</TD><TD>91.59</TD></TR>
-<TR><TD>symlink.7</TD><TD>24/71</TD><TD>66.20</TD></TR>
-<TR class="over80"><TD>write.2</TD><TD>3/57</TD><TD>94.74</TD></TR>
+<TR><TD>open_by_handle_at.2</TD><TD>47/144</TD><TD>67.36</TD></TR>
+<TR class="over70"><TD>symlink.7</TD><TD>19/71</TD><TD>73.24</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>stdlib</B></TD></TR>
 <TR><TD>getauxval.3</TD><TD>34/86</TD><TD>60.47</TD></TR>
 <TR><TD>vdso.7</TD><TD>139/184</TD><TD>24.46</TD></TR>
 <TR class="over80"><TD>zdump.8</TD><TD>1/22</TD><TD>95.45</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>unistd</B></TD></TR>
 <TR class="over80"><TD>fcntl.2</TD><TD>46/241</TD><TD>80.91</TD></TR>
-<TR><TD COLSPAN=3>Total 76 pages</TD></TR>
+<TR><TD COLSPAN=3>Total 71 pages</TD></TR>
 </TABLE>
 </BODY></HTML>