11 #include "../../core/windows/SDL_windows.h"
22 UnEscapeQuotes(
char *arg)
27 if (*arg ==
'"' && (last !=
NULL && *last ==
'\\')) {
45 ParseCommandLine(
char *cmdline,
char **argv)
52 for (bufp = cmdline; *bufp;) {
54 while (*bufp ==
' ' || *bufp ==
'\t') {
68 while (*bufp && (*bufp !=
'"' || *lastp ==
'\\')) {
80 while (*bufp && (*bufp !=
' ' && *bufp !=
'\t')) {
92 if (argv && last_argc != argc) {
93 UnEscapeQuotes(argv[last_argc]);
111 #if defined(_MSC_VER)
113 # define console_ansi_main main
115 # define console_wmain wmain
126 char *cmdline =
NULL;
129 const TCHAR *
text = GetCommandLine();
136 for (ptr = text; *ptr; ptr++) {
137 if ((*ptr ==
' ') || (*ptr ==
'\t')) {
143 rc = WideCharToMultiByte(CP_UTF8, 0, text, -1,
NULL, 0,
NULL,
NULL);
145 cmdalloc = rc + (
sizeof (
char *) * argc_guess);
146 argv = (
char **) VirtualAlloc(
NULL, cmdalloc, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
149 cmdline = (
char *) (argv + argc_guess);
150 rc2 = WideCharToMultiByte(CP_UTF8, 0, text, -1, cmdline, rc,
NULL,
NULL);
157 cmdalloc = rc + (
sizeof (
char *) * argc_guess);
158 argv = (
char **) VirtualAlloc(
NULL, cmdalloc, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
160 cmdline = (
char *) (argv + argc_guess);
161 SDL_strcpy(cmdline, text);
164 if (cmdline ==
NULL) {
165 return OutOfMemory();
170 argc = ParseCommandLine(cmdline, argv);
177 VirtualFree(argv, cmdalloc, MEM_DECOMMIT);
178 VirtualFree(argv, 0, MEM_RELEASE);
185 console_ansi_main(
int argc,
char *argv[])
187 return main_getcmdline();
194 console_wmain(
int argc,
wchar_t *wargv[],
wchar_t *wenvp)
196 return main_getcmdline();
202 WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine,
int sw)
204 return main_getcmdline();
int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
#define SDL_ShowSimpleMessageBox
#define SDL_assert(condition)
static char text[MAX_TEXT_LENGTH]
C_LINKAGE SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[])