fts_name で 参 照 さ
れ る 文 字 列 の
長 さ 。
階 層 を
た ど っ て 、 こ
の フ ァ イ ル が
み つ か っ た 深
さ 。 −1 〜 N の 数
値 で 表 さ れ る
。 階 層 を た ど
る と き の 出 発
点 (ル ー ト ) の 親
デ ィ レ ク ト リ
を 表 す FTSENT 構 造
体 で は −1 と な
る 。 ま た 、 ル
ー ト 自 身 の FTSENT
構 造 体 で は 0 に
な る 。
関 数
fts_children() と fts_read() か
ら 返 さ れ る FTSENT
構 造 体 の fts_info フ
ィ ー ル ド が FTS_DNR,
FTS_ERR, FTS_NS に 設 定
さ れ て い る 場
合 、 fts_errno フ ィ
ー ル ド に は エ
ラ ー の 原 因 を
示 す 外 部 変 数
errno の 値 が 入 る
。 そ れ 以 外 の
場 合 、 fts_errno フ
ィ ー ル ド の 内
容 は 定 義 さ れ
な い 。
こ の フ
ィ ー ル ド は 、
ア プ リ ケ ー シ
ョ ン プ ロ グ ラ
ム か ら 使 用 す
る た め に 提 供
さ れ 、 fts 関 数 群
で は 変 更 さ れ
な い 。 こ の フ
ィ ー ル ド は 0 で
初 期 化 さ れ る
。
こ の フ
ィ ー ル ド は 、
ア プ リ ケ ー シ
ョ ン プ ロ グ ラ
ム か ら 使 用 す
る た め に 提 供
さ れ 、 fts 関 数 群
で は 変 更 さ れ
な い 。 こ の フ
ィ ー ル ド は NULL
で 初 期 化 さ れ
る 。
現 在 の
フ ァ イ ル の す
ぐ 上 の 階 層 に
あ る フ ァ イ ル
(つ ま り 、 現 在
の フ ァ イ ル が
メ ン バ ー に な
っ て い る デ ィ
レ ク ト リ ) を 参
照 す る 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 フ ィ
ー ル ド は 定 義
さ れ な い 。
こ の フ
ァ イ ル の stat(2) 情
報 へ の ポ イ ン
タ ー 。 フ ァ イ
ル 階 層 中 の す
べ て の フ ァ イ
ル の パ ス に 対
し て 、 た だ 1 つ
の バ ッ フ ァ ー
が 使 わ れ る 。
し た が っ て 、
fts_path と fts_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/ に 書
か れ て い る 。
|