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) {
61 void *ptr =
SDL_realloc(path, buflen *
sizeof (WCHAR));
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;
129 if (!
SUCCEEDED(SHGetFolderPathW(
NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE,
NULL, 0, path))) {
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
"\\");
#define WIN_UTF8ToString(S)
#define SDL_InvalidParamError(param)
#define WIN_StringToUTF8(S)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
#define SDL_assert(condition)
#define SDL_OutOfMemory()
int WIN_SetError(const char *prefix)
Include file for filesystem SDL API functions.
GLsizei const GLchar *const * path
char * SDL_GetBasePath(void)
Get the path where the application resides.