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 }