OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man3 / realpath.3
index 5550310..07129f5 100644 (file)
@@ -41,7 +41,7 @@
 .\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-03-27, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH REALPATH 3 2013\-03\-15 "" "Linux Programmer's Manual"
+.TH REALPATH 3 2014\-10\-02 "" "Linux Programmer's Manual"
 .SH 名前
 realpath \- 正規化された絶対パス名を返す
 .SH 書式
@@ -63,9 +63,9 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 .RE
 .ad
 .SH 説明
-\fBrealpath\fP()  は \fIpath\fP として与えられた NULL 終端された文字列中の すべてのシンボリックリンクを展開し、 \fI/./\fP,
+\fBrealpath\fP()  は \fIpath\fP として与えられたヌル終端された文字列中の すべてのシンボリックリンクを展開し、 \fI/./\fP,
 \fI/../\fP による参照や余分な \(aq/\(aq を解決して、正規化された絶対パス名を生成する。 得られた絶対パス名は、最大で
-\fBPATH_MAX\fP バイトの NULL 終端された文字列として、 \fIresolved_path\fP により参照されるバッファに格納される。
+\fBPATH_MAX\fP バイトのヌル終端された文字列として、 \fIresolved_path\fP により参照されるバッファーに格納される。
 結果として返るパスの中には、シンボリックリンクや \fI/./\fP, \fI/../\fP といった要素は含まれない。
 
 .\" Even if we use resolved_path == NULL, then realpath() will still
@@ -76,12 +76,12 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 .\" .BR realpath ()
 .\" function first appeared in 4.4BSD, contributed by Jan-Simon Pendry.
 \fIresolved_path\fP に NULL が指定されると、 \fBrealpath\fP()  は \fBmalloc\fP(3)
\82\92使ã\81£ã\81¦è§£æ±ºã\81\97ã\81\9fã\83\91ã\82¹å\90\8dã\82\92ä¿\9dæ\8c\81ã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\82\92 æ\9c\80大ã\81§ \fBPATH_MAX\fP ã\83\90ã\82¤ã\83\88ã\81¾ã\81§å\89²ã\82\8aå½\93ã\81¦ã\80\81ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\82\92è¿\94ã\81\99ã\80\82 å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ã\80\81
-\fBfree\fP(3)  を使ってこのバッファを解放すべきである。
\82\92使ã\81£ã\81¦è§£æ±ºã\81\97ã\81\9fã\83\91ã\82¹å\90\8dã\82\92ä¿\9dæ\8c\81ã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92 æ\9c\80大ã\81§ \fBPATH_MAX\fP ã\83\90ã\82¤ã\83\88ã\81¾ã\81§å\89²ã\82\8aå½\93ã\81¦ã\80\81ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
+呼び出し元は、 \fBfree\fP(3)  を使ってこのバッファーを解放すべきである。
 .SH 返り値
 エラーがなかった場合、 \fBrealpath\fP()  は \fIresolved_path\fP へのポインターを返す。
 
-それ以外の場合は、ヌル (NULL) ポインターが返り、配列 \fIresolved_path\fP の内容は不定となり、 \fIerrno\fP
+それ以外の場合は NULL が返り、配列 \fIresolved_path\fP の内容は不定となり、 \fIerrno\fP
 にエラーの内容を示す値がセットされる。
 .SH エラー
 .TP 
@@ -94,10 +94,10 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 の場合にもこのエラーが返される。)
 .TP 
 \fBEIO\fP
-An I/O error occurred while reading from the filesystem.
+ファイルシステムを読むときに、I/Oエラーが起こった。
 .TP 
 \fBELOOP\fP
\83\91ã\82¹å\90\8dã\81®å¤\89æ\8f\9bã\81«ã\81\82ã\81\9fã\82\8aã\80\81解決ã\81\99ã\81¹ã\81\8dã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81®æ\95°ã\81\8cå¤\9aé\81\8eã\81\8eã\81\9fã\80\82
+パス名の変換にあたり、解決すべきシンボリックリンクの数が多過ぎた。
 .TP 
 \fBENAMETOOLONG\fP
 パス名の一要素の文字数が \fBNAME_MAX\fP を越えている、またはパス名全体の文字数が \fBPATH_MAX\fP を越えている。
@@ -107,8 +107,6 @@ An I/O error occurred while reading from the filesystem.
 .TP 
 \fBENOTDIR\fP
 パスのディレクトリ要素が、ディレクトリでない。
-.SH バージョン
-Linux では、この関数が登場したのは libc 4.5.21 である。
 .SH 準拠
 4.4BSD, POSIX.1\-2001.
 
@@ -143,29 +141,33 @@ POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に
 .\" Solaris may return a relative pathname when the
 .\" .I path
 .\" argument is relative.
-\fBrealpath\fP() のプロトタイプ宣言は、 libc4 と libc5 では
-\fI<unistd.h>\fP にあるが、それ以外の環境ではいずれも
-\fI<stdlib.h>\fP にある。
+.\" The prototype of
+.\" .BR realpath ()
+.\" is given in \fI<unistd.h>\fP in libc4 and libc5,
+.\" but in \fI<stdlib.h>\fP everywhere else.
 .SS "GNU による拡張"
 呼び出しが \fBEACCES\fP か \fBENOENT\fP で失敗し \fIresolved_path\fP が NULL
 でない場合、読むことができない、もしくは存在しない \fIpath\fP のディレクトリ要素 (prefix) が \fIresolved_path\fP
 で返される。
 .SH バグ
-この関数の POSIX.1\-2001 版は、設計段階から問題がある。 出力バッファ \fIresolved_path\fP
-の適切なサイズを決定することができないからである。 POSIX.1\-2001 ではバッファ・サイズとして \fBPATH_MAX\fP
+.\" .LP
+.\" The libc4 and libc5 implementation contained a buffer overflow
+.\" (fixed in libc-5.4.13).
+.\" Thus, set-user-ID programs like
+.\" .BR mount (8)
+.\" needed a private version.
+この関数の POSIX.1\-2001 版は、設計段階から問題がある。 出力バッファー \fIresolved_path\fP
+の適切なサイズを決定することができないからである。 POSIX.1\-2001 ではバッファーサイズとして \fBPATH_MAX\fP
 は十分だとされているが、 \fBPATH_MAX\fP は定義済の定数である必要はなく、 \fBpathconf\fP(3)
\82\92使ã\81£ã\81¦å¾\97ã\82\89ã\82\8cã\82\8bå\80¤ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\82\88ã\81\84ã\81\93ã\81¨ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\80\82 \fBpathconf\fP(3)  ã\81\8bã\82\89ã\83\90ã\83\83ã\83\95ã\82¡ã\83»サイズを取得したとしても必ずしも十分ではない。
-なぜなら、POSIX で警告されているように、 \fBpathconf\fP(3)  の返り値が大き過ぎて適切にメモリを確保することができない
\82\92使ã\81£ã\81¦å¾\97ã\82\89ã\82\8cã\82\8bå\80¤ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\82\88ã\81\84ã\81\93ã\81¨ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\80\82 \fBpathconf\fP(3)  ã\81\8bã\82\89ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼サイズを取得したとしても必ずしも十分ではない。
\81ªã\81\9cã\81ªã\82\89ã\80\81POSIX ã\81§è­¦å\91\8aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\82\88ã\81\86ã\81«ã\80\81 \fBpathconf\fP(3)  ã\81®è¿\94ã\82\8aå\80¤ã\81\8c大ã\81\8dé\81\8eã\81\8eã\81¦é\81©å\88\87ã\81«ã\83¡ã\83¢ã\83ªã\83¼ã\82\92確ä¿\9dã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\84
 かもしれない一方で、 \fBpathconf\fP(3)  は \fBPATH_MAX\fP に制限がないことを示す \-1 を返すかもしれないからである。
 \fIresolved_path\ ==\ NULL\fP の機能を使うと、この設計上の問題を回避することができる。 この機能は POSIX.1\-2001
 では標準化されていないが、 POSIX.1\-2008 では標準化されている。
-.LP
-libc4 と libc5 の実装はバッファ・オーバーフローの可能性を持っていた (libc\-5.4.13 で修正されたが)。したがって、
-\fBmount\fP(8)  のような set\-user\-ID されるプログラムでは、この関数相当の関数を自前で持つ必要があった。
 .SH 関連項目
-\fBreadlink\fP(2), \fBcanonicalize_file_name\fP(3), \fBgetcwd\fP(3), \fBpathconf\fP(3),
-\fBsysconf\fP(3)
+\fBrealpath\fP(1), \fBreadlink\fP(2), \fBcanonicalize_file_name\fP(3), \fBgetcwd\fP(3),
+\fBpathconf\fP(3), \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。