aboutsummaryrefslogtreecommitdiff
path: root/pd/src/s_entry.c
diff options
context:
space:
mode:
authorMiller Puckette <millerpuckette@users.sourceforge.net>2004-09-06 20:20:36 +0000
committerMiller Puckette <millerpuckette@users.sourceforge.net>2004-09-06 20:20:36 +0000
commited932acb5860bf8b9296169676499562a55d139e (patch)
treedc6a40dba908deb07c175cd40ee19c197318f72d /pd/src/s_entry.c
parentdad636821f6e7d3ead02c157f308c0ceeba9af3d (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.c78
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
+
+