Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /trunk/teraterm/teraterm/ttplug.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6801 - (hide annotations) (download) (as text)
Tue Jun 13 10:30:12 2017 UTC (6 years, 9 months ago) by doda
File MIME type: text/x-csrc
File size: 6685 byte(s)
eliminate FAR keyword.
1 maya 3227 #include "teraterm.h"
2     #include "tttypes.h"
3     #include "ttlib.h"
4    
5     // #include <windows.h>
6     #include <stdlib.h>
7     #include <stdio.h>
8     #include <string.h>
9     /* for _findXXXX() functions */
10     #include <io.h>
11     #include "ttwinman.h"
12     #include "ttplugin.h"
13     #include "ttplug.h"
14     #undef TTXOpenTCP
15     #undef TTXCloseTCP
16     #undef TTXOpenFile
17     #undef TTXCloseFile
18     #undef TTXGetUIHooks
19     #undef TTXGetSetupHooks
20    
21 doda 4087 #define MAXNUMEXTENSIONS 32
22 maya 3227 static HANDLE LibHandle[MAXNUMEXTENSIONS];
23     static int NumExtensions = 0;
24     static TTXExports * * Extensions;
25    
26     typedef struct _ExtensionList {
27     TTXExports * exports;
28     struct _ExtensionList * next;
29     } ExtensionList;
30    
31     static int compareOrder(const void * e1, const void * e2) {
32     TTXExports * * exports1 = (TTXExports * *)e1;
33     TTXExports * * exports2 = (TTXExports * *)e2;
34    
35     return (*exports1)->loadOrder - (*exports2)->loadOrder;
36     }
37    
38     static void loadExtension(ExtensionList * * extensions, char const * fileName) {
39     char buf[1024];
40     DWORD err;
41     char uimsg[MAX_UIMSG];
42    
43     if (NumExtensions>=MAXNUMEXTENSIONS) return;
44     LibHandle[NumExtensions] = LoadLibrary(fileName);
45     if (LibHandle[NumExtensions] != NULL) {
46     TTXBindProc bind = (TTXBindProc)GetProcAddress(LibHandle[NumExtensions], "_TTXBind@8");
47     if (bind==NULL)
48     bind = (TTXBindProc)GetProcAddress(LibHandle[NumExtensions], "TTXBind");
49     if (bind != NULL) {
50     ExtensionList * newExtension =
51     (ExtensionList *)malloc(sizeof(ExtensionList));
52    
53     newExtension->exports = (TTXExports *)malloc(sizeof(TTXExports));
54     memset(newExtension->exports, 0, sizeof(TTXExports));
55     newExtension->exports->size = sizeof(TTXExports);
56 doda 6801 if (bind(TTVERSION,(TTXExports *)newExtension->exports)) {
57 maya 3227 newExtension->next = *extensions;
58     *extensions = newExtension;
59     NumExtensions++;
60     return;
61     } else {
62     free(newExtension->exports);
63     free(newExtension);
64     }
65     }
66     FreeLibrary(LibHandle[NumExtensions]);
67     }
68    
69     err = GetLastError();
70 doda 6787 // �����t�@�C�����������b�Z�[�W�����������s�����������A�������_����������
71     // �������������������������A���b�Z�[�W���p���������������B�v�����B
72 maya 3227 get_lang_msg("MSG_TT_ERROR", uimsg, sizeof(uimsg), "Tera Term: Error", ts.UILanguageFile);
73     get_lang_msg("MSG_LOAD_EXT_ERROR", ts.UIMsg, sizeof(ts.UIMsg), "Cannot load extension %s (%d)", ts.UILanguageFile);
74     _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, fileName, err);
75     MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONEXCLAMATION);
76     }
77    
78 doda 6801 void PASCAL TTXInit(PTTSet ts, PComVar cv) {
79 maya 3227 ExtensionList * extensionList = NULL;
80     int i;
81    
82     // ���������������L�������������ATTX���L���������B
83     //if (getenv("TERATERM_EXTENSIONS") != NULL) {
84     if (1) {
85     char buf[1024];
86     struct _finddata_t searchData;
87     long searchHandle;
88    
89 doda 6791 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s\\TTX*.DLL", ts->HomeDir);
90 maya 3227
91 doda 6791 searchHandle = _findfirst(buf, &searchData);
92 maya 3227 if (searchHandle != -1L) {
93 doda 6791 do {
94     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s\\%s", ts->HomeDir, searchData.name);
95     loadExtension(&extensionList, buf);
96     } while (_findnext(searchHandle, &searchData)==0);
97 maya 3227 _findclose(searchHandle);
98     }
99    
100     if (NumExtensions==0) return;
101    
102     Extensions = (TTXExports * *)malloc(sizeof(TTXExports *)*NumExtensions);
103     for (i = 0; i < NumExtensions; i++) {
104     ExtensionList * old;
105    
106     Extensions[i] = extensionList->exports;
107     old = extensionList;
108     extensionList = extensionList->next;
109     free(old);
110     }
111    
112     qsort(Extensions, NumExtensions, sizeof(Extensions[0]), compareOrder);
113    
114     for (i = 0; i < NumExtensions; i++) {
115     if (Extensions[i]->TTXInit != NULL) {
116     Extensions[i]->TTXInit(ts, cv);
117     }
118     }
119     }
120     }
121    
122 doda 6801 void PASCAL TTXInternalOpenTCP(TTXSockHooks * hooks) {
123 maya 3227 int i;
124    
125     for (i = 0; i < NumExtensions; i++) {
126     if (Extensions[i]->TTXOpenTCP != NULL) {
127     Extensions[i]->TTXOpenTCP(hooks);
128     }
129     }
130     }
131    
132 doda 6801 void PASCAL TTXInternalCloseTCP(TTXSockHooks * hooks) {
133 maya 3227 int i;
134    
135     for (i = NumExtensions - 1; i >= 0; i--) {
136     if (Extensions[i]->TTXCloseTCP != NULL) {
137     Extensions[i]->TTXCloseTCP(hooks);
138     }
139     }
140     }
141    
142 doda 6801 void PASCAL TTXInternalOpenFile(TTXFileHooks * hooks) {
143 maya 3227 int i;
144    
145     for (i = 0; i < NumExtensions; i++) {
146     if (Extensions[i]->TTXOpenFile != NULL) {
147     Extensions[i]->TTXOpenFile(hooks);
148     }
149     }
150     }
151    
152 doda 6801 void PASCAL TTXInternalCloseFile(TTXFileHooks * hooks) {
153 maya 3227 int i;
154    
155     for (i = NumExtensions - 1; i >= 0; i--) {
156     if (Extensions[i]->TTXCloseFile != NULL) {
157     Extensions[i]->TTXCloseFile(hooks);
158     }
159     }
160     }
161    
162 doda 6801 void PASCAL TTXInternalGetUIHooks(TTXUIHooks * hooks) {
163 maya 3227 int i;
164    
165     for (i = 0; i < NumExtensions; i++) {
166     if (Extensions[i]->TTXGetUIHooks != NULL) {
167     Extensions[i]->TTXGetUIHooks(hooks);
168     }
169     }
170     }
171    
172 doda 6801 void PASCAL TTXInternalGetSetupHooks(TTXSetupHooks * hooks) {
173 maya 3227 int i;
174    
175     for (i = NumExtensions - 1; i >= 0; i--) {
176     if (Extensions[i]->TTXGetSetupHooks != NULL) {
177     Extensions[i]->TTXGetSetupHooks(hooks);
178     }
179     }
180     }
181    
182 doda 6801 void PASCAL TTXSetWinSize(int rows, int cols) {
183 maya 3227 int i;
184    
185     for (i = 0; i < NumExtensions; i++) {
186     if (Extensions[i]->TTXSetWinSize != NULL) {
187     Extensions[i]->TTXSetWinSize(rows, cols);
188     }
189     }
190     }
191    
192 doda 6801 void PASCAL TTXModifyMenu(HMENU menu) {
193 maya 3227 int i;
194    
195     for (i = 0; i < NumExtensions; i++) {
196     if (Extensions[i]->TTXModifyMenu != NULL) {
197     Extensions[i]->TTXModifyMenu(menu);
198     }
199     }
200     }
201    
202 doda 6801 void PASCAL TTXModifyPopupMenu(HMENU menu) {
203 maya 3227 int i;
204    
205     for (i = 0; i < NumExtensions; i++) {
206     if (Extensions[i]->TTXModifyPopupMenu != NULL) {
207     Extensions[i]->TTXModifyPopupMenu(menu);
208     }
209     }
210     }
211    
212 doda 6801 BOOL PASCAL TTXProcessCommand(HWND hWin, WORD cmd) {
213 maya 3227 int i;
214    
215     for (i = NumExtensions - 1; i >= 0; i--) {
216     if (Extensions[i]->TTXProcessCommand != NULL) {
217     if (Extensions[i]->TTXProcessCommand(hWin,cmd)) {
218     return TRUE;
219     }
220     }
221     }
222    
223     return FALSE;
224     }
225    
226 doda 6801 void PASCAL TTXEnd(void) {
227 maya 3227 int i;
228    
229     if (NumExtensions==0) return;
230    
231     for (i = NumExtensions - 1; i >= 0; i--) {
232     if (Extensions[i]->TTXEnd != NULL) {
233     Extensions[i]->TTXEnd();
234     }
235     }
236    
237     for (i=0; i<NumExtensions; i++)
238     FreeLibrary(LibHandle[i]);
239    
240     for (i = 0; i < NumExtensions; i++) {
241     free(Extensions[i]);
242     }
243    
244     free(Extensions);
245     NumExtensions = 0;
246     }
247    
248 doda 6801 void PASCAL TTXSetCommandLine(PCHAR cmd, int cmdlen, PGetHNRec rec) {
249 maya 3227 int i;
250    
251     for (i = 0; i < NumExtensions; i++) {
252     if (Extensions[i]->TTXSetCommandLine != NULL) {
253     Extensions[i]->TTXSetCommandLine(cmd, cmdlen, rec);
254     }
255     }
256     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26