Manpages

名 前

fts, fts_open, fts_read, fts_children, fts_set, fts_close − フ ァ イ ル 階 層 を た ど る

書 式

#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>

FTS *fts_open(char * const *path_argv, int options,
int (*
compar)(const FTSENT **, const FTSENT **));

FTSENT *fts_read(FTS *ftsp);

FTSENT *fts_children(FTS *ftsp, int options);

int fts_set(FTS *ftsp, FTSENT *f, int options);

int fts_close(FTS *ftsp);

説 明

fts 関 数 群 は 、 フ ァ イ ル 階 層 を た ど る た め に 提 供 さ れ て い る 。 簡 単 に 概 略 す る と 次 の よ う に な る 。 fts_open() 関 数 は 、 他 の fts 関 数 群 に 渡 す た め の 、 フ ァ イ ル 階 層 の 「 ハ ン ド ル 」 を 返 す 。 fts_read() 関 数 は 、 フ ァ イ ル 階 層 中 に あ る 1 つ の フ ァ イ ル を 記 述 す る 構 造 体 へ の ポ イ ン タ ー を 返 す 。 fts_children() 関 数 は 、 階 層 中 の デ ィ レ ク ト リ に あ る フ ァ イ ル を 記 述 す る 構 造 体 の リ ン ク リ ス ト へ の ポ イ ン タ ー を 返 す 。 一 般 に デ ィ レ ク ト リ は 、 preorder (正 方 向 : 下 の 階 層 の デ ィ レ ク ト リ を た ど る 前 ) と postorder (逆 方 向 : 下 の 階 層 の デ ィ レ ク ト リ を す べ て た ど っ た 後 ) と い う 、 異 な る 方 向 で 2 回 た ど ら れ る 。 フ ァ イ ル は 1 回 た ど ら れ る 。 デ ィ レ ク ト リ 階 層 を 「 論 理 的 に 」 (シ ン ボ リ ッ ク リ ン グ が 指 す フ ァ イ ル を 見 て ) 辿 る こ と も 、 物 理 的 に (シ ン ボ リ ッ ク リ ン ク 自 身 を 見 て ) 辿 る こ と も 可 能 で あ る 。 ま た 、 階 層 中 の 移 動 の 道 筋 を 指 示 す る こ と ・ 余 分 な も の を 取 り 除 く こ と ・ 階 層 の 一 部 を 再 び た ど る こ と が 可 能 で あ る 。

2 つ の 構 造 体 が イ ン ク ル ー ド フ ァ イ ル <fts.h> で 定 義 さ れ て い る (さ ら に typedef さ れ て い る )。 1 つ 目 は 、 フ ァ イ ル 階 層 そ の も の を 表 現 す る FTS 構 造 体 で あ る 。 2 つ 目 は 、 フ ァ イ ル 階 層 中 の フ ァ イ ル を 表 現 す る FTSENT 構 造 体 で あ る 。 FTSENT 構 造 体 は 通 常 、 フ ァ イ ル 階 層 中 の す べ て の フ ァ イ ル に 対 し て 返 さ れ る 。 こ の man ペ ー ジ で は 、 「 フ ァ イ ル 」 と 「 FTSENT 構 造 体 」 を 一 般 に 読 み 変 え る こ と が で き る 。 FTSENT 構 造 体 は 、 少 な く と も 次 の よ う な フ ィ ー ル ド を 持 っ て お り 、 以 下 で よ り 詳 し く 説 明 さ れ て い る 。

typedef struct _ftsent {
unsigned short fts_info; /* FTSENT 構 造 体 の た め の フ ラ グ */
char *fts_accpath; /* ア ク セ ス パ ス */
char *fts_path; /* ル ー ト パ ス */
short fts_pathlen; /* fts_path の 長 さ */
char *fts_name; /* フ ァ イ ル 名 */
short fts_namelen; /* fts_name の 長 さ */
short fts_level; /* 深 さ (−1 〜 N) */
int fts_errno; /* フ ァ イ ル の エ ラ ー 番 号 */
long fts_number; /* ロ ー カ ル な 番 号 */
void *fts_pointer; /* ロ ー カ ル な ア ド レ ス 番 号 */
struct ftsent *fts_parent; /* 親 デ ィ レ ク ト リ */
struct ftsent *fts_link; /* 次 の フ ァ イ ル 構 造 体 */
struct ftsent *fts_cycle; /* 循 環 し て い る 構 造 体 */
struct stat *fts_statp; /* stat(2) の 情 報 */ }
FTSENT; こ れ ら の フ ィ ー ル ド は 、 次 の よ う に 定 義 さ れ て い る 。

fts_info こ の フ ィ ー ル ド は 、 返 さ れ た

FTSENT 構 造 体 と フ ァ イ ル を 説 明 す

る 以 下 の フ ラ グ の い ず れ か を 表 し て い る 。 エ ラ ー の な い デ ィ レ ク ト リ (FTS_D), の 場 合 は 例 外 と し て 、 そ れ 以 外 の す べ て の エ ン ト リ ー は 終 端 で あ る 。 つ ま り 、 エ ン ト リ ー は 再 び た ど ら れ る こ と も な く 、 そ れ よ り 下 の 階 層 が た ど ら れ る こ と も な い 。

FTS_D

preorder で た ど ら れ る デ ィ レ ク ト リ 。

FTS_DC

ツ リ ー の 中 で 循 環 し て い る デ ィ レ ク ト リ 。 (FTSENT 構 造 体 の fts_cycle フ ィ ー ル ド も 同 様 に 埋 め ら れ る 。 )

FTS_DEFAULT

フ ァ イ ル タ イ プ を 表 現 す る FTSENT 構 造 体 が 、 fts_info の 他 の い ず れ か の 値 で 明 示 的 に 説 明 さ れ て い な い 。

FTS_DNR

読 み 込 み が で き な い デ ィ レ ク ト リ 。 こ れ は エ ラ ー の 場 合 の 返 り 値 で あ り 、 何 が エ ラ ー を 起 こ し た か を 示 す た め に fts_errno フ ィ ー ル ド が 設 定 さ れ る 。
FTS_DOT

fts_open() へ の フ ァ イ ル 名 と し て 指 定 さ れ な か っ た "." ま た は ".." と い う 名 前 の フ ァ イ ル (FTS_SEEDOT を 参 照 す る こ と )。

FTS_DP

postorder で た ど ら れ る デ ィ レ ク ト リ 。 FTSENT 構 造 体 の 内 容 は 、 preorder の と き に 返 さ れ た 状 態 (つ ま り 、 fts_info フ ィ ー ル ド が FTS_D に 設 定 さ れ て い る 状 態 ) か ら 変 更 さ れ な い 。

FTS_ERR

こ れ は エ ラ ー の 場 合 の 返 り 値 で あ り 、 fts_errno フ ィ ー ル ド は 、 何 が エ ラ ー を 起 こ し た か を 示 す 値 に 設 定 さ れ る 。
FTS_F

通 常 の フ ァ イ ル 。

FTS_NS

stat(2) 情 報 が 得 ら れ な か っ た フ ァ イ ル 。 fts_statp フ ィ ー ル ド の 内 容 は 定 義 さ れ な い 。 こ れ は エ ラ ー の 場 合 の 返 り 値 で あ り 、 fts_errno フ ィ ー ル ド は 、 何 が エ ラ ー を 起 こ し た か を 示 す 値 に 設 定 さ れ る 。

FTS_NSOK

stat(2) 情 報 が 要 求 さ れ な か っ た フ ァ イ ル 。 fts_statp フ ィ ー ル ド の 内 容 は 定 義 さ れ な い 。

FTS_SL

シ ン ボ リ ッ ク リ ン ク 。

FTS_SLNONE リ ン ク 先 の 存 在 し な い シ ン ボ リ ッ ク リ ン ク 。

fts_statp フ ィ ー ル ド の 内 容 は 、 シ ン ボ リ ッ ク リ ン ク そ の も の の フ ァ イ ル 特 性 情 報 を 参 照 す る 。

fts_accpath 現 在 の デ ィ レ ク ト リ か ら フ ァ イ ル に ア ク セ ス す る た め の パ ス 。

fts_path 階 層 を た ど る と き の ル ー ト か ら み た フ ァ イ ル の 相 対 的 な パ ス 。 こ の パ ス に は 、

fts_open() に 指 定 し た パ ス が プ レ フ ィ ッ ク ス と し て 含 ま れ る 。

fts_pathlen

fts_path で 参 照 さ れ る 文 字 列 の 長 さ 。

fts_name

フ ァ イ ル の 名 前 。

fts_namelen

fts_name で 参 照 さ れ る 文 字 列 の 長 さ 。

fts_level

階 層 を た ど っ て 、 こ の フ ァ イ ル が み つ か っ た 深 さ 。 −1 〜 N の 数 値 で 表 さ れ る 。 階 層 を た ど る と き の 出 発 点 (ル ー ト ) の 親 デ ィ レ ク ト リ を 表 す FTSENT 構 造 体 で は −1 と な る 。 ま た 、 ル ー ト 自 身 の FTSENT 構 造 体 で は 0 に な る 。

fts_errno

関 数 fts_children() と fts_read() か ら 返 さ れ る FTSENT 構 造 体 の fts_info フ ィ ー ル ド が FTS_DNR, FTS_ERR, FTS_NS に 設 定 さ れ て い る 場 合 、 fts_errno フ ィ ー ル ド に は エ ラ ー の 原 因 を 示 す 外 部 変 数 errno の 値 が 入 る 。 そ れ 以 外 の 場 合 、 fts_errno フ ィ ー ル ド の 内 容 は 定 義 さ れ な い 。

fts_number

こ の フ ィ ー ル ド は 、 ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム か ら 使 用 す る た め に 提 供 さ れ 、 fts 関 数 群 で は 変 更 さ れ な い 。 こ の フ ィ ー ル ド は 0 で 初 期 化 さ れ る 。

fts_pointer

こ の フ ィ ー ル ド は 、 ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム か ら 使 用 す る た め に 提 供 さ れ 、 fts 関 数 群 で は 変 更 さ れ な い 。 こ の フ ィ ー ル ド は NULL で 初 期 化 さ れ る 。

fts_parent

現 在 の フ ァ イ ル の す ぐ 上 の 階 層 に あ る フ ァ イ ル (つ ま り 、 現 在 の フ ァ イ ル が メ ン バ ー に な っ て い る デ ィ レ ク ト リ ) を 参 照 す る FTSENT 構 造 体 へ の ポ イ ン タ ー 。 最 初 の 出 発 点 に 対 し て も 、 親 と な る 構 造 体 は 与 え ら れ る 。 し か し 、 fts_level, fts_number, fts_pointer フ ィ ー ル ド の み の 初 期 化 し か 保 証 さ れ な い 。
fts_link

fts_children() か ら 返 さ れ る 場 合 、 fts_link フ ィ ー ル ド は デ ィ レ ク ト リ メ ン バ ー の ヌ ル 終 端 さ れ た リ ン ク リ ス ト の 形 式 で 、 次 の 構 造 体 を 指 し 示 す 。 そ れ 以 外 の 場 合 、 fts_link フ ィ ー ル ド は 定 義 さ れ な い 。

fts_cycle

2 つ の デ ィ レ ク ト リ に ハ ー ド リ ン ク が 張 ら れ て い る た め 、 ま た は 、 シ ン ボ リ ッ ク リ ン ク が あ る デ ィ レ ク ト リ を 指 し て い る た め に 、 デ ィ レ ク ト リ が 循 環 す る 階 層 構 造 を 作 っ て い る 場 合 (FTS_DC を 参 照 )、 構 造 体 の fts_cycle フ ィ ー ル ド は 、 階 層 中 で 現 在 の FTSENT 構 造 体 と 同 じ フ ァ イ ル を 参 照 し て い る FTSENT 構 造 体 を 指 し 示 す 。 そ れ 以 外 の 場 合 、 fts_cycle フ ィ ー ル ド は 定 義 さ れ な い 。

fts_statp

こ の フ ァ イ ル の stat(2) 情 報 へ の ポ イ ン タ ー 。 フ ァ イ ル 階 層 中 の す べ て の フ ァ イ ル の パ ス に 対 し て 、 た だ 1 つ の バ ッ フ ァ ー が 使 わ れ る 。 し た が っ て 、 fts_pathfts_accpath フ ィ ー ル ド は 、 fts_read() に よ っ て 返 さ れ た 最 も 新 し い フ ァ イ ル に 対 し て 「 の み 」 ヌ ル 終 端 さ れ る こ と が 保 証 さ れ る 。 こ れ ら の フ ィ ー ル ド を 、 他 の FTSENT 構 造 体 で 表 現 さ れ る フ ァ イ ル を 参 照 す る た め に 使 う に は 、 FTSENT 構 造 体 の fts_pathlen フ ィ ー ル ド に あ る 情 報 を 使 っ て パ ス の バ ッ フ ァ ー を 修 正 す る 必 要 が あ る 。 こ れ ら の 修 正 は 、 さ ら に fts_read() を 呼 び 出 そ う と す る 場 合 に は 、 元 に 戻 し て お か な け れ ば な ら な い 。 fts_name フ ィ ー ル ド は 、 常 に NUL 終 端 さ れ る 。

fts_open()
fts_open
() 関 数 は 、 文 字 列 ポ イ ン タ ー の 配 列 へ の ポ イ ン タ ー を 引 き 数 に 取 る 。 こ の 文 字 列 ポ イ ン タ ー は 、 論 理 フ ァ イ ル 階 層 を つ く る 1 つ 以 上 の パ ス の 名 前 に な る 。 配 列 は 、 null ポ イ ン タ ー で 終 端 さ れ な け れ ば な ら な い 。 多 く の オ プ シ ョ ン が あ り 、 少 な く と も 1 つ (FTS_LOGICAL ま た は FTS_PHYSICAL) が 指 定 さ れ な け れ ば な ら な い 。 オ プ シ ョ ン は 以 下 の 値 の 論 理 和 を と っ て 選 択 す る 。
FTS_COMFOLLOW
こ の オ プ シ ョ ン は 、 FTS_LOGICAL の 指 定 に か か わ ら ず 、 ル ー ト パ ス に 指 定 さ れ た シ ン ボ リ ッ ク リ ン ク を す ぐ に た ど ら せ る 。

FTS_LOGICAL こ の オ プ シ ョ ン は 、

fts ル ー チ ン に シ ン ボ リ ッ ク リ ン ク そ の も

の で は な く 、 シ ン ボ リ ッ ク リ ン ク が 指 し て い る フ ァ イ ル の FTSENT 構 造 体 を 返 さ せ る 。 こ の オ プ シ ョ ン が 設 定 さ れ た 場 合 、 FTSENT 構 造 体 が ア プ リ ケ ー シ ョ ン に 返 さ れ る よ う な シ ン ボ リ ッ ク リ ン ク の み が 、 存 在 し な い フ ァ イ ル を 参 照 し て い る 。 FTS_LOGICAL ま た は FTS_PHYSICAL の ど ち ら か を 、 fts_open() 関 数 に 与 え な け れ ば 「 な ら な い 」 。

FTS_NOCHDIR パ フ ォ ー マ ン ス の 最 適 化 の た め 、

fts 関 数 群 は フ ァ イ ル 階 層 を

た ど る と き デ ィ レ ク ト リ を 変 え る 。 こ れ に は 、 階 層 を た ど っ て い る 間 は ア プ リ ケ ー シ ョ ン が あ る 特 定 の デ ィ レ ク ト リ に い る と い う こ と に 依 存 で き な い 、 と い う 副 作 用 が あ る 。 FTS_NOCHDIR オ プ シ ョ ン で 最 適 化 を 無 効 に す る と 、 fts 関 数 群 は 現 在 の デ ィ レ ク ト リ を 変 更 し な い 。 FTS_NOCHDIR が 指 定 さ れ 、 か つ fts_open() の 引 き 数 と し て 絶 対 パ ス 名 が 与 え ら れ た と き 以 外 、 ア プ リ ケ ー シ ョ ン は 、 自 ら カ レ ン ト デ ィ レ ク ト リ を 変 更 し た り 、 フ ァ イ ル に ア ク セ ス し た り す べ き で は な い 、 と い う 点 に 注 意 す る こ と 。

FTS_NOSTAT デ フ ォ ル ト で は 、 返 さ れ た

FTSENT 構 造 体 は 、 た ど ら れ た 各 フ ァ

イ ル に つ い て の フ ァ イ ル 特 徴 情 報 ( statp フ ィ ー ル ド ) を 参 照 す る 。 こ の オ プ シ ョ ン は 、 fts 関 数 群 が fts_info フ ィ ー ル ド を FTS_NSOK に 設 定 し statp の 内 容 を 定 義 さ れ な い ま ま に す る こ と を 許 す こ と に よ り 、 パ フ ォ ー マ ン ス の 最 適 化 に 必 要 な も の を 緩 和 す る 。

FTS_PHYSICAL こ の オ プ シ ョ ン は 、

fts ル ー チ ン に シ ン ボ リ ッ ク リ ン ク が 指 し

て い る フ ァ イ ル で は な く 、 シ ン ボ リ ッ ク リ ン ク 自 身 の FTSENT 構 造 体 を 返 さ せ る 。 こ の オ プ シ ョ ン が 設 定 さ れ る と 、 階 層 中 の す べ て の シ ン ボ リ ッ ク リ ン ク の FTSENT 構 造 体 が ア プ リ ケ ー シ ョ ン に 返 さ れ る 。 FTS_LOGICAL ま た は FTS_PHYSICAL の ど ち ら か を fts_open() 関 数 に 与 え な け れ ば 「 な ら な い 」 。

FTS_SEEDOT デ フ ォ ル ト で は 、

fts_open() の パ ス 引 き 数 と し て 指 定 さ れ な

い 限 り 、 フ ァ イ ル 階 層 中 に あ る "." ま た は ".." と い う 名 前 の フ ァ イ ル は 無 視 さ れ る 。 こ の オ プ シ ョ ン は 、 fts ル ー チ ン に こ れ ら の フ ァ イ ル の FTSENT 構 造 体 を 返 さ せ る 。

FTS_XDEV こ の オ プ シ ョ ン は 、

fts が 下 り 始 め の フ ァ イ ル と は 異 な る デ バ

イ ス 番 号 を 持 っ て い る デ ィ レ ク ト リ に 下 り る の を 阻 止 す る 。 引 き 数 compar() は 、 階 層 を た ど る 順 番 を 決 め る の に 使 わ れ る ユ ー ザ ー 定 義 関 数 を 指 定 す る 。 こ の 関 数 は 、 引 き 数 と し て FTSENT 構 造 体 の ポ イ ン タ ー の ポ イ ン タ ー を 2 つ と り 、 1 番 目 の 引 き 数 で 参 照 さ れ て い る フ ァ イ ル が 2 番 目 の 引 き 数 で 参 照 さ れ て い る フ ァ イ ル よ り 前 に あ る 場 合 は 負 の 値 ・ 同 じ 場 合 は ゼ ロ ・ 後 に あ る 場 合 は 正 の 値 を 返 さ な け れ ば な ら な い 。 FTSENT 構 造 体 の fts_accpath, fts_path, fts_pathlen フ ィ ー ル ド は 、 こ の 比 較 に 「 絶 対 」 使 っ て は い け な い 。 fts_info フ ィ ー ル ド が FTS_NS ま た は FTS_NSOK に 設 定 さ れ る 場 合 、 fts_statp フ ィ ー ル ド は こ れ ら の ど ち ら で も な い 。 compar() 引 き 数 が NULL の 場 合 、 デ ィ レ ク ト リ を た ど る 順 番 は 、 ル ー ト パ ス に つ い て は path_argv の な か で リ ス ト さ れ た 順 番 で 、 そ の 他 の フ ァ イ ル に つ い て は デ ィ レ ク ト リ 内 で リ ス ト さ れ た 順 番 と な る 。

fts_read()
fts_read
() 関 数 は 、 階 層 中 の フ ァ イ ル を 記 述 す る FTSENT 構 造 体 へ の ポ イ ン タ ー を 返 す 。 (読 み 込 み 可 能 で 、 循 環 し て い な い ) デ ィ レ ク ト リ は 、 1 回 は preorder で 、 も う 1 回 は postorder で 、 少 な く と も 2 回 た ど ら れ る 。 他 の フ ァ イ ル は 、 少 な く と も 1 回 た ど ら れ る 。 (デ ィ レ ク ト リ 間 の ハ ー ド リ ン ク に よ っ て 循 環 や シ ン ボ リ ッ ク リ ン ク へ の シ ン ボ リ ッ ク リ ン ク が 起 こ ら な い 場 合 、 フ ァ イ ル は 2 回 以 上 、 デ ィ レ ク ト リ は 3 回 以 上 た ど ら れ る 。 ) 階 層 中 の す べ て の メ ン バ ー が 返 さ れ た 場 合 、 fts_read() は NULL を 返 し 、 外 部 変 数 errno を 0 に す る 。 階 層 中 の フ ァ イ ル に 関 係 し な い エ ラ ー が 起 こ っ た 場 合 、 fts_read() は NULL を 返 し 、 errno を エ ラ ー に 対 応 し た 値 に す る 。 階 層 中 の フ ァ イ ル に 関 係 し た エ ラ ー が 起 こ っ た 場 合 、 FTSENT 構 造 体 へ の ポ イ ン タ ー が 返 さ れ 、 errno は 設 定 さ れ る 場 合 と 設 定 さ れ な い 場 合 が あ る (fts_info を 参 照 す る こ と )。

fts_read() に よ っ て 返 さ れ る FTSENT 構 造 体 は 、 同 じ フ ァ イ ル 階 層 ス ト リ ー ム へ の fts_close() の 呼 出 し の 後 に 上 書 き さ れ る 。 ま た 、 同 じ フ ァ イ ル 階 層 ス ト リ ー ム へ の fts_read() の 呼 出 し の 後 で も 、 構 造 体 が デ ィ レ ク ト リ を 表 現 し て い な い 限 り 上 書 き さ れ る 。 こ の 場 合 、 fts_read() 関 数 に よ っ て postorder で FTSENT 構 造 体 が 返 さ れ た 後 、 fts_read() の 呼 出 し が あ る ま で 、 こ れ ら の 構 造 体 は 上 書 き さ れ な い 。

fts_children()
fts_children
() 関 数 は 、 FTSENT 構 造 体 へ の ポ イ ン タ ー を 返 す 。 こ の 構 造 体 は 、 ( fts_read() で 最 も 新 し く 返 さ れ た FTSENT 構 造 体 で 表 現 さ れ る デ ィ レ ク ト リ に あ る フ ァ イ ル の ) ヌ ル 終 端 さ れ た リ ン ク リ ス ト の 最 初 の エ ン ト リ ー を 記 述 す る 。 こ の リ ス ト は 、 FTSENT 構 造 体 の fts_link フ ィ ー ル ド を 使 っ て リ ン ク さ れ 、 ユ ー ザ ー 指 定 の 比 較 関 数 が あ る 場 合 は 、 そ れ で 順 序 づ け ら れ る 。 fts_children() の 呼 出 し を 繰 り 返 す こ と で 、 こ の リ ン ク リ ス ト は 再 生 成 さ れ る 。 特 別 な 場 合 と し て 、 fts_read() が フ ァ イ ル 階 層 に つ い て 呼 ば れ て い な い 場 合 、 fts_children() は fts_open() に 指 定 さ れ た 論 理 デ ィ レ ク ト リ (つ ま り 、 fts_open() に 指 定 さ れ た 引 き 数 ) の 中 に あ る フ ァ イ ル へ の ポ イ ン タ ー を 返 す 。 そ れ 以 外 の 場 合 で 、 fts_read() に よ っ て 最 も 新 し く 返 さ れ た FTSENT 構 造 体 が preorder で た ど ら れ た デ ィ レ ク ト リ で な い 場 合 や 何 も 含 ん で い な い デ ィ レ ク ト リ の 場 合 は 、 fts_children() は NULL を 返 し 、 errno を 0 に す る 。 エ ラ ー が 起 こ っ た 場 合 、 fts_children() は NULL を 返 し 、 errno を エ ラ ー に 対 応 し た 値 に す る 。

fts_children() に よ っ て 返 さ れ る FTSENT 構 造 体 は 、 同 じ フ ァ イ ル 階 層 ス ト リ ー ム へ の fts_children(), fts_close(), fts_read() の 呼 出 し の 後 に 上 書 き さ れ る 場 合 が あ る 。

option は 、 次 の 値 に 設 定 で き る 。

FTS_NAMEONLY フ ァ イ ル 名 の み が 必 要 と さ れ て い る 。 返 さ れ た 構 造 体 の リ ン ク リ ス ト の

fts_name, fts_namelen フ ィ ー ル ド 以 外 の す べ て の フ ィ ー ル ド の 内 容 は 定 義 さ れ な い 。

fts_set() 関 数 fts_set() は 、 ユ ー ザ ー ア プ リ ケ ー シ ョ ン が ス ト リ ー ム ftsp の フ ァ イ ル f に つ い て 更 な る 処 理 を 決 定 す る こ と 許 す 。 fts_set() 関 数 は 、 成 功 し た 場 合 は 0 を 、 エ ラ ー が 起 こ っ た 場 合 は −1 を 返 す 。 option は 、 次 の 値 の い ず れ か 1 つ に 設 定 さ れ な け れ ば な ら な い 。

FTS_AGAIN フ ァ イ ル を 再 び た ど る 。 す べ て の フ ァ イ ル タ イ プ が 再 び た ど ら れ る 。 次 の

fts_read() の 呼 出 し に よ り 、 参 照 さ れ て い る フ ァ イ ル が 返 さ れ る 。 構 造 体 の fts_stat, fts_info フ ィ ー ル ド は こ の 時 に 初 期 化 さ れ る が 、 他 の フ ィ ー ル ド は 変 更 さ れ な い 。 こ の オ プ シ ョ ン は 、 fts_read() に よ っ て 最 も 新 し く 返 さ れ た フ ァ イ ル に つ い て の み 意 味 を 持 つ 。 通 常 は 、 postorder で デ ィ レ ク ト リ を た ど る 場 合 に 使 用 し 、 そ の 下 の 階 層 と 同 様 に 、 デ ィ レ ク ト リ を (preorder と postorder の 両 方 で ) 再 び た ど ら せ る 。

FTS_FOLLOW 参 照 さ れ て る フ ァ イ ル は 、 シ ン ボ リ ッ ク リ ン ク で な け れ ば な ら な い 。 参 照 さ れ て い る フ ァ イ ル が

fts_read() に よ っ て 最 も 新 し く 返 さ れ た も の で あ る 場 合 、 次 の fts_read() の 呼 出 し で は 、 シ ン ボ リ ッ ク リ ン ク そ の も の で は な く 、 シ ン ボ リ ッ ク リ ン ク が 指 し て い る 先 を 反 映 す る よ う に fts_info, fts_statp を 再 び 初 期 化 し た フ ァ イ ル が 返 さ れ る 。 フ ァ イ ル が fts_children() に よ っ て 最 も 新 し く 返 さ れ た も の の 1 つ で あ る 場 合 、 fts_read() に よ っ て 返 さ れ た と き 、 構 造 体 の fts_info, fts_statp フ ィ ー ル ド は 、 シ ン ボ リ ッ ク リ ン ク そ の も の で は な く 、 シ ン ボ リ ッ ク リ ン ク が 指 し て い る 先 を 反 映 す る 。 ど ち ら の 場 合 で も 、 シ ン ボ リ ッ ク リ ン ク が 指 し て い る 先 が な い と き は 、 返 さ れ た 構 造 体 の フ ィ ー ル ド は 変 更 さ れ ず 、 fts_info フ ィ ー ル ド が FTS_SLNONE に 設 定 さ れ る 。 リ ン ク 先 が デ ィ レ ク ト リ の 場 合 、 フ ァ イ ル が preorder で 返 さ れ た 後 、 下 の 階 層 の す べ て フ ァ イ ル が 返 さ れ 、 そ の 後 で postorder で 返 さ れ る 。

FTS_SKIP こ の フ ァ イ ル の 下 の 階 層 は た ど ら れ な い 。 こ の フ ァ イ ル は 、

fts_children() ま た は fts_read() の ど ち ら か に よ っ て 最 も 新 し く 返 さ れ た も の の 1 つ で あ る 。

fts_close()
fts_close
() 関 数 は 、 フ ァ イ ル 階 層 ス ト リ ー ム ftsp を 閉 じ る 。 そ し て 、 現 在 の デ ィ レ ク ト リ を ftsp を 開 く た め に fts_open() が 呼 ば れ た デ ィ レ ク ト リ に 復 元 す る 。 fts_close() 関 数 は 、 成 功 し た 場 合 は 0 を 、 エ ラ ー が 起 こ っ た 場 合 は −1 を 返 す 。

エ ラ ー

関 数 fts_open() が 失 敗 し た 場 合 、 errno は 、 ラ イ ブ ラ リ 関 数 open(2)malloc(3) に 対 し て 指 定 さ れ る エ ラ ー に 設 定 さ れ る 。 関 数 fts_close() が 失 敗 し た 場 合 、 errno は 、 ラ イ ブ ラ リ 関 数 chdir(2)close(2) に 対 し て 指 定 さ れ る エ ラ ー に 設 定 さ れ る 。 関 数 fts_read() と fts_children() が 失 敗 し た 場 合 、 errno は 、 ラ イ ブ ラ リ 関 数 chdir(2), malloc(3), opendir(3), readdir(3), stat(2) に 対 し て 指 定 さ れ る エ ラ ー に 設 定 さ れ る 。 更 に 、 fts_children(), fts_open(), fts_set() が 失 敗 し た 場 合 、 errno が 次 の 値 に さ れ る 。

EINVAL オ プ シ ョ ン が 無 効 で あ っ た 。

バ ー ジ ョ ン

こ れ ら の 関 数 は 、 Linux で は glibc2 か ら 使 用 可 能 で あ る 。

準 拠

4.4BSD.

バ グ

こ の マ ニ ュ ア ル ペ ー ジ で 説 明 し た API は い ず れ も 、 LFS API を 使 う プ ロ グ ラ ム を コ ン パ イ ル す る 場 合 (例 え ば 、 −D_FILE_OFFSET_BITS=64 で コ ン パ イ ル す る 場 合 な ど )、 安 全 で は な い 。

関 連 項 目

find(1), chdir(2), stat(2), ftw(3), qsort(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。