Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dir(5) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fs(5)

DIR(5)  —  NEWS-OS 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;
        long    dd_bbase;
        long    dd_entno;
        long    dd_bsize;
        char    ∗dd_buf;
} DIR;

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

関連事項

fs(5)

NEWS-OSRelease 4.2.1R

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