diff options
author | Miller Puckette <millerpuckette@users.sourceforge.net> | 2004-09-06 20:20:36 +0000 |
---|---|---|
committer | Miller Puckette <millerpuckette@users.sourceforge.net> | 2004-09-06 20:20:36 +0000 |
commit | ed932acb5860bf8b9296169676499562a55d139e (patch) | |
tree | dc6a40dba908deb07c175cd40ee19c197318f72d /pd/src/s_entry.c | |
parent | dad636821f6e7d3ead02c157f308c0ceeba9af3d (diff) |
checking in version 0.38test5.
Oops, I realize I forgot some more nice files, will add them and re-commit.
svn path=/trunk/; revision=2010
Diffstat (limited to 'pd/src/s_entry.c')
-rw-r--r-- | pd/src/s_entry.c | 78 |
1 files changed, 55 insertions, 23 deletions
diff --git a/pd/src/s_entry.c b/pd/src/s_entry.c index ad1e28fa..e81e45c6 100644 --- a/pd/src/s_entry.c +++ b/pd/src/s_entry.c @@ -5,47 +5,79 @@ that externs can link back to functions defined in pd. */ int sys_main(int argc, char **argv); - /* WINBASEAPI PVOID WINAPI AddVectoredExceptionHandler( - ULONG FirstHandler, - PVECTORED_EXCEPTION_HANDLER VectoredHandler ); */ - #ifdef MSW -#if 0 -#incldue "winbase.h" - -LONG NTAPI VectoredExceptionHandler(void *PEXCEPTION_POINTERS) -{ - fprintf(stderr, "caught exception\n"); - return(EXCEPTION_CONTINUE_SEARCH); -} +#include <windows.h> +#include <stdio.h> +#include <malloc.h> +#define MAXARGS 1024 +#define MAXARGLEN 1024 -int main(int argc, char **argv) +/* jsarlo { */ +int tokenizeCommandLineString(char *clString, char **tokens) { - printf("Pd entry point\n"); - AddVectoredExceptionHandler( - ULONG FirstHandler, - PVECTORED_EXCEPTION_HANDLER VectoredHandler ); - + int i, charCount = 0; + int tokCount= 0; + int quoteOpen = 0; -#endif + for (i = 0; i < (int)strlen(clString); i++) + { + if (clString[i] == '"') + { + quoteOpen = !quoteOpen; + } + else if (clString[i] == ' ' && !quoteOpen) + { + tokens[tokCount][charCount] = 0; + tokCount++; + charCount = 0; + } + else + { + tokens[tokCount][charCount] = clString[i]; + charCount++; + } + } + tokens[tokCount][charCount] = 0; + tokCount++; + return tokCount; +} -#if 1 -int main(int argc, char **argv) +int WINAPI WinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) { - __try + int i, argc; + char *argv[MAXARGS]; + + __try { + for (i = 0; i < MAXARGS; i++) + { + argv[i] = (char *)malloc(MAXARGLEN * sizeof(char)); + } + GetModuleFileName(NULL, argv[0], MAXARGLEN); + argc = tokenizeCommandLineString(lpCmdLine, argv + 1) + 1; sys_main(argc, argv); + for (i = 0; i < MAXARGS; i++) + { + free(argv[i]); + } } __finally { printf("caught an exception; stopping\n"); } } -#endif + +/* } jsarlo */ + #else /* not MSW */ int main(int argc, char **argv) { return (sys_main(argc, argv)); } #endif + + |