21 #include "../../SDL_internal.h"
23 #ifdef SDL_FILESYSTEM_WINDOWS
28 #include "../../core/windows/SDL_windows.h"
39 typedef DWORD (WINAPI *GetModuleFileNameExW_t)(HANDLE, HMODULE, LPWSTR, DWORD);
40 GetModuleFileNameExW_t pGetModuleFileNameExW;
43 HANDLE psapi = LoadLibrary(L
"psapi.dll");
53 pGetModuleFileNameExW = (GetModuleFileNameExW_t)GetProcAddress(psapi,
"GetModuleFileNameExW");
54 if (!pGetModuleFileNameExW) {
71 len = pGetModuleFileNameExW(GetCurrentProcess(),
NULL,
path, buflen);
88 for (
i =
len-1;
i > 0;
i--) {
89 if (
path[
i] ==
'\\') {
114 WCHAR
path[MAX_PATH];
118 size_t new_wpath_len = 0;
119 BOOL api_result =
FALSE;
147 new_wpath_len = lstrlenW(worg) + lstrlenW(wapp) + lstrlenW(
path) + 3;
149 if ((new_wpath_len + 1) > MAX_PATH) {
157 lstrcatW(
path, L
"\\");
158 lstrcatW(
path, worg);
162 api_result = CreateDirectoryW(
path,
NULL);
163 if (api_result ==
FALSE) {
164 if (GetLastError() != ERROR_ALREADY_EXISTS) {
171 lstrcatW(
path, L
"\\");
172 lstrcatW(
path, wapp);
175 api_result = CreateDirectoryW(
path,
NULL);
176 if (api_result ==
FALSE) {
177 if (GetLastError() != ERROR_ALREADY_EXISTS) {
183 lstrcatW(
path, L
"\\");