1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-10 13:23:41 +00:00

Updated to support UTF8 encoded argv parameters on windows

This commit is contained in:
Bryan Roe
2019-08-08 16:54:22 -07:00
parent b34eee2dca
commit b77a2f9687
2 changed files with 53 additions and 2 deletions

View File

@@ -101,7 +101,12 @@ ILibTransport_DoneState kvm_serviceWriteSink(char *buffer, int bufferLen, void *
}
#endif
#ifdef WIN32
#define wmain_free(argv) for(argvi=0;argvi<(ILibMemory_Size(argv)/sizeof(void*));++argvi){ILibMemory_Free(argv[argvi]);}ILibMemory_Free(argv);
int wmain(int argc, char **wargv)
#else
int main(int argc, char **argv)
#endif
{
// Check if .JS file is integrated with executable
char *integratedJavaScript = NULL;
@@ -109,6 +114,17 @@ int main(int argc, char **argv)
int retCode = 0;
int capabilities = 0;
#ifdef WIN32
int argvi, argvsz;
char **argv = (char**)ILibMemory_SmartAllocate(argc * sizeof(void*));
for (argvi = 0; argvi < argc; ++argvi)
{
argvsz = WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wargv[argvi], -1, NULL, 0, NULL, NULL);
argv[argvi] = (char*)ILibMemory_SmartAllocate(argvsz);
WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)wargv[argvi], -1, argv[argvi], argvsz, NULL, NULL);
}
#endif
#if defined (_POSIX)
#ifndef _NOILIBSTACKDEBUG
char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
@@ -139,6 +155,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
}
#ifndef MICROSTACK_NOTLS
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
#endif
#ifdef WIN32
wmain_free(argv);
#endif
return(0);
}
@@ -171,6 +190,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
ILibChain_DebugOffset(ILibScratchPad, sizeof(ILibScratchPad), (uint64_t)addrOffset);
printf("%s", ILibScratchPad);
#ifdef WIN32
wmain_free(argv);
#endif
return(0);
}
@@ -184,6 +206,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
#endif
ILibChain_DebugDelta(ILibScratchPad, sizeof(ILibScratchPad), delta);
printf("%s", ILibScratchPad);
#ifdef WIN32
wmain_free(argv);
#endif
return(0);
}
@@ -195,6 +220,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
{
// -update:"C:\Users\Public\Downloads\MeshManageability\Debug\MeshConsol2.exe"
MeshAgent_PerformSelfUpdate(argv[0], argv[1] + 8, argc, argv);
#ifdef WIN32
wmain_free(argv);
#endif
return 0;
}
}
@@ -229,6 +257,7 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
{
ILib_WindowsExceptionDebug(&winExceptionContext);
}
wmain_free(argv);
_CrtDumpMemoryLeaks();
#else
agentHost = MeshAgent_Create(capabilities);