Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dir(5) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fs(5)

DIR(5)  —  UNIX Programmer’s Manual

名称

dir − ディレクトリのフォーマット

形式

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

解説

ディレクトリは、ユーザがディレクトリ自身に書き込みを行うことが できないことを除き、普通のファイルとまったく同じように挙動します。 あるファイルがディレクトリであるか否かは、i ノードエントリの フラグワード内のビットによって示されます (fs(5) を参照のこと)。インクルードファイル内に収められるディレクトリエントリの 構造を次に示します。

/∗
 ∗ ディレクトリは、いくつかの DIRBLKSIZ バイトの大きさで示される
 ∗ ブロックから構成される。ただし、DIRBLKSIZ は、一回の基本単位
 ∗ 操作でディスクに転送できるように選択される(例えば、大部分の
 ∗ マシンでは 512 バイト)。
 ∗
 ∗ それぞれの DIRBLKSIZ バイトサイズのブロックには、長さの異なる
 ∗ いくつかのディレクトリエントリ構造体が含まれる。それぞれの
 ∗ ディレクトリエントリは、その先頭に direct 構造体を備えており、
 ∗ i ノード番号、エントリの長さ、そのエントリ内の名称の長さを含んで
 ∗ いる。こうしたエントリの後には、ナルバイトと共に 4バイト境界に埋め
 ∗ 込まれた名称が続く。すべての名称の最後にはナルが付けられる。
 ∗ ディレクトリ内の名称の最大長は MAXNAMLEN で示される長さである。
 ∗
 ∗ マクロ DIRSIZ(dp) は、ディレクトリエントリを示すために必要とされる
 ∗ 空間を示す。ディレクトリ内の空き空間は、dp−>d_reclen>DIRSIZ(dp)
 ∗ を備えたエントリによって示される。ディレクトリブロック内のすべての
 ∗ DIRBLKSIZ の大きさは、こうしたディレクトリエントリによって示される。
 ∗ これは、普通、大きな dp−>d_reclen を備えたディレクトリ内の最後の
 ∗ エントリになる。エントリがディレクトリから削除されると、その空間は、
 ∗ 同じディレクトリブロック内の前のエントリに戻され、そのエントリの
 ∗ dp−>d_reclen の値が増加する。ディレクトリブロックの最初のエントリが
 ∗ 空いている場合には、その dp−>d_ino は 0 に設定される。ディレクトリ内
 ∗ の最初のエントリ以外のエントリは、通常、dp−>d_ino を 0 に設定しない。
 ∗/
 #ifdef KERNEL
#define DIRBLKSIZ DEV_BSIZE
#else
#define DIRBLKSIZ 512
#endif
 #define MAXNAMLEN 255
 /∗
 ∗ DIRSIZ マクロは、そのディレクトリエントリを維持するために必要な
 ∗ 最小レコード長を与える。これは、d_name フィールドのない direct
 ∗ 構造体に加えて、ナルバイトで終了する 4バイト境界でまるめられた
 ∗ 十分なネームスペース(dp−>d_namlen+1)を必要とする。
 ∗/
#undef DIRSIZ
#define DIRSIZ(dp) \
    ((sizeof (struct direct) − (MAXNAMLEN+1)) + (((dp)−>d_namlen+1 + 3) &~ 3))
 structdirect {
u_longd_ino;
shortd_reclen;
shortd_namlen;
chard_name[MAXNAMLEN + 1];
/∗ 一般にはもっと短くなる ∗/
};
 struct _dirdesc {
intdd_fd;
longdd_loc;
longdd_size;
chardd_buf[DIRBLKSIZ];
};

伝統的に、それぞれのディレクトリ内の最初の 2つのエントリは、 ‘.’と‘..’のためのものです。 最初のエントリは、ディレクトリ自体のためのエントリです。 2番目のエントリは、親ディレクトリ用のエントリです。 マスタファイルシステム(“/”)のルートディレクトリについては、 ‘..’の意味が修正され、‘.’と同じ意味になります。

関連事項

fs(5)

NEWS-OSRelease 3.3

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