diff options
Diffstat (limited to 'src/osd/windows/main.cpp')
-rw-r--r-- | src/osd/windows/main.cpp | 57 |
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; +} |