# FS_COMMAND_FINDPATH

## 定義

  `FSResult FS_ARCHIVE_PROC_FUNC(FSFile *p_file, FSCommandType command /* = FS_COMMAND_FINDPATH */);
  `

## 説明

アーカイブコマンド `FS_COMMAND_FINDPATH の動作仕様を以下に示します`。

このコマンドに渡される引数

>     p_file に格納された変数 arg.findpath をコマンド引数とします。
>     この変数は nitro/fs/file.h にて以下のように定義されています。

>     typedef struct
>     {
>         FSDirPos    pos;
>         const char  *path;
>         BOOL    find_directory;
>         union {
>             FSFileID    *file;
>             FSDirPos    *dir;
>         } result;
>     } FSFindPathInfo;

> 引数の内容は以下のとおりです。

引数 | 内容
pos | 検索すべきファイルまたはディレクトリの基準となるディレクトリ位置を示します。 変数のうち、pos.index と pos.pos は無視して構いません。
path | pos を基準とする相対パス文字列へのポインタを示します。
find_directory | 検索すべき対象がファイルなら FALSE を、ディレクトリなら TRUE が格納されています。
result.file | find_directory が FALSE の場合、検索結果を格納するためのファイルIDへのポインタを示します。
result.dir | find_directory が TRUE の場合、検索結果を格納するためのディレクトリ位置へのポインタを示します。

このコマンドに要求される動作

>     p_file の情報は何も使用しません。
>     引数の result.file または result.dir の指すメモリを以下のように設定します。

>     ・引数 の find_directory が FALSE の場合、ディレクトリ位置 pos を基準として
>       path が指す相対パスの位置にあるファイルのIDを取得し、その値を result.file へ格納します。

>     ・引数 の find_directory が TRUE の場合、ディレクトリ位置 pos を基準として
>       path が指す相対パスの位置にあるディレクトリ位置を取得し、その値を result.dir へ格納します。

>     いずれの場合も、指定されたパスが不正な場合は何も行いません。

デフォルトの実装

> 与えられた引数から、FS_COMMAND_SEEKDIR コマンドと FS_COMMAND_READDIR コマンドのみを使用して結果を求めます。

コマンドの結果

>     FS_RESULT_SUCCESS を返した場合、result.file または result.dir には
>     検索の結果見つかった正しい値が格納されていると判断されます。
>     そうでない場合、指定されたパスは存在しないか、パス形式が不正であったか、
>     またはその他のエラーにより失敗したと判断されます。

このコマンドが使用される関数

> FS_ChangeDir
> FS_OpenFile
> FS_ConvertPathToFileID

## 参照

`FSArchive FS_ARCHIVE_PROC_FUNC FS_COMMAND_*
FS_SetArchiveProc`

## 履歴

2004/07/12 初版