Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ opendir(3) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

open(2)

close(2)

read(2)

lseek(2)

malloc(3)

dir(5)

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

名称

opendir, readdir, telldir, seekdir, rewinddir, closedir − ディレクトリ操作

形式

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

DIR ∗opendir(filename)
char ∗filename;

struct dirent ∗readdir(dirp)
DIR ∗dirp;

long telldir(dirp)
DIR ∗dirp;

seekdir(dirp, loc)
DIR ∗dirp;
long loc;

rewinddir(dirp)
DIR ∗dirp;

closedir(dirp)
DIR ∗dirp;

解説

opendir は filename で指定したディレクトリをオープンし、 これを directory stream と接続します。 opendir は、 後続の操作で directory stream の識別に使用される、 ポインタを返します。 filename がアクセスできない場合、 またはすべてを格納するのに十分なメモリを malloc(3) できない場合には、 NULL ポインタが返ります。

readdir は、 次のディレクトリのエントリへのポインタを返します。 ディレクトリの終わりに達するか、不適当な seekdir 操作を検出すると、 これは NULL を返します。

telldir は、指定した directory stream に対応する現在の位置を返します。

seekdir は、 directory stream 上の次の readdir 操作の位置を設定します。 新しい位置は、 telldir 操作が実行されたときの directory stream の位置に戻ります。 telldir が返す値は、 その値が引き出される DIR ポインタの生きている間だけ有効です。 このディレクトリがクローズされていて再オープンされた場合には、 ディレクトリが検出できないため、 telldir の値が無効になることがあります。 opendir の呼び出し直後と、 readdir を呼び出す直前ならば、 以前の telldir 値は、保証されています。

rewinddir は、指定した directory stream の位置をこのディレクトリの先頭にリセットします。

closedir は指定した directory stream をクローズし、 DIR ポインタに対応する構造体を解放します。

“name”用のディレクトリを検索するコードの見本は、 次の通りです。

len = strlen(name);
dirp = opendir(".");
for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
if (dp->d_namlen == len && !strcmp(dp->d_name, name)) {
closedir(dirp);
return FOUND;
}
closedir(dirp);
return NOT_FOUND;

注意事項

directory() ライブラリルーチンは、新しいインクルードファイル <dirent.h> を使用します。 このファイルは、前のリリースで使用されていた  <sys/dir.h> ファイルに取って代わるものです。 この新しいファイルを用いることで、 readdir() ルーチンは、以前の struct direct ではなく、 struct dirent という名の構造体のディレクトリエントリを返します。 ファイル  <sys/dir.h> は、バックワードにソースコードの互換性を サポートするため、 現在の NFSSRC リリースにそのまま残っています。 directory() ライブラリやファイル <sys/dir.h> を使用するプログラムは、ソースコードを変更することなく、 コンパイル、実行できます。 しかし、 <sys/dir.h> は、次の整数値の変更するリリース時に取り除かれので、 現存するプログラムは、新しいインクルードファイル  <dirent.h> を使用するよう書き換えてください。

関連事項

open(2), close(2), read(2), lseek(2), malloc(3), dir(5)

NEWS-OSRelease 4.1C

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