Mercurial > minori
comparison src/core/filesystem.cpp @ 44:619cbd6e69f9
filesystem: fix CreateDirectories function
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Fri, 22 Sep 2023 13:52:11 -0400 |
| parents | 2743011a6042 |
| children | 4b05bc7668eb |
comparison
equal
deleted
inserted
replaced
| 43:eb9a78345ecb | 44:619cbd6e69f9 |
|---|---|
| 24 | 24 |
| 25 bool CreateDirectories(std::string path) { | 25 bool CreateDirectories(std::string path) { |
| 26 std::string temp = ""; | 26 std::string temp = ""; |
| 27 size_t start; | 27 size_t start; |
| 28 size_t end = 0; | 28 size_t end = 0; |
| 29 temp.append(path.substr(0, path.find_first_not_of(DELIM, end))); | |
| 29 | 30 |
| 30 while ((start = path.find_first_not_of(DELIM, end)) != std::string::npos) { | 31 while ((start = path.find_first_not_of(DELIM, end)) != std::string::npos) { |
| 31 end = path.find(DELIM, start); | 32 end = path.find(DELIM, start); |
| 32 temp.append(path.substr(start, end - start)); | 33 temp.append(path.substr(start, end - start)); |
| 33 #ifdef WIN32 | 34 #ifdef WIN32 |
| 34 if (!CreateDirectoryA(temp.c_str(), NULL) && GetLastError() == ERROR_PATH_NOT_FOUND) | 35 if (!CreateDirectoryA(temp.c_str(), NULL) && GetLastError() == ERROR_PATH_NOT_FOUND) |
| 35 /* ERROR_PATH_NOT_FOUND should NOT happen here */ | 36 /* ERROR_PATH_NOT_FOUND should NOT happen here */ |
| 36 return false; | 37 return false; |
| 37 #else | 38 #else |
| 38 if (mkdir(temp.c_str(), 0755)) | 39 struct stat st; |
| 39 return false; | 40 if (stat(temp.c_str(), &st) == -1) |
| 41 mkdir(temp.c_str(), 0755); | |
| 40 #endif | 42 #endif |
| 41 temp.append(DELIM); | 43 temp.append(DELIM); |
| 42 } | 44 } |
| 43 return true; | 45 return true; |
| 44 } | 46 } |
