2 * @file main-win-file-utils.cpp
3 * @brief Windows版固有実装(ファイル関連処理)
6 #include "main-win/main-win-file-utils.h"
7 #include "main-win/main-win-define.h"
8 #include "main-win/main-win-windows.h"
9 #include "util/angband-files.h"
12 * Check for existance of a file
14 bool check_file(concptr s)
16 char path[MAIN_WIN_MAX_PATH];
18 DWORD attrib = GetFileAttributesA(path);
19 if (attrib == INVALID_FILE_NAME)
21 if (attrib & FILE_ATTRIBUTE_DIRECTORY)
28 * Check for existance of a directory
30 bool check_dir(concptr s)
32 char path[MAIN_WIN_MAX_PATH];
35 if (i && (path[i - 1] == '\\'))
38 DWORD attrib = GetFileAttributesA(path);
39 if (attrib == INVALID_FILE_NAME)
41 if (!(attrib & FILE_ATTRIBUTE_DIRECTORY))
48 * @brief 候補リストを順に確認し、存在するファイルのパスを返す。
50 * @param files ファイル名のリスト
51 * @return ファイルのパスを返す。候補リストのファイルすべて存在しない場合は空文字列を返す。
53 std::string find_any_file(concptr dir, std::initializer_list<concptr> files)
55 char path[MAIN_WIN_MAX_PATH];
57 for (concptr filename : files) {
58 path_build(path, MAIN_WIN_MAX_PATH, dir, filename);
59 if (check_file(path)) {
60 return std::string(path);