annotate winmain.c @ 7:005fa766e8c2

Updates to latest build.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 03 Jul 2001 13:54:29 +0000
parents 67a643a734d9
children bf42d08d72d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /* Dynamic Windows stub file to allow Win32 applications
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * to use the main() entry point instead of WinMain().
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 #include <windows.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 #include <stdlib.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 #include <string.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 void Win32_Set_Instance(HINSTANCE hInstance);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 char **_convertargs(int *count, char *start, HINSTANCE DWInstance)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 char *tmp, *argstart, **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 int loc = 0, inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 (*count) = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 /* Count the number of entries */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 argv = (char **)malloc(sizeof(char *) * ((*count)+1));
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49 argv[0] = malloc(260);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 GetModuleFileName(DWInstance, argv[0], 260);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 argstart = tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 loc = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 /* Move the start pointer */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 loc++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 if(*argstart)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 argv[loc+1] = NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 return argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 /* Ok this is a really big hack but what the hell ;) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 char **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 int argc;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 Win32_Set_Instance(hInstance);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
105 argv = _convertargs(&argc, lpCmdLine, hInstance);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107 return main(argc, argv);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 }