SCANDIR(3) — NEWS-OS Programmer’s Manual
名称
scandir, alphasort − ディレクトリのスキャン
形式
#include <sys/types.h>
#include <sys/dir.h>
scandir(dirname, namelist, select, compar)
char ∗dirname;
struct direct ∗(∗namelist[]);
int (∗select)();
int (∗compar)();
alphasort(d1, d2)
struct direct ∗∗d1, ∗∗d2;
解説
scandir は、 ディレクトリ dirname を読み出し、 malloc(3) を使ってディレクトリのエントリを 指すポインタの配列を形成します。 このルーチンは、 配列内のエントリ数と、 namelist を通じて配列を指すポインタを返します。
パラメータ select は、 ユーザが要求したサブルーチンを指すポインタで、 scandir によって呼び出され、 配列に含まれるエントリを選択します。 この選択ルーチンには、 ディレクトリエントリへのポインタが渡され、 そのディレクトリが配列に含まれるものであれば、 0 以外の値を返します。 select がナルの場合、 すべてのディレクトリエントリが含まれます。
引数 compar は、 ユーザが供給したサブルーチンを指すポインタで、 qsort(3) へ渡され、 作成済みの配列をソートします。 このポインタがナルの場合、 配列はソートされません。 alphasort ルーチンは、 引数 compar として使用することによって、 配列をアルファベット順にソートすることができます。
配列内の各ポインタと配列自身のポインターを使って、 配列に割り当てられたメモリを free (malloc(3) 参照)で解放することができます。
関連事項
directory(3), malloc(3), qsort(3), dir(5)
診断
ディレクトリが入力用にオープンされていない場合、 または malloc(3) がすべてのデータ構造体を 持ち続けるために充分なメモリを 割り当てることができない場合、 −1 を返します。
NEWS-OSRelease 4.1C