mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-11 22:03:48 +00:00
Updated to support UTF8 encoded argv parameters on windows
This commit is contained in:
@@ -101,7 +101,12 @@ ILibTransport_DoneState kvm_serviceWriteSink(char *buffer, int bufferLen, void *
|
|||||||
}
|
}
|
||||||
#endif
|
#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)
|
int main(int argc, char **argv)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// Check if .JS file is integrated with executable
|
// Check if .JS file is integrated with executable
|
||||||
char *integratedJavaScript = NULL;
|
char *integratedJavaScript = NULL;
|
||||||
@@ -109,6 +114,17 @@ int main(int argc, char **argv)
|
|||||||
int retCode = 0;
|
int retCode = 0;
|
||||||
int capabilities = 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)
|
#if defined (_POSIX)
|
||||||
#ifndef _NOILIBSTACKDEBUG
|
#ifndef _NOILIBSTACKDEBUG
|
||||||
char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
||||||
@@ -139,6 +155,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
}
|
}
|
||||||
#ifndef MICROSTACK_NOTLS
|
#ifndef MICROSTACK_NOTLS
|
||||||
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
||||||
|
#endif
|
||||||
|
#ifdef WIN32
|
||||||
|
wmain_free(argv);
|
||||||
#endif
|
#endif
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@@ -171,6 +190,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
|
|
||||||
ILibChain_DebugOffset(ILibScratchPad, sizeof(ILibScratchPad), (uint64_t)addrOffset);
|
ILibChain_DebugOffset(ILibScratchPad, sizeof(ILibScratchPad), (uint64_t)addrOffset);
|
||||||
printf("%s", ILibScratchPad);
|
printf("%s", ILibScratchPad);
|
||||||
|
#ifdef WIN32
|
||||||
|
wmain_free(argv);
|
||||||
|
#endif
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,6 +206,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
#endif
|
#endif
|
||||||
ILibChain_DebugDelta(ILibScratchPad, sizeof(ILibScratchPad), delta);
|
ILibChain_DebugDelta(ILibScratchPad, sizeof(ILibScratchPad), delta);
|
||||||
printf("%s", ILibScratchPad);
|
printf("%s", ILibScratchPad);
|
||||||
|
#ifdef WIN32
|
||||||
|
wmain_free(argv);
|
||||||
|
#endif
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,6 +220,9 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
{
|
{
|
||||||
// -update:"C:\Users\Public\Downloads\MeshManageability\Debug\MeshConsol2.exe"
|
// -update:"C:\Users\Public\Downloads\MeshManageability\Debug\MeshConsol2.exe"
|
||||||
MeshAgent_PerformSelfUpdate(argv[0], argv[1] + 8, argc, argv);
|
MeshAgent_PerformSelfUpdate(argv[0], argv[1] + 8, argc, argv);
|
||||||
|
#ifdef WIN32
|
||||||
|
wmain_free(argv);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -229,6 +257,7 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
{
|
{
|
||||||
ILib_WindowsExceptionDebug(&winExceptionContext);
|
ILib_WindowsExceptionDebug(&winExceptionContext);
|
||||||
}
|
}
|
||||||
|
wmain_free(argv);
|
||||||
_CrtDumpMemoryLeaks();
|
_CrtDumpMemoryLeaks();
|
||||||
#else
|
#else
|
||||||
agentHost = MeshAgent_Create(capabilities);
|
agentHost = MeshAgent_Create(capabilities);
|
||||||
|
|||||||
@@ -913,7 +913,9 @@ BOOL CtrlHandler(DWORD fdwCtrlType)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int main(int argc, char* argv[])
|
|
||||||
|
#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[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
size_t str2len = 0;// , proxylen = 0, taglen = 0;
|
size_t str2len = 0;// , proxylen = 0, taglen = 0;
|
||||||
@@ -924,6 +926,15 @@ int main(int argc, char* argv[])
|
|||||||
CONTEXT winException;
|
CONTEXT winException;
|
||||||
int retCode = 0;
|
int retCode = 0;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifndef NOMESHCMD
|
#ifndef NOMESHCMD
|
||||||
// Check if this is a Mesh command operation
|
// Check if this is a Mesh command operation
|
||||||
@@ -945,6 +956,7 @@ int main(int argc, char* argv[])
|
|||||||
#ifndef MICROSTACK_NOTLS
|
#ifndef MICROSTACK_NOTLS
|
||||||
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
||||||
#endif
|
#endif
|
||||||
|
wmain_free(argv);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -959,6 +971,7 @@ int main(int argc, char* argv[])
|
|||||||
#endif
|
#endif
|
||||||
ILibChain_DebugOffset(ILibScratchPad, sizeof(ILibScratchPad), (uint64_t)addrOffset);
|
ILibChain_DebugOffset(ILibScratchPad, sizeof(ILibScratchPad), (uint64_t)addrOffset);
|
||||||
printf("%s", ILibScratchPad);
|
printf("%s", ILibScratchPad);
|
||||||
|
wmain_free(argv);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -968,6 +981,7 @@ int main(int argc, char* argv[])
|
|||||||
sscanf_s(argv[2], "%lld", &delta);
|
sscanf_s(argv[2], "%lld", &delta);
|
||||||
ILibChain_DebugDelta(ILibScratchPad, sizeof(ILibScratchPad), delta);
|
ILibChain_DebugDelta(ILibScratchPad, sizeof(ILibScratchPad), delta);
|
||||||
printf("%s", ILibScratchPad);
|
printf("%s", ILibScratchPad);
|
||||||
|
wmain_free(argv);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1042,6 +1056,7 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
kvm_server_mainloop((void*)parm);
|
kvm_server_mainloop((void*)parm);
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (argc > 1 && strcasecmp(argv[1], "-kvm1") == 0)
|
else if (argc > 1 && strcasecmp(argv[1], "-kvm1") == 0)
|
||||||
@@ -1073,6 +1088,7 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
|
|
||||||
kvm_server_mainloop((void*)parm);
|
kvm_server_mainloop((void*)parm);
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1110,6 +1126,7 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
ILib_WindowsExceptionDebug(&winException);
|
ILib_WindowsExceptionDebug(&winException);
|
||||||
}
|
}
|
||||||
|
wmain_free(argv);
|
||||||
return(retCode);
|
return(retCode);
|
||||||
}
|
}
|
||||||
else if (argc > 1 && (strcasecmp(argv[1], "state") == 0))
|
else if (argc > 1 && (strcasecmp(argv[1], "state") == 0))
|
||||||
@@ -1131,6 +1148,7 @@ int main(int argc, char* argv[])
|
|||||||
else if (serviceState == 6) { printf("Pause Pending"); }
|
else if (serviceState == 6) { printf("Pause Pending"); }
|
||||||
else if (serviceState == 7) { printf("Paused"); }
|
else if (serviceState == 7) { printf("Paused"); }
|
||||||
else if (serviceState == 100) { printf("Not installed"); }
|
else if (serviceState == 100) { printf("Not installed"); }
|
||||||
|
wmain_free(argv);
|
||||||
return serviceState;
|
return serviceState;
|
||||||
}
|
}
|
||||||
else if (argc > 1 && strcasecmp(argv[1], "-signcheck") == 0 && GetModuleFileNameA(NULL, str2, _MAX_PATH) > 5)
|
else if (argc > 1 && strcasecmp(argv[1], "-signcheck") == 0 && GetModuleFileNameA(NULL, str2, _MAX_PATH) > 5)
|
||||||
@@ -1143,6 +1161,7 @@ int main(int argc, char* argv[])
|
|||||||
#else
|
#else
|
||||||
printf("Cannot verify without OpenSSL support");
|
printf("Cannot verify without OpenSSL support");
|
||||||
#endif
|
#endif
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1299,6 +1318,7 @@ int main(int argc, char* argv[])
|
|||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
if (strEx != NULL) printf(strEx); else printf("Not defined, start the mesh service to create a nodeid.");
|
if (strEx != NULL) printf(strEx); else printf("Not defined, start the mesh service to create a nodeid.");
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (argc == 2 && (strcasecmp(argv[1], "-info") == 0))
|
else if (argc == 2 && (strcasecmp(argv[1], "-info") == 0))
|
||||||
@@ -1350,6 +1370,7 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (argc == 2 && (strcasecmp(argv[1], "-resetnodeid") == 0))
|
else if (argc == 2 && (strcasecmp(argv[1], "-resetnodeid") == 0))
|
||||||
@@ -1371,6 +1392,7 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
printf("Error writing to registry, try running as administrator.");
|
printf("Error writing to registry, try running as administrator.");
|
||||||
}
|
}
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1431,7 +1453,7 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
|
wmain_free(argv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user