Mercurial > sdl-ios-xcode
comparison src/main/win32/SDL_win32_main.c @ 1423:4ed717f9e509
Updated for Visual Studio Express 2005
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 24 Feb 2006 08:17:28 +0000 |
parents | c0a74f199ecf |
children | bb6839704ed6 |
comparison
equal
deleted
inserted
replaced
1422:d2ee8da60262 | 1423:4ed717f9e509 |
---|---|
186 /* This is where execution begins [console apps] */ | 186 /* This is where execution begins [console apps] */ |
187 int console_main(int argc, char *argv[]) | 187 int console_main(int argc, char *argv[]) |
188 { | 188 { |
189 int n; | 189 int n; |
190 char *bufp, *appname; | 190 char *bufp, *appname; |
191 int status; | |
191 | 192 |
192 /* Get the class name from argv[0] */ | 193 /* Get the class name from argv[0] */ |
193 appname = argv[0]; | 194 appname = argv[0]; |
194 if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) { | 195 if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) { |
195 appname = bufp+1; | 196 appname = bufp+1; |
201 if ( (bufp=SDL_strrchr(appname, '.')) == NULL ) | 202 if ( (bufp=SDL_strrchr(appname, '.')) == NULL ) |
202 n = SDL_strlen(appname); | 203 n = SDL_strlen(appname); |
203 else | 204 else |
204 n = (bufp-appname); | 205 n = (bufp-appname); |
205 | 206 |
206 bufp = (char *)alloca(n+1); | 207 bufp = SDL_stack_alloc(char, n+1); |
207 if ( bufp == NULL ) { | 208 if ( bufp == NULL ) { |
208 return OutOfMemory(); | 209 return OutOfMemory(); |
209 } | 210 } |
210 SDL_strlcpy(bufp, appname, n); | 211 SDL_strlcpy(bufp, appname, n); |
211 appname = bufp; | 212 appname = bufp; |
224 is called later in the video initialization. | 225 is called later in the video initialization. |
225 */ | 226 */ |
226 SDL_SetModuleHandle(GetModuleHandle(NULL)); | 227 SDL_SetModuleHandle(GetModuleHandle(NULL)); |
227 | 228 |
228 /* Run the application main() code */ | 229 /* Run the application main() code */ |
229 SDL_main(argc, argv); | 230 status = SDL_main(argc, argv); |
230 | 231 |
231 /* Exit cleanly, calling atexit() functions */ | 232 /* Exit cleanly, calling atexit() functions */ |
232 exit(0); | 233 exit(status); |
233 | 234 |
234 /* Hush little compiler, don't you cry... */ | 235 /* Hush little compiler, don't you cry... */ |
235 return(0); | 236 return 0; |
236 } | 237 } |
237 | 238 |
238 /* This is where execution begins [windowed apps] */ | 239 /* This is where execution begins [windowed apps] */ |
239 #ifdef _WIN32_WCE | 240 #ifdef _WIN32_WCE |
240 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) | 241 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) |
260 size_t nLen; | 261 size_t nLen; |
261 #endif | 262 #endif |
262 #ifndef NO_STDIO_REDIRECT | 263 #ifndef NO_STDIO_REDIRECT |
263 FILE *newfp; | 264 FILE *newfp; |
264 #endif | 265 #endif |
265 int retval; | |
266 | 266 |
267 /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't | 267 /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't |
268 keep them open. This is a hack.. hopefully it will be fixed | 268 keep them open. This is a hack.. hopefully it will be fixed |
269 someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. | 269 someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. |
270 */ | 270 */ |
320 setbuf(stderr, NULL); /* No buffering */ | 320 setbuf(stderr, NULL); /* No buffering */ |
321 #endif /* !NO_STDIO_REDIRECT */ | 321 #endif /* !NO_STDIO_REDIRECT */ |
322 | 322 |
323 #ifdef _WIN32_WCE | 323 #ifdef _WIN32_WCE |
324 nLen = wcslen(szCmdLine)+128+1; | 324 nLen = wcslen(szCmdLine)+128+1; |
325 bufp = (wchar_t *)alloca(nLen*2); | 325 bufp = SDL_stack_alloc(wchar_t, nLen*2); |
326 wcscpy (bufp, TEXT("\"")); | 326 wcscpy (bufp, TEXT("\"")); |
327 GetModuleFileName(NULL, bufp+1, 128-3); | 327 GetModuleFileName(NULL, bufp+1, 128-3); |
328 wcscpy (bufp+wcslen(bufp), TEXT("\" ")); | 328 wcscpy (bufp+wcslen(bufp), TEXT("\" ")); |
329 wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); | 329 wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); |
330 nLen = wcslen(bufp)+1; | 330 nLen = wcslen(bufp)+1; |
332 if ( cmdline == NULL ) { | 332 if ( cmdline == NULL ) { |
333 return OutOfMemory(); | 333 return OutOfMemory(); |
334 } | 334 } |
335 WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); | 335 WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); |
336 #else | 336 #else |
337 /* Grab the command line (use alloca() on Windows) */ | 337 /* Grab the command line */ |
338 bufp = GetCommandLine(); | 338 bufp = GetCommandLine(); |
339 nLen = SDL_strlen(bufp)+1; | 339 nLen = SDL_strlen(bufp)+1; |
340 cmdline = SDL_stack_alloc(char, nLen); | 340 cmdline = SDL_stack_alloc(char, nLen); |
341 if ( cmdline == NULL ) { | 341 if ( cmdline == NULL ) { |
342 return OutOfMemory(); | 342 return OutOfMemory(); |
351 return OutOfMemory(); | 351 return OutOfMemory(); |
352 } | 352 } |
353 ParseCommandLine(cmdline, argv); | 353 ParseCommandLine(cmdline, argv); |
354 | 354 |
355 /* Run the main program (after a little SDL initialization) */ | 355 /* Run the main program (after a little SDL initialization) */ |
356 retval = console_main(argc, argv); | 356 console_main(argc, argv); |
357 | 357 |
358 SDL_stack_free(cmdline); | 358 /* Hush little compiler, don't you cry... */ |
359 SDL_stack_free(argv); | 359 return 0; |
360 return retval; | 360 } |
361 } |