OSDN Git Service

Update release for LDP 3.67
[linuxjm/LDP_man-pages.git] / release / man3 / scandir.3
index dbec324..3e934a3 100644 (file)
 .\" Modified Sun Sep 24 20:15:46 2000 by aeb, following Petter Reinholdtsen.
 .\" Modified 2001-12-26 by aeb, following Joey. Added versionsort.
 .\"
+.\" The pieces on scandirat(3) were copyright and licensed as follows.
+.\"
+.\" Copyright (c) 2012, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"        based on text in mkfifoat.3 Copyright (c) 2006, Michael Kerrisk
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SCANDIR 3 2013\-04\-19 GNU "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1998 Hiroaki Nagoya all rights reserved.
+.\" Translated Thu May 28 1998 by Hiroaki Nagoya <nagoya@is.titech.ac.jp>
+.\" Updated & Modified Sat Jan 19 18:22:21 JST 2002
+.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
+.\" Updated & Modified Sun Jan 16 08:12:04 JST 2005
+.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
+.\"
+.TH SCANDIR 3 2014\-02\-21 GNU "Linux Programmer's Manual"
 .SH 名前
-scandir, alphasort, versionsort \- ディレクトリを走査する
+scandir, scandirat, alphasort, versionsort \- ディレクトリを走査する
 .SH 書式
 .nf
 \fB#include <dirent.h>\fP
@@ -54,15 +88,41 @@ scandir, alphasort, versionsort \- ディレクトリを走査する
 \fBint alphasort(const void *\fP\fIa\fP\fB, const void *\fP\fIb\fP\fB);\fP
 .sp
 \fBint versionsort(const void *\fP\fIa\fP\fB, const void *\fP\fIb\fP\fB);\fP
+
+\fB#include <fcntl.h>\fP          /* AT_* 定数の定義 */
+\fB#include <dirent.h>\fP
+.sp
+.fi
+\fBint scandirat(int \fP\fIdirfd\fP\fB, const char *\fP\fIdirp\fP\fB,\fP \fBstruct dirent
+***\fP\fInamelist\fP\fB,\fP
+.nf
+.RS
+\fBint (*\fP\fIfilter\fP\fB)(const struct dirent *),\fP
+\fBint (*\fP\fIcompar\fP\fB)(const struct dirent **, const struct dirent **));\fP
+.RE
 .fi
 .sp
 .in -4n
 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
 .in
 .sp
-\fBscandir\fP(), \fBalphasort\fP(): _BSD_SOURCE || _SVID_SOURCE
+\fBscandir\fP(), \fBalphasort\fP():
 .br
+.RS 4
+.PD 0
+.ad b
+_BSD_SOURCE || _SVID_SOURCE
+.br
+|| /* glibc 2.10 以降: */
+.RS 4
+(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+.RE
+.PD
+.RE
+.sp
 \fBversionsort\fP(): _GNU_SOURCE
+.sp
+\fBscandirat\fP(): _GNU_SOURCE
 .SH 説明
 関数 \fBscandir\fP()  はディレクトリ \fIdirp\fP を走査し、 ディレクトリの各エントリを引き数として \fBfilter\fP()
 を呼び出す。 \fBfilter\fP()  が 0 以外の値を返すエントリは \fBmalloc\fP(3)  によって 確保された文字列に保存され、比較関数
@@ -72,10 +132,21 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 比較関数 \fIcompar\fP()  には \fBalphasort\fP()  関数と \fBversionsort\fP()  関数を使うことができる。
 \fBalphasort\fP()  は \fBstrcoll\fP(3)  を用いてディレクトリエントリをソートし、 \fBversionsort\fP()  は文字列
 \fI(*a)\->d_name\fP と \fI(*b)\->d_name\fP に対して \fBstrverscmp\fP(3)  を用いる。
+.SS scandirat()
+\fBscandirat\fP() 関数は \fBscandir\fP() と全く同様の動作をする。差分についてはここで説明する。
+
+\fIdirp\fP で指定されたパス名が相対パスの場合、ファイルディスクリプタ \fIdirfd\fP が参照するディレクトリからの相対パスと解釈される
+(これに対して、\fBscandir\fP() の場合は、相対パス名は、呼び出したプロセスのカレントワーキングディレクトリからの相対パスと解釈される)。
+
+\fIdirp\fP が相対パスで \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 \fIdirp\fP は (\fBscandir\fP() と同様に)
+呼び出したプロセスのカレントワーキングディレクトリからの相対パスと解釈される。
+
+\fIdirp\fP が絶対パスの場合、\fIdirfd\fP は無視される。
+.PP
+\fBscandirat\fP() が必要な理由については \fBopenat\fP(2) を参照すること。
 .SH 返り値
-The \fBscandir\fP()  function returns the number of directory entries
-selected.  On error, \-1 is returned, with \fIerrno\fP set to indicate the cause
-of the error.
+\fBscandir\fP() 関数は、選択されたディレクトリのエントリ数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP
+にエラーの原因を示す値を設定する。
 .PP
 関数 \fBalphasort\fP()  と \fBversionsort\fP()  は 1 番目の引き数が 2 番目の引き数に対して、
 [小さい/等しい/大きい] かに応じて、0 より [小さい/等しい/大きい] 値を返す。
@@ -89,24 +160,38 @@ of the error.
 .TP 
 \fBENOTDIR\fP
 \fIdirp\fP で指定されたパスがディレクトリではない。
+.PP
+\fBscandirat\fP() では追加で以下のエラーも発生する:
+.TP 
+\fBEBADF\fP
+\fIdirfd\fP が有効なファイルディスクリプタではない。
+.TP 
+\fBENOTDIR\fP
+\fIdirp\fP が相対パスで、\fIdirfd\fP がディレクトリ以外のファイルを参照している
+ファイルディスクリプタである。
 .SH バージョン
 \fBversionsort\fP()  は、glibc バージョン 2.1 で追加された。
+
+\fBscandirat\fP()  は glibc バージョン 2.15 で追加された。
 .SH 準拠
-\fBalphasort\fP()  と \fBscandir\fP()  は POSIX.1\-2008 で規定されており、広く利用可能である。
-\fBversionsort\fP()  は GNU 拡張である。
-.LP
-関数 \fBscandir\fP()  と \fBalphasort\fP()  は 4.3BSD から取り入れられ、Linux では libc4
-から使用可能になった。 libc4 と libc5 では以下のようなもっと詳細なプロトタイプを使っている。
-.sp
-.nf
-    int alphasort(const struct dirent ** a,
-                  const struct dirent **b);
-.fi
-.sp
-しかし glibc 2.0 では不正確な BSD のプロトタイプに戻った。
-.LP
-関数 \fBversionsort\fP()  は GNU の拡張であり、glibc 2.1 以降で使用可能である。
-.LP
+\fBalphasort\fP(), \fBscandir\fP(): 4.3BSD, POSIX.1\-2008.
+
+.\" .LP
+.\" The functions
+.\" .BR scandir ()
+.\" and
+.\" .BR alphasort ()
+.\" are from 4.3BSD, and have been available under Linux since libc4.
+.\" Libc4 and libc5 use the more precise prototype
+.\" .sp
+.\" .nf
+.\"    int alphasort(const struct dirent ** a,
+.\"                  const struct dirent **b);
+.\" .fi
+.\" .sp
+.\" but glibc 2.0 returns to the imprecise BSD prototype.
+\fBversionsort\fP() と \fBscandirat\fP() は GNU 拡張である。
+.SH 注意
 glibc 2.1 以降では \fBalphasort\fP()  は \fBstrcoll\fP(3)  を呼び出す。 \fBalphasort\fP()  は以前は
 \fBstrcmp\fP(3)  を使っていた。
 .SH 例
@@ -135,9 +220,9 @@ main(void)
 .fi
 .SH 関連項目
 \fBclosedir\fP(3), \fBfnmatch\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3),
-\fBrewinddir\fP(3), \fBscandirat\fP(3), \fBseekdir\fP(3), \fBstrcmp\fP(3),
-\fBstrcoll\fP(3), \fBstrverscmp\fP(3), \fBtelldir\fP(3)
+\fBrewinddir\fP(3), \fBseekdir\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3),
+\fBstrverscmp\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。