.\" by Yuichi SATO <ysato444@yahoo.co.jp>
.\"
.TH SCANDIR 3 2011-09-08 "GNU" "Linux Programmer's Manual"
-.SH ̾Á°
-scandir, alphasort, versionsort \- ¥Ç¥£¥ì¥¯¥È¥ê¤òÁöºº¤¹¤ë
-.SH ½ñ¼°
+.SH 名前
+scandir, alphasort, versionsort \- ディレクトリを走査する
+.SH 書式
.nf
.B #include <dirent.h>
.sp
.fi
.sp
.in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
+glibc 向けの機能検査マクロの要件
.RB ( feature_test_macros (7)
-»²¾È):
+参照):
.in
.sp
.BR scandir (),
.br
.BR versionsort ():
_GNU_SOURCE
-.SH ÀâÌÀ
-´Ø¿ô
+.SH 説明
+関数
.BR scandir ()
-¤Ï¥Ç¥£¥ì¥¯¥È¥ê \fIdirp\fP ¤òÁöºº¤·¡¢
-¥Ç¥£¥ì¥¯¥È¥ê¤Î³Æ¥¨¥ó¥È¥ê¤ò°ú¤¿ô¤È¤·¤Æ
+はディレクトリ \fIdirp\fP を走査し、
+ディレクトリの各エントリを引き数として
.BR filter ()
-¤ò¸Æ¤Ó½Ð¤¹¡£
+を呼び出す。
.BR filter ()
-¤¬ 0 °Ê³°¤ÎÃͤòÊÖ¤¹¥¨¥ó¥È¥ê¤Ï
+が 0 以外の値を返すエントリは
.BR malloc (3)
-¤Ë¤è¤Ã¤Æ
-³ÎÊݤµ¤ì¤¿Ê¸»úÎó¤ËÊݸ¤µ¤ì¡¢Èæ³Ó´Ø¿ô
+によって
+確保された文字列に保存され、比較関数
.BR compar ()
-¤òÍѤ¤¤Æ
+を用いて
.BR qsort (3)
-¤Ë¤è¤ê¥½¡¼¥È¤µ¤ì¡¢
+によりソートされ、
.BR malloc (3)
-¤Ë¤è¤ê³ÎÊݤµ¤ì¤¿ÇÛÎó
-\fInamelist\fP ¤Ë¤Þ¤È¤á¤é¤ì¤ë¡£
-\fIfilter\fP ¤¬ NULL ¤Ê¤é¤Ð¡¢¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤¬ÁªÂò¤µ¤ì¤ë¡£
+により確保された配列
+\fInamelist\fP にまとめられる。
+\fIfilter\fP が NULL ならば、すべてのエントリが選択される。
.LP
-Èæ³Ó´Ø¿ô
+比較関数
.IR compar ()
-¤Ë¤Ï
+には
.BR alphasort ()
-´Ø¿ô¤È
+関数と
.BR versionsort ()
-´Ø¿ô¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
+関数を使うことができる。
.BR alphasort ()
-¤Ï
+は
.BR strcoll (3)
-¤òÍѤ¤¤Æ¥Ç¥£¥ì¥¯¥È¥ê¥¨¥ó¥È¥ê¤ò¥½¡¼¥È¤·¡¢
+を用いてディレクトリエントリをソートし、
.BR versionsort ()
-¤Ïʸ»úÎó \fI(*a)\->d_name\fP ¤È \fI(*b)\->d_name\fP ¤ËÂФ·¤Æ
+は文字列 \fI(*a)\->d_name\fP と \fI(*b)\->d_name\fP に対して
.BR strverscmp (3)
-¤òÍѤ¤¤ë¡£
-.SH ÊÖ¤êÃÍ
-´Ø¿ô
+を用いる。
+.SH 返り値
+関数
.BR scandir ()
-¤ÏÁªÂò¤µ¤ì¤¿¥¨¥ó¥È¥ê¤Î¿ô¤«¡¢
-(¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç) \-1 ¤òÊÖ¤¹¡£
+は選択されたエントリの数か、
+(エラーが発生した場合) \-1 を返す。
.PP
-´Ø¿ô
+関数
.BR alphasort ()
-¤È
+と
.BR versionsort ()
-¤Ï 1 ÈÖÌܤΰú¤¿ô¤¬ 2 ÈÖÌܤΰú¤¿ô¤ËÂФ·¤Æ¡¢
-[¾®¤µ¤¤/Åù¤·¤¤/Â礤¤] ¤«¤Ë±þ¤¸¤Æ¡¢0 ¤è¤ê [¾®¤µ¤¤/Åù¤·¤¤/Â礤¤] ÃͤòÊÖ¤¹¡£
-.SH ¥¨¥é¡¼
+は 1 番目の引き数が 2 番目の引き数に対して、
+[小さい/等しい/大きい] かに応じて、0 より [小さい/等しい/大きい] 値を返す。
+.SH ã\82¨ã\83©ã\83¼
.TP
.B ENOENT
-\fIdirp\fR ¤Ç»ØÄꤵ¤ì¤¿¥Ñ¥¹¤¬Â¸ºß¤·¤Ê¤¤¡£
+\fIdirp\fR で指定されたパスが存在しない。
.TP
.B ENOMEM
-Æ°ºî¤ò´°¿ë¤¹¤ë¤Ë¤Ï¥á¥â¥ê¤¬Â¤ê¤Ê¤¤¡£
+動作を完遂するにはメモリが足りない。
.TP
.B ENOTDIR
-\fIdirp\fR ¤Ç»ØÄꤵ¤ì¤¿¥Ñ¥¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¤¡£
-.SH ¥Ð¡¼¥¸¥ç¥ó
+\fIdirp\fR で指定されたパスがディレクトリではない。
+.SH バージョン
.BR versionsort ()
-¤Ï¡¢glibc ¥Ð¡¼¥¸¥ç¥ó 2.1 ¤ÇÄɲ䵤줿¡£
-.SH ½àµò
+は、glibc バージョン 2.1 で追加された。
+.SH 準拠
.BR alphasort ()
-¤È
+と
.BR scandir ()
-¤Ï POSIX.1-2008 ¤Çµ¬Äꤵ¤ì¤Æ¤ª¤ê¡¢¹¤¯ÍøÍѲÄǽ¤Ç¤¢¤ë¡£
+は POSIX.1-2008 で規定されており、広く利用可能である。
.BR versionsort ()
-¤Ï GNU ³ÈÄ¥¤Ç¤¢¤ë¡£
+は GNU 拡張である。
.LP
-´Ø¿ô
+関数
.BR scandir ()
-¤È
+と
.BR alphasort ()
-¤Ï 4.3BSD ¤«¤é¼è¤êÆþ¤ì¤é¤ì¡¢Linux ¤Ç¤Ï libc4 ¤«¤é»ÈÍѲÄǽ¤Ë¤Ê¤Ã¤¿¡£
-libc4 ¤È libc5 ¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ê¤â¤Ã¤È¾ÜºÙ¤Ê¥×¥í¥È¥¿¥¤¥×¤ò»È¤Ã¤Æ¤¤¤ë¡£
+は 4.3BSD から取り入れられ、Linux では libc4 から使用可能になった。
+libc4 と libc5 では以下のようなもっと詳細なプロトタイプを使っている。
.sp
.nf
int alphasort(const struct dirent ** a,
const struct dirent **b);
.fi
.sp
-¤·¤«¤· glibc 2.0 ¤Ç¤ÏÉÔÀµ³Î¤Ê BSD ¤Î¥×¥í¥È¥¿¥¤¥×¤ËÌá¤Ã¤¿¡£
+しかし glibc 2.0 では不正確な BSD のプロトタイプに戻った。
.LP
-´Ø¿ô
+関数
.BR versionsort ()
-¤Ï GNU ¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢glibc 2.1 °Ê¹ß¤Ç»ÈÍѲÄǽ¤Ç¤¢¤ë¡£
+は GNU の拡張であり、glibc 2.1 以降で使用可能である。
.LP
-glibc 2.1 °Ê¹ß¤Ç¤Ï
+glibc 2.1 以降では
.BR alphasort ()
-¤Ï
+は
.BR strcoll (3)
-¤ò¸Æ¤Ó½Ð¤¹¡£
+を呼び出す。
.BR alphasort ()
-¤Ï°ÊÁ°¤Ï
+は以前は
.BR strcmp (3)
-¤ò»È¤Ã¤Æ¤¤¤¿¡£
-.SH Îã
+を使っていた。
+.SH 例
.nf
#define _SVID_SOURCE
-/* ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Õ¥¡¥¤¥ë¤òµÕ½ç¤Ë½ÐÎϤ¹¤ë */
+/* カレントディレクトリのファイルを逆順に出力する */
#include <dirent.h>
int
}
}
.fi
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
.BR closedir (3),
.BR fnmatch (3),
.BR opendir (3),