# FS_*FileAuto,FS_*DirectoryAuto

## 構文

    #include <nitro/fs.h>

    BOOL FS_CreateFileAuto(const char *path, u32 permit);
    BOOL FS_DeleteFileAuto(const char *path);
    BOOL FS_RenameFileAuto(const char *src, const char *dst);
    BOOL FS_CreateDirectoryAuto(const char *path, u32 permit);
    BOOL FS_DeleteDirectoryAuto(const char *path);
    BOOL FS_RenameDirectoryAuto(const char *src, const char *dst);

## 引数

接尾子"Auto"のない通常版の関数と同様です。

## 返り値

接尾子"Auto"のない通常版の関数と同様です。

## 説明

対象となるパスに対してディレクトリ操作を自動的に補完するという点以外は、 接尾子"Auto"のない通常版の関数と同様です。
これらの関数は以下のように内部で処理を補完します。

- Createの生成パスまたはRenameの移動先パスが存在しないディレクトリの下層にある場合、 そのパスへ至る全てのサブディレクトリを自動的に生成します。
  目的の処理が失敗した場合は、自動的に生成されたディレクトリは再び削除されます。
- Deleteの削除対象ディレクトリが空でない場合、そのディレクトリ以下の全ての要素を削除します。

## 注意

- この関数を割り込みハンドラ(IRQモード)から呼び出すことはできません。
  また、割り込みを禁止したままの状態にあると処理が完了しない場合がある点に注意して下さい。
- これらの関数はディレクトリ操作を自動的に補完しますので、 通常版であれば失敗するはずの誤ったパスに対しても処理を成功させてしまうことがありえます。 利用にあたってはこの点に細心の注意を払う必要があります。

      安全な例：
        // 常に定数文字列のみを使用すればデバッグがより確実になります。
        // このような一定の用途に限定して利便性のために使用されることを推奨します。
        static const char *dir = "tmp:/workdir/";
        FS_DeleteDirectoryAuto(dir);

      危険な例：
        // 動的に生成したパスは不具合をより生じやすくなります。
        // 実行環境に依存する場面ではこれらの使用を避けるか、特に注意深くご使用ください。
        STD_SPrintf(path, "savedata:/users/%s/", newUserName);
        FS_CreateDirectoryAuto(path);

- これらの関数が失敗した場合、`FS_GetArchiveResultCode()`を使用しても正確なエラー内容を確認することはできません。

## 参照

`FS_CreateDirectory FS_DeleteDirectory FS_RenameDirectory FS_CreateFile FS_DeleteFile FS_RenameFile`

## 履歴

2008/01/25 初版