annotate src/os_w32exe.c @ 1:f72be2054832

add: reditor.c reditor.h
author atsuki
date Sat, 10 Nov 2007 20:27:44 +0900
parents 76efa0be13f1
children c16898406ff2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
1 /* vi:set ts=8 sts=4 sw=4:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
2 *
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
4 * GUI support by Robert Webb
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
5 *
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
6 * Do ":help uganda" in Vim to read copying and usage conditions.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
7 * Do ":help credits" in Vim to see a list of people who contributed.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
8 * See README.txt for an overview of the Vim source code.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
9 */
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
10 /*
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
11 * Windows GUI: main program (EXE) entry point:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
12 *
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
13 * Ron Aaron <ronaharon@yahoo.com> wrote this and the DLL support code.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
14 */
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
15 #include "vim.h"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
16
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
17 #ifdef __MINGW32__
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
18 # ifndef _cdecl
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
19 # define _cdecl
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
20 # endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
21 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
22
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
23 /* cproto doesn't create a prototype for main() */
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
24 int _cdecl
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
25 #if defined(FEAT_GUI_W32)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
26 VimMain
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
27 #else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
28 main
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
29 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
30 __ARGS((int argc, char **argv));
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
31 static int (_cdecl *pmain)(int, char **);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
32
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
33 #ifndef PROTO
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
34 #ifdef FEAT_GUI
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
35 #ifndef VIMDLL
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
36 void _cdecl SaveInst(HINSTANCE hInst);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
37 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
38 static void (_cdecl *pSaveInst)(HINSTANCE);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
39 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
40
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
41 /*ARGSUSED*/
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
42 int WINAPI
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
43 WinMain(
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
44 HINSTANCE hInstance,
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
45 HINSTANCE hPrevInst,
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
46 LPSTR lpszCmdLine,
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
47 int nCmdShow)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
48 {
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
49 int argc = 0;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
50 char **argv;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
51 char *tofree;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
52 char prog[256];
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
53 #ifdef VIMDLL
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
54 char *p;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
55 HANDLE hLib;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
56 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
57
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
58 /* Ron: added full path name so that the $VIM variable will get set to our
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
59 * startup path (so the .vimrc file can be found w/o a VIM env. var.) */
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
60 GetModuleFileName(NULL, prog, 255);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
61
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
62 argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
63 if (argc == 0)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
64 {
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
65 MessageBox(0, "Could not allocate memory for command line.",
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
66 "VIM Error", 0);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
67 return 0;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
68 }
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
69
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
70 #ifdef DYNAMIC_GETTEXT
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
71 /* Initialize gettext library */
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
72 dyn_libintl_init(NULL);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
73 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
74
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
75 #ifdef VIMDLL
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
76 // LoadLibrary - get name of dll to load in here:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
77 p = strrchr(prog, '\\');
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
78 if (p != NULL)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
79 {
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
80 # ifdef DEBUG
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
81 strcpy(p+1, "vim32d.dll");
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
82 # else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
83 strcpy(p+1, "vim32.dll");
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
84 # endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
85 }
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
86 hLib = LoadLibrary(prog);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
87 if (hLib == NULL)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
88 {
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
89 MessageBox(0, _("Could not load vim32.dll!"), _("VIM Error"), 0);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
90 goto errout;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
91 }
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
92 // fix up the function pointers
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
93 # ifdef FEAT_GUI
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
94 pSaveInst = GetProcAddress(hLib, (LPCSTR)2);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
95 # endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
96 pmain = GetProcAddress(hLib, (LPCSTR)1);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
97 if (pmain == NULL)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
98 {
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
99 MessageBox(0, _("Could not fix up function pointers to the DLL!"),
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
100 _("VIM Error"),0);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
101 goto errout;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
102 }
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
103 #else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
104 # ifdef FEAT_GUI
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
105 pSaveInst = SaveInst;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
106 # endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
107 pmain =
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
108 # if defined(FEAT_GUI_W32)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
109 //&& defined(__MINGW32__)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
110 VimMain
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
111 # else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
112 main
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
113 # endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
114 ;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
115 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
116 #ifdef FEAT_GUI
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
117 pSaveInst(
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
118 #ifdef __MINGW32__
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
119 GetModuleHandle(NULL)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
120 #else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
121 hInstance
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
122 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
123 );
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
124 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
125 pmain(argc, argv);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
126
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
127 #ifdef VIMDLL
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
128 FreeLibrary(hLib);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
129 errout:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
130 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
131 free(argv);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
132 free(tofree);
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
133 #ifdef FEAT_MBYTE
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
134 free_cmd_argsW();
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
135 #endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
136
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
137 return 0;
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
138 }
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
139 #endif