char* SDL_GetPrefPath(const char* org, const char* app)
org | 組織名 |
app | アプリケーション名 |
環境に依存した記述のユーザディレクトリのUTF-8文字列を戻す. 問題がある(ディレクトリの作成に失敗など)のときNULLを戻す.
char *pref_path = NULL;
void InitializePrefPath() {
char *base_path = SDL_GetPrefPath("My Company", "My Awesome SDL 2 Game");
if (base_path) {
pref_path = base_path;
} else {
/* ゲームで情報を書かないようにする処理をここに書く */
}
}
これはユーザがどこにアプリケーション固有のファイル(設定やセーブデータ等)を書き込める場所を表している. このディレクトリは, アプリケーションごと, ユーザごとに異なる.
この関数はネイティブのファイルシステムにふさわしい場所を選択し, 必要ならばディレクトリを生成する. そして, UTF-8の絶対パスの文字列で戻す.
Windowsならば, 文字列は次のようになる: C:¥¥Users¥¥bob¥¥AppData¥¥Roaming¥¥My Company¥¥My Program Name¥¥
Linuxならば, 文字列は次のようになる: /home/bob/.local/share/My Program Name/
macOSならば, 文字列は次のようになる: /Users/bob/Library/Application Support/My Program Name/
この関数が戻した場所のみ安全にファイルを書き込めるとみなすべきである. (書き込めるであろうSDL_GetBasePath()やその親ディレクトリには書き込むべきでない.)
orgとappはディレクトリの名前の一部になる. 次のルールに従うべきである.
パス名の末尾には, パスの区切り文字(Windowsならば'¥', 他の環境ならば'/')があることが保障されている.
戻されたポインタはアプリケーションが管理する必要がある. 使った後はポインタに対してSDL_free()を呼ぶこと.