fix retrieval of program path for MinGW builds without sdl

force usage of "W" functions when not compiled with -DUNICODE
This commit is contained in:
Thomas Bernard 2019-05-23 11:42:25 +02:00
parent cb78ac6136
commit fdb317ebdf
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -1391,9 +1391,9 @@ int main(int argc,char * argv[])
#endif #endif
{ {
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2) #if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2)
TCHAR ModuleFileName[MAX_PATH]; WCHAR ModuleFileName[MAX_PATH];
TCHAR TmpArg[MAX_PATH]; WCHAR TmpArg[MAX_PATH];
TCHAR ShortFileName[MAX_PATH]; WCHAR ShortFileName[MAX_PATH];
int i, j, k; int i, j, k;
int inquote = 0; int inquote = 0;
int argc = 0; int argc = 0;
@ -1401,12 +1401,12 @@ int main(int argc,char * argv[])
char * argv[64] = {NULL}; char * argv[64] = {NULL};
Init_Win32(hInstance, hPrevInstance); Init_Win32(hInstance, hPrevInstance);
if (GetModuleFileName(NULL, ModuleFileName, MAX_PATH) == 0) if (GetModuleFileNameW(NULL, ModuleFileName, MAX_PATH) == 0)
{ {
MessageBoxA(NULL, "Error initializing program", NULL, MB_OK | MB_ICONERROR); MessageBoxA(NULL, "Error initializing program", NULL, MB_OK | MB_ICONERROR);
return 1; return 1;
} }
GetShortPathName(ModuleFileName, ShortFileName, MAX_PATH); GetShortPathNameW(ModuleFileName, ShortFileName, MAX_PATH);
argv[argc++] = arg_buffer; argv[argc++] = arg_buffer;
for (i = 0; i < (int)sizeof(arg_buffer); ) for (i = 0; i < (int)sizeof(arg_buffer); )
{ {
@ -1435,7 +1435,7 @@ int main(int argc,char * argv[])
{ // next argument { // next argument
TmpArg[k++] = '\0'; TmpArg[k++] = '\0';
argv[argc++] = arg_buffer + i; argv[argc++] = arg_buffer + i;
if (GetShortPathName(TmpArg, ShortFileName, MAX_PATH) > 0) if (GetShortPathNameW(TmpArg, ShortFileName, MAX_PATH) > 0)
{ {
for (k = 0; ShortFileName[k] != 0; k++) for (k = 0; ShortFileName[k] != 0; k++)
arg_buffer[i++] = ShortFileName[k]; arg_buffer[i++] = ShortFileName[k];
@ -1456,7 +1456,7 @@ int main(int argc,char * argv[])
if (k > 0) if (k > 0)
{ {
argv[argc++] = arg_buffer + i; argv[argc++] = arg_buffer + i;
if (GetShortPathName(TmpArg, ShortFileName, MAX_PATH) > 0) if (GetShortPathNameW(TmpArg, ShortFileName, MAX_PATH) > 0)
{ {
for (k = 0; ShortFileName[k] != 0; k++) for (k = 0; ShortFileName[k] != 0; k++)
arg_buffer[i++] = ShortFileName[k]; arg_buffer[i++] = ShortFileName[k];