+ Newz(1313, dst->pseudo_children, 1, child_tab);
+ dst->thr_intern.Winit_socktype = 0;
+}
+# endif /* USE_ITHREADS */
+#endif /* HAVE_INTERP_INTERN */
+
+static void
+win32_free_argvw(pTHX_ void *ptr)
+{
+ char** argv = (char**)ptr;
+ while(*argv) {
+ Safefree(*argv);
+ *argv++ = Nullch;
+ }
+}
+
+void
+win32_argv2utf8(int argc, char** argv)
+{
+ dTHX;
+ char* psz;
+ int length, wargc;
+ LPWSTR* lpwStr = CommandLineToArgvW(GetCommandLineW(), &wargc);
+ if (lpwStr && argc) {
+ while (argc--) {
+ length = WideCharToMultiByte(CP_UTF8, 0, lpwStr[--wargc], -1, NULL, 0, NULL, NULL);
+ Newz(0, psz, length, char);
+ WideCharToMultiByte(CP_UTF8, 0, lpwStr[wargc], -1, psz, length, NULL, NULL);
+ argv[argc] = psz;
+ }
+ call_atexit(win32_free_argvw, argv);
+ }
+ GlobalFree((HGLOBAL)lpwStr);