diff src/main/win32/SDL_win32_main.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents 14717b52abc0
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/main/win32/SDL_win32_main.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/main/win32/SDL_win32_main.c	Sun May 28 13:04:16 2006 +0000
@@ -40,11 +40,11 @@
 
 #ifndef NO_STDIO_REDIRECT
 # ifdef _WIN32_WCE
-  static wchar_t stdoutPath[MAX_PATH];
-  static wchar_t stderrPath[MAX_PATH];
+static wchar_t stdoutPath[MAX_PATH];
+static wchar_t stderrPath[MAX_PATH];
 # else
-  static char stdoutPath[MAX_PATH];
-  static char stderrPath[MAX_PATH];
+static char stdoutPath[MAX_PATH];
+static char stderrPath[MAX_PATH];
 # endif
 #endif
 
@@ -54,114 +54,119 @@
 #endif /* _WIN32_WCE < 300 */
 
 /* Parse a command line buffer into arguments */
-static int ParseCommandLine(char *cmdline, char **argv)
+static int
+ParseCommandLine (char *cmdline, char **argv)
 {
-	char *bufp;
-	int argc;
+    char *bufp;
+    int argc;
 
-	argc = 0;
-	for ( bufp = cmdline; *bufp; ) {
-		/* Skip leading whitespace */
-		while ( isspace(*bufp) ) {
-			++bufp;
-		}
-		/* Skip over argument */
-		if ( *bufp == '"' ) {
-			++bufp;
-			if ( *bufp ) {
-				if ( argv ) {
-					argv[argc] = bufp;
-				}
-				++argc;
-			}
-			/* Skip over word */
-			while ( *bufp && (*bufp != '"') ) {
-				++bufp;
-			}
-		} else {
-			if ( *bufp ) {
-				if ( argv ) {
-					argv[argc] = bufp;
-				}
-				++argc;
-			}
-			/* Skip over word */
-			while ( *bufp && ! isspace(*bufp) ) {
-				++bufp;
-			}
-		}
-		if ( *bufp ) {
-			if ( argv ) {
-				*bufp = '\0';
-			}
-			++bufp;
-		}
-	}
-	if ( argv ) {
-		argv[argc] = NULL;
-	}
-	return(argc);
+    argc = 0;
+    for (bufp = cmdline; *bufp;) {
+        /* Skip leading whitespace */
+        while (isspace (*bufp)) {
+            ++bufp;
+        }
+        /* Skip over argument */
+        if (*bufp == '"') {
+            ++bufp;
+            if (*bufp) {
+                if (argv) {
+                    argv[argc] = bufp;
+                }
+                ++argc;
+            }
+            /* Skip over word */
+            while (*bufp && (*bufp != '"')) {
+                ++bufp;
+            }
+        } else {
+            if (*bufp) {
+                if (argv) {
+                    argv[argc] = bufp;
+                }
+                ++argc;
+            }
+            /* Skip over word */
+            while (*bufp && !isspace (*bufp)) {
+                ++bufp;
+            }
+        }
+        if (*bufp) {
+            if (argv) {
+                *bufp = '\0';
+            }
+            ++bufp;
+        }
+    }
+    if (argv) {
+        argv[argc] = NULL;
+    }
+    return (argc);
 }
 
 /* Show an error message */
-static void ShowError(const char *title, const char *message)
+static void
+ShowError (const char *title, const char *message)
 {
 /* If USE_MESSAGEBOX is defined, you need to link with user32.lib */
 #ifdef USE_MESSAGEBOX
-	MessageBox(NULL, message, title, MB_ICONEXCLAMATION|MB_OK);
+    MessageBox (NULL, message, title, MB_ICONEXCLAMATION | MB_OK);
 #else
-	fprintf(stderr, "%s: %s\n", title, message);
+    fprintf (stderr, "%s: %s\n", title, message);
 #endif
 }
 
 /* Pop up an out of memory message, returns to Windows */
-static BOOL OutOfMemory(void)
+static BOOL
+OutOfMemory (void)
 {
-	ShowError("Fatal Error", "Out of memory - aborting");
-	return FALSE;
+    ShowError ("Fatal Error", "Out of memory - aborting");
+    return FALSE;
 }
 
 /* SDL_Quit() shouldn't be used with atexit() directly because
    calling conventions may differ... */
-static void cleanup(void)
+static void
+cleanup (void)
 {
-	SDL_Quit();
+    SDL_Quit ();
 }
 
 /* Remove the output files if there was no output written */
-static void cleanup_output(void)
+static void
+cleanup_output (void)
 {
 #ifndef NO_STDIO_REDIRECT
-	FILE *file;
-	int empty;
+    FILE *file;
+    int empty;
 #endif
 
-	/* Flush the output in case anything is queued */
-	fclose(stdout);
-	fclose(stderr);
+    /* Flush the output in case anything is queued */
+    fclose (stdout);
+    fclose (stderr);
 
 #ifndef NO_STDIO_REDIRECT
-	/* See if the files have any output in them */
-	if ( stdoutPath[0] ) {
-		file = fopen(stdoutPath, TEXT("rb"));
-		if ( file ) {
-			empty = (fgetc(file) == EOF) ? 1 : 0;
-			fclose(file);
-			if ( empty ) {
-				remove(stdoutPath);
-			}
-		}
-	}
-	if ( stderrPath[0] ) {
-		file = fopen(stderrPath, TEXT("rb"));
-		if ( file ) {
-			empty = (fgetc(file) == EOF) ? 1 : 0;
-			fclose(file);
-			if ( empty ) {
-				remove(stderrPath);
-			}
-		}
-	}
+    /* See if the files have any output in them */
+    if (stdoutPath[0]) {
+        file = fopen (stdoutPath, TEXT ("rb"));
+        if (file) {
+            empty = (fgetc (file) == EOF) ? 1 : 0;
+            fclose (file);
+            if (empty) {
+                remove (stdoutPath);
+            }
+        }
+    }
+    if (stderrPath[0]) {
+        file = fopen (stderrPath, TEXT ("rb"));
+        if (file) {
+            empty = (fgetc (file) == EOF) ? 1 : 0;
+            fclose (file);
+            if (empty) {
+                remove (stderrPath);
+            }
+        }
+    }
 #endif
 }
 
@@ -171,187 +176,194 @@
 #endif
 
 /* This is where execution begins [console apps] */
-int console_main(int argc, char *argv[])
+int
+console_main (int argc, char *argv[])
 {
-	size_t n;
-	char *bufp, *appname;
-	int status;
+    size_t n;
+    char *bufp, *appname;
+    int status;
 
-	/* Get the class name from argv[0] */
-	appname = argv[0];
-	if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) {
-		appname = bufp+1;
-	} else
-	if ( (bufp=SDL_strrchr(argv[0], '/')) != NULL ) {
-		appname = bufp+1;
-	}
+    /* Get the class name from argv[0] */
+    appname = argv[0];
+    if ((bufp = SDL_strrchr (argv[0], '\\')) != NULL) {
+        appname = bufp + 1;
+    } else if ((bufp = SDL_strrchr (argv[0], '/')) != NULL) {
+        appname = bufp + 1;
+    }
 
-	if ( (bufp=SDL_strrchr(appname, '.')) == NULL )
-		n = SDL_strlen(appname);
-	else
-		n = (bufp-appname);
+    if ((bufp = SDL_strrchr (appname, '.')) == NULL)
+        n = SDL_strlen (appname);
+    else
+        n = (bufp - appname);
 
-	bufp = SDL_stack_alloc(char, n+1);
-	if ( bufp == NULL ) {
-		return OutOfMemory();
-	}
-	SDL_strlcpy(bufp, appname, n+1);
-	appname = bufp;
+    bufp = SDL_stack_alloc (char, n + 1);
+    if (bufp == NULL) {
+        return OutOfMemory ();
+    }
+    SDL_strlcpy (bufp, appname, n + 1);
+    appname = bufp;
 
-	/* Load SDL dynamic link library */
-	if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) {
-		ShowError("WinMain() error", SDL_GetError());
-		return(FALSE);
-	}
-	atexit(cleanup_output);
-	atexit(cleanup);
+    /* Load SDL dynamic link library */
+    if (SDL_Init (SDL_INIT_NOPARACHUTE) < 0) {
+        ShowError ("WinMain() error", SDL_GetError ());
+        return (FALSE);
+    }
+    atexit (cleanup_output);
+    atexit (cleanup);
 
-	/* Sam:
-	   We still need to pass in the application handle so that
-	   DirectInput will initialize properly when SDL_RegisterApp()
-	   is called later in the video initialization.
-	 */
-	SDL_SetModuleHandle(GetModuleHandle(NULL));
+    /* Sam:
+       We still need to pass in the application handle so that
+       DirectInput will initialize properly when SDL_RegisterApp()
+       is called later in the video initialization.
+     */
+    SDL_SetModuleHandle (GetModuleHandle (NULL));
 
-	/* Run the application main() code */
-	status = SDL_main(argc, argv);
+    /* Run the application main() code */
+    status = SDL_main (argc, argv);
 
-	/* Exit cleanly, calling atexit() functions */
-	exit(status);
+    /* Exit cleanly, calling atexit() functions */
+    exit (status);
 
-	/* Hush little compiler, don't you cry... */
-	return 0;
+    /* Hush little compiler, don't you cry... */
+    return 0;
 }
 
 /* This is where execution begins [windowed apps] */
 #ifdef _WIN32_WCE
-int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw)
+int WINAPI
+WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw)
 #else
-int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
+int WINAPI
+WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
 #endif
 {
-	HINSTANCE handle;
-	char **argv;
-	int argc;
-	char *cmdline;
-	DWORD pathlen;
+    HINSTANCE handle;
+    char **argv;
+    int argc;
+    char *cmdline;
+    DWORD pathlen;
 #ifdef _WIN32_WCE
-	wchar_t path[MAX_PATH];
+    wchar_t path[MAX_PATH];
 #else
-	char path[MAX_PATH];
+    char path[MAX_PATH];
 #endif
 #ifdef _WIN32_WCE
-	wchar_t *bufp;
-	int nLen;
+    wchar_t *bufp;
+    int nLen;
 #else
-	char *bufp;
-	size_t nLen;
+    char *bufp;
+    size_t nLen;
 #endif
 #ifndef NO_STDIO_REDIRECT
-	FILE *newfp;
+    FILE *newfp;
 #endif
 
-	/* Start up DDHELP.EXE before opening any files, so DDHELP doesn't
-	   keep them open.  This is a hack.. hopefully it will be fixed 
-	   someday.  DDHELP.EXE starts up the first time DDRAW.DLL is loaded.
-	 */
-	handle = LoadLibrary(TEXT("DDRAW.DLL"));
-	if ( handle != NULL ) {
-		FreeLibrary(handle);
-	}
-
+    /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't
+       keep them open.  This is a hack.. hopefully it will be fixed 
+       someday.  DDHELP.EXE starts up the first time DDRAW.DLL is loaded.
+     */
+    handle = LoadLibrary (TEXT ("DDRAW.DLL"));
+    if (handle != NULL) {
+        FreeLibrary (handle);
+    }
 #ifndef NO_STDIO_REDIRECT
-	pathlen = GetModuleFileName(NULL, path, SDL_arraysize(path));
-	while ( pathlen > 0 && path[pathlen] != '\\' ) {
-		--pathlen;
-	}
-	path[pathlen] = '\0';
+    pathlen = GetModuleFileName (NULL, path, SDL_arraysize (path));
+    while (pathlen > 0 && path[pathlen] != '\\') {
+        --pathlen;
+    }
+    path[pathlen] = '\0';
 
 #ifdef _WIN32_WCE
-	wcsncpy( stdoutPath, path, SDL_arraysize(stdoutPath) );
-	wcsncat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
+    wcsncpy (stdoutPath, path, SDL_arraysize (stdoutPath));
+    wcsncat (stdoutPath, DIR_SEPERATOR STDOUT_FILE,
+             SDL_arraysize (stdoutPath));
 #else
-	SDL_strlcpy( stdoutPath, path, SDL_arraysize(stdoutPath) );
-	SDL_strlcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
+    SDL_strlcpy (stdoutPath, path, SDL_arraysize (stdoutPath));
+    SDL_strlcat (stdoutPath, DIR_SEPERATOR STDOUT_FILE,
+                 SDL_arraysize (stdoutPath));
 #endif
-    
-	/* Redirect standard input and standard output */
-	newfp = freopen(stdoutPath, TEXT("w"), stdout);
+
+    /* Redirect standard input and standard output */
+    newfp = freopen (stdoutPath, TEXT ("w"), stdout);
 
 #ifndef _WIN32_WCE
-	if ( newfp == NULL ) {	/* This happens on NT */
+    if (newfp == NULL) {        /* This happens on NT */
 #if !defined(stdout)
-		stdout = fopen(stdoutPath, TEXT("w"));
+        stdout = fopen (stdoutPath, TEXT ("w"));
 #else
-		newfp = fopen(stdoutPath, TEXT("w"));
-		if ( newfp ) {
-			*stdout = *newfp;
-		}
+        newfp = fopen (stdoutPath, TEXT ("w"));
+        if (newfp) {
+            *stdout = *newfp;
+        }
 #endif
-	}
+    }
 #endif /* _WIN32_WCE */
 
 #ifdef _WIN32_WCE
-	wcsncpy( stderrPath, path, SDL_arraysize(stdoutPath) );
-	wcsncat( stderrPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
+    wcsncpy (stderrPath, path, SDL_arraysize (stdoutPath));
+    wcsncat (stderrPath, DIR_SEPERATOR STDOUT_FILE,
+             SDL_arraysize (stdoutPath));
 #else
-	SDL_strlcpy( stderrPath, path, SDL_arraysize(stderrPath) );
-	SDL_strlcat( stderrPath, DIR_SEPERATOR STDERR_FILE, SDL_arraysize(stderrPath) );
+    SDL_strlcpy (stderrPath, path, SDL_arraysize (stderrPath));
+    SDL_strlcat (stderrPath, DIR_SEPERATOR STDERR_FILE,
+                 SDL_arraysize (stderrPath));
 #endif
 
-	newfp = freopen(stderrPath, TEXT("w"), stderr);
+    newfp = freopen (stderrPath, TEXT ("w"), stderr);
 #ifndef _WIN32_WCE
-	if ( newfp == NULL ) {	/* This happens on NT */
+    if (newfp == NULL) {        /* This happens on NT */
 #if !defined(stderr)
-		stderr = fopen(stderrPath, TEXT("w"));
+        stderr = fopen (stderrPath, TEXT ("w"));
 #else
-		newfp = fopen(stderrPath, TEXT("w"));
-		if ( newfp ) {
-			*stderr = *newfp;
-		}
+        newfp = fopen (stderrPath, TEXT ("w"));
+        if (newfp) {
+            *stderr = *newfp;
+        }
 #endif
-	}
+    }
 #endif /* _WIN32_WCE */
 
-	setvbuf(stdout, NULL, _IOLBF, BUFSIZ);	/* Line buffered */
-	setbuf(stderr, NULL);			/* No buffering */
+    setvbuf (stdout, NULL, _IOLBF, BUFSIZ);     /* Line buffered */
+    setbuf (stderr, NULL);      /* No buffering */
 #endif /* !NO_STDIO_REDIRECT */
 
 #ifdef _WIN32_WCE
-	nLen = wcslen(szCmdLine)+128+1;
-	bufp = SDL_stack_alloc(wchar_t, nLen*2);
-	wcscpy (bufp, TEXT("\""));
-	GetModuleFileName(NULL, bufp+1, 128-3);
-	wcscpy (bufp+wcslen(bufp), TEXT("\" "));
-	wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp));
-	nLen = wcslen(bufp)+1;
-	cmdline = SDL_stack_alloc(char, nLen);
-	if ( cmdline == NULL ) {
-		return OutOfMemory();
-	}
-	WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL);
+    nLen = wcslen (szCmdLine) + 128 + 1;
+    bufp = SDL_stack_alloc (wchar_t, nLen * 2);
+    wcscpy (bufp, TEXT ("\""));
+    GetModuleFileName (NULL, bufp + 1, 128 - 3);
+    wcscpy (bufp + wcslen (bufp), TEXT ("\" "));
+    wcsncpy (bufp + wcslen (bufp), szCmdLine, nLen - wcslen (bufp));
+    nLen = wcslen (bufp) + 1;
+    cmdline = SDL_stack_alloc (char, nLen);
+    if (cmdline == NULL) {
+        return OutOfMemory ();
+    }
+    WideCharToMultiByte (CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL);
 #else
-	/* Grab the command line */
-	bufp = GetCommandLine();
-	nLen = SDL_strlen(bufp)+1;
-	cmdline = SDL_stack_alloc(char, nLen);
-	if ( cmdline == NULL ) {
-		return OutOfMemory();
-	}
-	SDL_strlcpy(cmdline, bufp, nLen);
+    /* Grab the command line */
+    bufp = GetCommandLine ();
+    nLen = SDL_strlen (bufp) + 1;
+    cmdline = SDL_stack_alloc (char, nLen);
+    if (cmdline == NULL) {
+        return OutOfMemory ();
+    }
+    SDL_strlcpy (cmdline, bufp, nLen);
 #endif
 
-	/* Parse it into argv and argc */
-	argc = ParseCommandLine(cmdline, NULL);
-	argv = SDL_stack_alloc(char*, argc+1);
-	if ( argv == NULL ) {
-		return OutOfMemory();
-	}
-	ParseCommandLine(cmdline, argv);
+    /* Parse it into argv and argc */
+    argc = ParseCommandLine (cmdline, NULL);
+    argv = SDL_stack_alloc (char *, argc + 1);
+    if (argv == NULL) {
+        return OutOfMemory ();
+    }
+    ParseCommandLine (cmdline, argv);
 
-	/* Run the main program (after a little SDL initialization) */
-	console_main(argc, argv);
+    /* Run the main program (after a little SDL initialization) */
+    console_main (argc, argv);
 
-	/* Hush little compiler, don't you cry... */
-	return 0;
+    /* Hush little compiler, don't you cry... */
+    return 0;
 }
+
+/* vi: set ts=4 sw=4 expandtab: */