Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ alphasort(3) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

directory(3)

malloc(3)

qsort(3)

dir(5)

SCANDIR(3)  —  NEWS-OS Programmer’s Manual

名称

scandir, alphasort − ディレクトリのスキャン

形式

#include <sys/types.h>
#include <dirent.h>

scandir(dirname, namelist, select, compar)
char ∗dirname;
struct dirent ∗(∗namelist[]);
int (∗select)();
int (∗compar)();

alphasort(d1, d2)
struct dirent ∗∗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.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026