#include "node.h" #ifdef _WIN32 #include int wmain(int argc, wchar_t *wargv[]) { if (!IsWindows7OrGreater()) { fprintf(stderr, "This application is only supported on Windows 7, " "Windows Server 2008 R2, or higher."); exit(1); } // Convert argv to to UTF8 char** argv = new char*[argc + 1]; for (int i = 0; i < argc; i++) { // Compute the size of the required buffer DWORD size = WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1, nullptr, 0, nullptr, nullptr); if (size == 0) { // This should never happen. fprintf(stderr, "Could not convert arguments to utf8."); exit(1); } // Do the actual conversion argv[i] = new char[size]; DWORD result = WideCharToMultiByte(CP_UTF8, 0, wargv[i], -1, argv[i], size, nullptr, nullptr); if (result == 0) { // This should never happen. fprintf(stderr, "Could not convert arguments to utf8."); exit(1); } } argv[argc] = nullptr; // Now that conversion is done, we can finally start. return node::Start(argc, argv); } #else // UNIX int main(int argc, char *argv[]) { setvbuf(stderr, NULL, _IOLBF, 1024); return node::Start(argc, argv); } #endif