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 初版