summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/windows/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/windows/main.cpp')
-rw-r--r--src/osd/windows/main.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/osd/windows/main.cpp b/src/osd/windows/main.cpp
new file mode 100644
index 00000000000..ccfddb27a0d
--- /dev/null
+++ b/src/osd/windows/main.cpp
@@ -0,0 +1,57 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+//============================================================
+//
+// main.c - Win32 main program
+//
+//============================================================
+
+// standard windows headers
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <tchar.h>
+#include <stdlib.h>
+
+// MAMEOS headers
+#include "strconv.h"
+
+extern int utf8_main(int argc, char *argv[]);
+
+
+
+//============================================================
+// main
+//============================================================
+
+// undo the command-line #define that maps main to utf8_main in all other cases
+#ifndef WINUI
+#undef main
+#undef wmain
+#endif
+
+extern "C" int _tmain(int argc, TCHAR **argv)
+{
+ int i, rc;
+ char **utf8_argv;
+
+ /* convert arguments to UTF-8 */
+ utf8_argv = (char **) malloc(argc * sizeof(*argv));
+ if (utf8_argv == NULL)
+ return 999;
+ for (i = 0; i < argc; i++)
+ {
+ utf8_argv[i] = utf8_from_tstring(argv[i]);
+ if (utf8_argv[i] == NULL)
+ return 999;
+ }
+
+ /* run utf8_main */
+ rc = utf8_main(argc, utf8_argv);
+
+ /* free arguments */
+ for (i = 0; i < argc; i++)
+ osd_free(utf8_argv[i]);
+ free(utf8_argv);
+
+ return rc;
+}