1
0
Fork 0

Codechange: Simplify FioCreateDirectory.

`std::filesystem` provides `create_directories()` as a cross-platform way to create a directory tree.
pull/12493/head
Peter Nelson 2024-04-13 19:14:56 +01:00
parent 090c3b3abf
commit 23dab47ce3
No known key found for this signature in database
GPG Key ID: 8EF8F0A467DF75ED
1 changed files with 3 additions and 18 deletions

View File

@ -348,24 +348,9 @@ FILE *FioFOpenFile(const std::string &filename, const char *mode, Subdirectory s
*/
void FioCreateDirectory(const std::string &name)
{
auto p = name.find_last_of(PATHSEPCHAR);
if (p != std::string::npos) {
std::string dirname = name.substr(0, p);
DIR *dir = ttd_opendir(dirname.c_str());
if (dir == nullptr) {
FioCreateDirectory(dirname); // Try creating the parent directory, if we couldn't open it
} else {
closedir(dir);
}
}
/* Ignore directory creation errors; they'll surface later on, and most
* of the time they are 'directory already exists' errors anyhow. */
#if defined(_WIN32)
CreateDirectory(OTTD2FS(name).c_str(), nullptr);
#else
mkdir(OTTD2FS(name).c_str(), 0755);
#endif
/* Ignore directory creation errors; they'll surface later on. */
std::error_code error_code;
std::filesystem::create_directories(OTTD2FS(name), error_code);
}
/**