Move get_Command_line_args function into WIN32 define macro (to allow building on Linux).

mac-build
sigonasr2 6 months ago
parent 764fdfb06d
commit b46350ac78
  1. 47
      Adventures in Lestoria/AdventuresInLestoria.cpp

@ -3055,33 +3055,32 @@ int main(char**args,const int argn)
return 0; return 0;
} }
void get_command_line_args( int * argc, char *** argv ) #ifndef _DEBUG
{ #ifdef _WIN32
// Get the command line arguments as wchar_t strings void get_command_line_args( int * argc, char *** argv )
wchar_t ** wargv = CommandLineToArgvW( GetCommandLineW(), argc ); {
if (!wargv) { *argc = 0; *argv = NULL; return; } // Get the command line arguments as wchar_t strings
wchar_t ** wargv = CommandLineToArgvW( GetCommandLineW(), argc );
if (!wargv) { *argc = 0; *argv = NULL; return; }
// Count the number of bytes necessary to store the UTF-8 versions of those strings // Count the number of bytes necessary to store the UTF-8 versions of those strings
int n = 0; int n = 0;
for (int i = 0; i < *argc; i++) for (int i = 0; i < *argc; i++)
n += WideCharToMultiByte( CP_UTF8, 0, wargv[i], -1, NULL, 0, NULL, NULL ) + 1; n += WideCharToMultiByte( CP_UTF8, 0, wargv[i], -1, NULL, 0, NULL, NULL ) + 1;
// Allocate the argv[] array + all the UTF-8 strings // Allocate the argv[] array + all the UTF-8 strings
*argv = (char**)(malloc( (*argc + 1) * sizeof(char *) + n )); *argv = (char**)(malloc( (*argc + 1) * sizeof(char *) + n ));
if (!*argv) { *argc = 0; return; } if (!*argv) { *argc = 0; return; }
// Convert all wargv[] --> argv[] // Convert all wargv[] --> argv[]
char * arg = (char *)&((*argv)[*argc + 1]); char * arg = (char *)&((*argv)[*argc + 1]);
for (int i = 0; i < *argc; i++) for (int i = 0; i < *argc; i++)
{ {
(*argv)[i] = arg; (*argv)[i] = arg;
arg += WideCharToMultiByte( CP_UTF8, 0, wargv[i], -1, arg, n, NULL, NULL ) + 1; arg += WideCharToMultiByte( CP_UTF8, 0, wargv[i], -1, arg, n, NULL, NULL ) + 1;
} }
(*argv)[*argc] = NULL; (*argv)[*argc] = NULL;
} }
#ifndef _DEBUG
#ifdef _WIN32
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
int argc; int argc;
char ** argv; char ** argv;

Loading…
Cancel
Save