Commit 233914019c9cbc7beb30cd12eea2e3993510f2e7

Authored by perry.werneck@gmail.com
1 parent 988584bf

Incluindo funcoes extras do hllapi na classe base

src/plugins/hllapi/Makefile.in
@@ -31,7 +31,9 @@ @@ -31,7 +31,9 @@
31 MODULE_NAME=hllapi 31 MODULE_NAME=hllapi
32 DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile 32 DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile
33 PLUGIN_SRC=pluginmain.c 33 PLUGIN_SRC=pluginmain.c
34 -HLLAPI_SRC=hllapi.c calls.c remote.c 34 +HLLAPI_SRC=hllapi.c calls.c
  35 +
  36 +CLASSLIBDIR=../../classlib
35 37
36 #---[ Paths ]------------------------------------------------------------------ 38 #---[ Paths ]------------------------------------------------------------------
37 39
@@ -48,8 +50,8 @@ OBJEXT = o @@ -48,8 +50,8 @@ OBJEXT = o
48 #---[ Tools ]------------------------------------------------------------------ 50 #---[ Tools ]------------------------------------------------------------------
49 51
50 MKDIR=@MKDIR_P@ 52 MKDIR=@MKDIR_P@
51 -CC=@CC@  
52 -LD=@CC@ 53 +CC=@CXX@
  54 +LD=@CXX@
53 MSGCAT=@MSGCAT@ 55 MSGCAT=@MSGCAT@
54 XGETTEXT=@XGETTEXT@ 56 XGETTEXT=@XGETTEXT@
55 57
@@ -81,15 +83,26 @@ ifeq ($(LIB3270_MODE),Default) @@ -81,15 +83,26 @@ ifeq ($(LIB3270_MODE),Default)
81 PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270` 83 PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270`
82 endif 84 endif
83 85
84 -  
85 GTK_CFLAGS ?= @GTK_CFLAGS@ @GTKMAC_CFLAGS@ 86 GTK_CFLAGS ?= @GTK_CFLAGS@ @GTKMAC_CFLAGS@
86 GTK_LIBS ?= @GTK_LIBS@ @GTKMAC_LIBS@ 87 GTK_LIBS ?= @GTK_LIBS@ @GTKMAC_LIBS@
87 88
  89 +include $(CLASSLIBDIR)/class.mak
  90 +
  91 +$(OBJDBG)/%.o: %.cc $(DEPENDS)
  92 + @echo " CC `basename $@`"
  93 + @$(MKDIR) `dirname $@`
  94 + @$(CXX) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $<
  95 +
88 $(OBJDBG)/%.o: %.c $(DEPENDS) 96 $(OBJDBG)/%.o: %.c $(DEPENDS)
89 @echo " CC `basename $@`" 97 @echo " CC `basename $@`"
90 @$(MKDIR) `dirname $@` 98 @$(MKDIR) `dirname $@`
91 @$(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< 99 @$(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $<
92 100
  101 +$(OBJRLS)/%.o: %.cc $(DEPENDS)
  102 + @echo " CC `basename $@`"
  103 + @$(MKDIR) `dirname $@`
  104 + @$(CXX) $(CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $<
  105 +
93 $(OBJRLS)/%.o: %.c $(DEPENDS) 106 $(OBJRLS)/%.o: %.c $(DEPENDS)
94 @echo " CC `basename $@`" 107 @echo " CC `basename $@`"
95 @$(MKDIR) `dirname $@` 108 @$(MKDIR) `dirname $@`
@@ -119,24 +132,24 @@ $(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC @@ -119,24 +132,24 @@ $(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC
119 @$(MKDIR) `dirname $@` 132 @$(MKDIR) `dirname $@`
120 @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) 133 @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS)
121 134
122 -$(BINDBG)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJDBG)/$(SRC).o) 135 +$(BINDBG)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJDBG)/$(SRC).o) $(CLASS_DEBUG_OBJECTS)
123 @echo " CCLD `basename $@`" 136 @echo " CCLD `basename $@`"
124 @$(MKDIR) `dirname $@` 137 @$(MKDIR) `dirname $@`
125 - @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) 138 + @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) $(CLASS_LIBS)
126 139
127 #---[ Misc targets ]----------------------------------------------------------- 140 #---[ Misc targets ]-----------------------------------------------------------
128 141
129 -$(BINDBG)/testprogram@EXEEXT@: testprogram.c $(BINDBG)/libhllapi@DLLEXT@ 142 +$(BINDBG)/testprogram@EXEEXT@: $(OBJDBG)/testprogram.o $(BINDBG)/libhllapi@DLLEXT@
130 @echo " CCLD `basename $@`" 143 @echo " CCLD `basename $@`"
131 @$(MKDIR) `dirname $@` 144 @$(MKDIR) `dirname $@`
132 - @$(CC) $(CFLAGS) $(PW3270_CFLAGS) -L$(BINDBG) $(DEBUG_CFLAGS) -lhllapi -o $@ testprogram.c 145 + @$(CXX) $(CFLAGS) $(PW3270_CFLAGS) -L$(BINDBG) $(DEBUG_CFLAGS) -lhllapi -o $@ $(OBJDBG)/testprogram.o
133 146
134 test: $(BINDBG)/testprogram@EXEEXT@ 147 test: $(BINDBG)/testprogram@EXEEXT@
135 -  
136 -run: $(BINDBG)/testprogram@EXEEXT@ 148 +
  149 +run: $(BINDBG)/testprogram@EXEEXT@
137 @cd $(BINDBG) ; ./testprogram@EXEEXT@ 150 @cd $(BINDBG) ; ./testprogram@EXEEXT@
138 -  
139 -install: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ 151 +
  152 +install: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@
140 @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins 153 @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins
141 @$(INSTALL_PROGRAM) $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins 154 @$(INSTALL_PROGRAM) $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins
142 155
src/plugins/hllapi/calls.c
@@ -1,599 +0,0 @@ @@ -1,599 +0,0 @@
1 -/*  
2 - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270  
3 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a  
4 - * aplicativos mainframe. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple  
19 - * Place, Suite 330, Boston, MA, 02111-1307, USA  
20 - *  
21 - * Este programa está nomeado como calls.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 - #include <windows.h>  
31 - #include <lib3270.h>  
32 - #include <malloc.h>  
33 - #include <string.h>  
34 - #include <errno.h>  
35 - #include <pw3270/hllapi.h>  
36 - #include <stdio.h>  
37 - #include <lib3270/log.h>  
38 - #include <process.h>  
39 - #include <time.h>  
40 - #include "client.h"  
41 -  
42 - #undef trace  
43 - #define trace( fmt, ... ) { FILE *out = fopen("c:\\Users\\Perry\\hllapi.log","a"); if(out) { fprintf(out, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fclose(out); } }  
44 -  
45 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
46 -  
47 - HMODULE hModule = NULL;  
48 - void * hSession = NULL;  
49 -  
50 -  
51 - static void * (*session_new)(const char *model) = NULL;  
52 - static void (*session_free)(void *h) = NULL;  
53 - static const char * (*get_revision)(void) = NULL;  
54 - static int (*host_connect)(void *h,const char *n, int wait) = NULL;  
55 - static int (*host_is_connected)(void *h) = NULL;  
56 - static int (*wait_for_ready)(void *h, int seconds) = NULL;  
57 - static void (*host_disconnect)(void *h) = NULL;  
58 - static int (*script_sleep)(void *h, int seconds) = NULL;  
59 - static LIB3270_MESSAGE (*get_message)(void *h) = NULL;  
60 - static char * (*get_text)(void *h, int row, int col, int len) = NULL;  
61 - static char * (*get_text_at_offset)(void *h, int offset, int len) = NULL;  
62 -  
63 - static void * (*release_memory)(void *p) = NULL;  
64 - static int (*action_enter)(void *h) = NULL;  
65 - static int (*set_text_at)(void *h, int row, int col, const unsigned char *str) = NULL;  
66 - static int (*cmp_text_at)(void *h, int row, int col, const char *text) = NULL;  
67 - static int (*pfkey)(void *hSession, int key) = NULL;  
68 - static int (*pakey)(void *hSession, int key) = NULL;  
69 - static int (*getcursor)(void *hSession) = NULL;  
70 - static int (*setcursor)(void *hSession, int baddr) = NULL;  
71 - static int (*emulate_input)(void *hSession, const char *s, int len, int pasting) = NULL;  
72 - static int (*erase_eof)(void *hSession) = NULL;  
73 - static int (*do_print)(void *h) = NULL;  
74 -  
75 - static const struct _entry_point  
76 - {  
77 - void **call;  
78 - void * pipe;  
79 - const char * name;  
80 - } entry_point[] =  
81 - {  
82 - { (void **) &session_new, (void *) hllapi_pipe_init, "lib3270_session_new" },  
83 - { (void **) &session_free, (void *) hllapi_pipe_deinit, "lib3270_session_free" },  
84 - { (void **) &get_revision, (void *) hllapi_pipe_get_revision, "lib3270_get_revision" },  
85 - { (void **) &host_connect, (void *) hllapi_pipe_connect, "lib3270_connect" },  
86 - { (void **) &host_disconnect, (void *) hllapi_pipe_disconnect, "lib3270_disconnect" },  
87 - { (void **) &host_is_connected, (void *) hllapi_pipe_is_connected, "lib3270_in_tn3270e" },  
88 - { (void **) &wait_for_ready, (void *) hllapi_pipe_wait_for_ready, "lib3270_wait_for_ready" },  
89 - { (void **) &script_sleep, (void *) hllapi_pipe_sleep, "lib3270_wait" },  
90 - { (void **) &get_message, (void *) hllapi_pipe_get_message, "lib3270_get_program_message" },  
91 - { (void **) &get_text, (void *) hllapi_pipe_get_text_at, "lib3270_get_text_at" },  
92 - { (void **) &release_memory, (void *) hllapi_pipe_release_memory, "lib3270_free" },  
93 - { (void **) &action_enter, (void *) hllapi_pipe_enter, "lib3270_enter" },  
94 - { (void **) &set_text_at, (void *) hllapi_pipe_set_text_at, "lib3270_set_string_at" },  
95 - { (void **) &cmp_text_at, (void *) hllapi_pipe_cmp_text_at, "lib3270_cmp_text_at" },  
96 - { (void **) &pfkey, (void *) hllapi_pipe_pfkey, "lib3270_pfkey" },  
97 - { (void **) &pakey, (void *) hllapi_pipe_pakey, "lib3270_pakey" },  
98 - { (void **) &setcursor, (void *) hllapi_pipe_setcursor, "lib3270_set_cursor_address" },  
99 - { (void **) &getcursor, (void *) hllapi_pipe_getcursor, "lib3270_get_cursor_address" },  
100 - { (void **) &get_text_at_offset, (void *) hllapi_pipe_get_text, "lib3270_get_text" },  
101 - { (void **) &emulate_input, (void *) hllapi_pipe_emulate_input, "lib3270_emulate_input" },  
102 - { (void **) &erase_eof, (void *) hllapi_pipe_erase_eof, "lib3270_eraseeof" },  
103 - { (void **) &do_print, (void *) hllapi_pipe_print, "lib3270_print" },  
104 -  
105 - { NULL, NULL, NULL }  
106 - };  
107 -  
108 -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx  
109 -#ifndef LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
110 - #define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x00001000  
111 -#endif // LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
112 -  
113 -#ifndef LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
114 - #define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x00000100  
115 -#endif // LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
116 -  
117 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
118 -  
119 - static DWORD load_remote(void)  
120 - {  
121 - // Get pointers to the pipe based calls  
122 - int f;  
123 -  
124 - trace("%s: Loading pipe based calls",__FUNCTION__);  
125 - for(f=0;entry_point[f].name;f++)  
126 - *entry_point[f].call = entry_point[f].pipe;  
127 -  
128 - return HLLAPI_STATUS_SUCCESS;  
129 - }  
130 -  
131 - static DWORD start_session(void)  
132 - {  
133 - char buffer[80];  
134 - char appName[4096];  
135 - HKEY hKey = 0;  
136 - unsigned long datalen = 4096;  
137 - DWORD ret;  
138 - STARTUPINFO si;  
139 - PROCESS_INFORMATION pi;  
140 -  
141 - // Get application path  
142 - *appName = 0;  
143 - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)  
144 - {  
145 - unsigned long datatype; // #defined in winnt.h (predefined types 0-11)  
146 - if(RegQueryValueExA(hKey,"appName",NULL,&datatype,(LPBYTE) appName,&datalen) != ERROR_SUCCESS)  
147 - *appName = 0;  
148 - RegCloseKey(hKey);  
149 - }  
150 -  
151 - trace("%s appname=%s\n",__FUNCTION__,appName);  
152 -  
153 - snprintf(buffer,79,"%s --session=\"H%06d\"",appName,getpid());  
154 -  
155 - ZeroMemory( &si, sizeof(si) );  
156 - si.cb = sizeof(si);  
157 - ZeroMemory( &pi, sizeof(pi) );  
158 -  
159 - // si.dwFlags = STARTF_PREVENTPINNING;  
160 - trace("App: %s",appName);  
161 - trace("CmdLine: %s",buffer);  
162 -  
163 - if(!CreateProcess(NULL,buffer,NULL,NULL,0,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi))  
164 - return GetLastError();  
165 -  
166 - CloseHandle( pi.hProcess );  
167 - CloseHandle( pi.hThread );  
168 -  
169 - // Wait for pipe to be available  
170 - time_t timer = time(0)+5;  
171 - HANDLE hPipe = INVALID_HANDLE_VALUE;  
172 - WIN32_FIND_DATA FindFileData;  
173 -  
174 - snprintf(buffer,4095,"\\\\.\\pipe\\H%06d_a",getpid());  
175 -  
176 - while(hPipe == INVALID_HANDLE_VALUE && time(0) < timer)  
177 - {  
178 - Sleep(10);  
179 - hPipe = FindFirstFile(buffer, &FindFileData);  
180 - }  
181 -  
182 - if(hPipe == INVALID_HANDLE_VALUE)  
183 - return - ETIMEDOUT;  
184 -  
185 - CloseHandle(hPipe);  
186 -  
187 - // Load PIPE calls for the created session  
188 - snprintf(buffer,79,"H%06d:a",getpid());  
189 - ret = load_remote();  
190 - if(ret)  
191 - return ret;  
192 -  
193 - snprintf(buffer,79,"H%06d:A",getpid());  
194 - hSession = session_new((const char *) buffer);  
195 - trace("%s ok hSession=%p\n",__FUNCTION__,hSession);  
196 -  
197 - return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR;  
198 - }  
199 -  
200 - static DWORD load_dll(void)  
201 - {  
202 - // Direct mode, load lib3270.dll, get pointers to the calls  
203 - static const char *dllname = "lib3270.dll." PACKAGE_VERSION;  
204 -  
205 - int f;  
206 - HMODULE kernel;  
207 - HANDLE cookie = NULL;  
208 - DWORD rc;  
209 - HANDLE (*AddDllDirectory)(PCWSTR NewDirectory);  
210 - BOOL (*RemoveDllDirectory)(HANDLE Cookie);  
211 - UINT errorMode;  
212 - char datadir[4096];  
213 -  
214 - trace("hModule=%p",hModule);  
215 - if(hModule)  
216 - return -EBUSY;  
217 -  
218 - kernel = LoadLibrary("kernel32.dll");  
219 - AddDllDirectory = (HANDLE (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory");  
220 - RemoveDllDirectory = (BOOL (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory");  
221 -  
222 - // Notify user in case of error loading protocol DLL  
223 - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621(v=vs.85).aspx  
224 - errorMode = SetErrorMode(1);  
225 -  
226 - memset(datadir,' ',4095);  
227 - datadir[4095] = 0;  
228 -  
229 - if(hllapi_get_datadir(datadir))  
230 - {  
231 - char buffer[4096];  
232 - wchar_t path[4096];  
233 -  
234 - mbstowcs(path, datadir, 4095);  
235 - trace("Datadir=[%s] AddDllDirectory=%p RemoveDllDirectory=%p\n",datadir,AddDllDirectory,RemoveDllDirectory);  
236 - if(AddDllDirectory)  
237 - cookie = AddDllDirectory(path);  
238 -  
239 -#ifdef DEBUG  
240 - snprintf(buffer,4096,"%s\\.bin\\Debug\\%s",datadir,dllname);  
241 -#else  
242 - snprintf(buffer,4096,"%s\\%s",datadir,dllname);  
243 -#endif // DEBUG  
244 -  
245 - hModule = LoadLibrary(buffer);  
246 -  
247 - trace("%s hModule=%p rc=%d",buffer,hModule,(int) GetLastError());  
248 -  
249 - if(hModule == NULL)  
250 - {  
251 - // Enable DLL error popup and try again with full path  
252 - SetErrorMode(0);  
253 - hModule = LoadLibraryEx(buffer,NULL,LOAD_LIBRARY_SEARCH_DEFAULT_DIRS|LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR);  
254 - }  
255 -  
256 - rc = GetLastError();  
257 -  
258 - trace("%s hModule=%p rc=%d",buffer,hModule,(int) rc);  
259 - }  
260 - else  
261 - {  
262 - hModule = LoadLibrary(dllname);  
263 - rc = GetLastError();  
264 - }  
265 -  
266 - SetErrorMode(errorMode);  
267 -  
268 - trace("%s hModule=%p rc=%d",dllname,hModule,(int) rc);  
269 -  
270 - if(cookie && RemoveDllDirectory)  
271 - RemoveDllDirectory(cookie);  
272 -  
273 - if(kernel)  
274 - FreeLibrary(kernel);  
275 -  
276 - if(!hModule)  
277 - return rc;  
278 -  
279 - // Get library entry pointers  
280 - for(f=0;entry_point[f].name;f++)  
281 - {  
282 - void *ptr = (void *) GetProcAddress(hModule,entry_point[f].name);  
283 -  
284 - trace("%d %s=%p\n",f,entry_point[f].name,ptr);  
285 -  
286 - if(!ptr)  
287 - {  
288 - trace("Can´t load \"%s\"\n",entry_point[f].name);  
289 - hllapi_deinit();  
290 - return -ENOENT;  
291 - }  
292 - *entry_point[f].call = ptr;  
293 - }  
294 -  
295 - return HLLAPI_STATUS_SUCCESS;  
296 - }  
297 -  
298 - __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode)  
299 - {  
300 - if(!mode)  
301 - return HLLAPI_STATUS_SYSTEM_ERROR;  
302 -  
303 - trace("%s(%s)",__FUNCTION__,(char *) mode);  
304 -  
305 - if(mode && *mode)  
306 - {  
307 - if(strcasecmp(mode,"start") == 0 || strcasecmp(mode,"new") == 0)  
308 - return start_session();  
309 -  
310 - load_remote();  
311 - }  
312 - else  
313 - {  
314 - load_dll();  
315 - }  
316 -  
317 - // Get session handle  
318 - hSession = session_new((const char *) mode);  
319 - trace("%s ok hSession=%p\n",__FUNCTION__,hSession);  
320 -  
321 - return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR;  
322 - }  
323 -  
324 - __declspec (dllexport) DWORD __stdcall hllapi_deinit(void)  
325 - {  
326 - int f;  
327 -  
328 - // Release session  
329 - if(hSession && session_free)  
330 - session_free(hSession);  
331 -  
332 - for(f=0;entry_point[f].name;f++)  
333 - *entry_point[f].call = NULL;  
334 -  
335 - if(hModule != NULL)  
336 - {  
337 - FreeLibrary(hModule);  
338 - hModule = NULL;  
339 - }  
340 -  
341 - return 0;  
342 - }  
343 -  
344 - __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void)  
345 - {  
346 - if(!get_revision)  
347 - return 0;  
348 - return (DWORD) atoi(get_revision());  
349 - }  
350 -  
351 - __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait)  
352 - {  
353 - if(!(host_connect && hSession && uri))  
354 - return HLLAPI_STATUS_SYSTEM_ERROR;  
355 -  
356 - return host_connect(hSession,uri,wait);  
357 - }  
358 -  
359 - __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void)  
360 - {  
361 - if(!(host_is_connected && hSession))  
362 - return HLLAPI_STATUS_SYSTEM_ERROR;  
363 -  
364 - return host_is_connected(hSession);  
365 - }  
366 -  
367 - __declspec (dllexport) DWORD __stdcall hllapi_get_state(void)  
368 - {  
369 - switch(hllapi_get_message_id())  
370 - {  
371 - case LIB3270_MESSAGE_NONE: /* 0 - No message */  
372 - return HLLAPI_STATUS_SUCCESS;  
373 -  
374 - case LIB3270_MESSAGE_DISCONNECTED: /* 4 - Disconnected from host */  
375 - return HLLAPI_STATUS_DISCONNECTED;  
376 -  
377 - case LIB3270_MESSAGE_MINUS:  
378 - case LIB3270_MESSAGE_PROTECTED:  
379 - case LIB3270_MESSAGE_NUMERIC:  
380 - case LIB3270_MESSAGE_OVERFLOW:  
381 - case LIB3270_MESSAGE_INHIBIT:  
382 - case LIB3270_MESSAGE_KYBDLOCK:  
383 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
384 -  
385 - case LIB3270_MESSAGE_SYSWAIT:  
386 - case LIB3270_MESSAGE_TWAIT:  
387 - case LIB3270_MESSAGE_AWAITING_FIRST:  
388 - case LIB3270_MESSAGE_X:  
389 - case LIB3270_MESSAGE_RESOLVING:  
390 - case LIB3270_MESSAGE_CONNECTING:  
391 - return HLLAPI_STATUS_WAITING;  
392 - }  
393 -  
394 - return HLLAPI_STATUS_SYSTEM_ERROR;  
395 - }  
396 -  
397 - __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void)  
398 - {  
399 - if(!(host_disconnect && hSession))  
400 - return HLLAPI_STATUS_SYSTEM_ERROR;  
401 -  
402 - host_disconnect(hSession);  
403 -  
404 - return 0;  
405 - }  
406 -  
407 - __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds)  
408 - {  
409 - if(!(wait_for_ready && hSession))  
410 - return HLLAPI_STATUS_SYSTEM_ERROR;  
411 -  
412 - trace("%s seconds=%d\n", __FUNCTION__, (int) seconds);  
413 -  
414 - return (DWORD) wait_for_ready(hSession,(int) seconds);  
415 - }  
416 -  
417 - __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds)  
418 - {  
419 - if(!(script_sleep && hSession))  
420 - return HLLAPI_STATUS_SYSTEM_ERROR;  
421 -  
422 - return (DWORD) script_sleep(hSession,(int) seconds);  
423 - }  
424 -  
425 - __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void)  
426 - {  
427 - if(!(get_message && hSession))  
428 - return HLLAPI_STATUS_SYSTEM_ERROR;  
429 - return (DWORD) get_message(hSession);  
430 - }  
431 -  
432 - __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer)  
433 - {  
434 - char * text;  
435 - int len;  
436 -  
437 - if(!(get_text && release_memory && hSession))  
438 - return HLLAPI_STATUS_SYSTEM_ERROR;  
439 -  
440 - trace("%s row=%d col=%d buffer=%p",__FUNCTION__,row,col,buffer);  
441 - len = strlen(buffer);  
442 -  
443 - trace(" len=%d",len);  
444 -  
445 - text = get_text(hSession,row,col,len);  
446 -  
447 - trace(" text=%p errno=%d %s\n",text,errno,strerror(errno));  
448 -  
449 - if(!text)  
450 - {  
451 - int rc = hllapi_get_state();  
452 - return rc == HLLAPI_STATUS_SUCCESS ? -1 : rc;  
453 - }  
454 -  
455 - strncpy(buffer,text,len);  
456 - release_memory(text);  
457 -  
458 - trace("text:\n%s\n",buffer);  
459 -  
460 - return HLLAPI_STATUS_SUCCESS;  
461 - }  
462 -  
463 - __declspec (dllexport) DWORD __stdcall hllapi_enter(void)  
464 - {  
465 - if(!(action_enter && hSession))  
466 - return HLLAPI_STATUS_SYSTEM_ERROR;  
467 -  
468 - return (DWORD) action_enter(hSession);  
469 - }  
470 -  
471 - __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text)  
472 - {  
473 - if(!(set_text_at && hSession))  
474 - return HLLAPI_STATUS_SYSTEM_ERROR;  
475 -  
476 - return (DWORD) set_text_at(hSession,row,col,(const unsigned char *) text);  
477 - }  
478 -  
479 - __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text)  
480 - {  
481 - if(!(cmp_text_at && hSession))  
482 - return HLLAPI_STATUS_SYSTEM_ERROR;  
483 -  
484 - return (DWORD) cmp_text_at(hSession,row,col,(const char *) text);  
485 - }  
486 -  
487 - __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key)  
488 - {  
489 - if(!(pfkey && hSession))  
490 - return HLLAPI_STATUS_SYSTEM_ERROR;  
491 -  
492 - return (DWORD) pfkey(hSession,key);  
493 - }  
494 -  
495 - __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key)  
496 - {  
497 - if(!(pfkey && hSession))  
498 - return HLLAPI_STATUS_SYSTEM_ERROR;  
499 -  
500 - return (DWORD) pakey(hSession,key);  
501 - }  
502 -  
503 - __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir)  
504 - {  
505 - HKEY hKey = 0;  
506 - unsigned long datalen = strlen(datadir);  
507 -  
508 - *datadir = 0;  
509 -  
510 - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)  
511 - {  
512 - unsigned long datatype; // #defined in winnt.h (predefined types 0-11)  
513 - if(RegQueryValueExA(hKey,"datadir",NULL,&datatype,(LPBYTE) datadir,&datalen) != ERROR_SUCCESS)  
514 - *datadir = 0;  
515 - RegCloseKey(hKey);  
516 - }  
517 -  
518 - return *datadir;  
519 - }  
520 -  
521 - __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD pos)  
522 - {  
523 - if(!(setcursor && hSession))  
524 - return HLLAPI_STATUS_SYSTEM_ERROR;  
525 - trace("%s(%d)",__FUNCTION__,pos);  
526 - return setcursor(hSession,pos-1);  
527 - }  
528 -  
529 - __declspec (dllexport) DWORD __stdcall hllapi_getcursor()  
530 - {  
531 - if(!(getcursor && hSession))  
532 - return HLLAPI_STATUS_SYSTEM_ERROR;  
533 - return getcursor(hSession)+1;  
534 - }  
535 -  
536 - __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD offset, LPSTR buffer, WORD len)  
537 - {  
538 - size_t szBuffer = strlen(buffer);  
539 - char * text;  
540 -  
541 - if(len < szBuffer && len > 0)  
542 - szBuffer = len;  
543 -  
544 - text = hllapi_get_string(offset, szBuffer);  
545 - if(!text)  
546 - {  
547 - int rc = hllapi_get_state();  
548 - return rc == HLLAPI_STATUS_SUCCESS ? -1 : rc;  
549 - }  
550 -  
551 - memcpy(buffer,text,len);  
552 -  
553 - hllapi_free(text);  
554 -  
555 - return HLLAPI_STATUS_SUCCESS;  
556 - }  
557 -  
558 - __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting)  
559 - {  
560 -  
561 - if(!(emulate_input && hSession))  
562 - return HLLAPI_STATUS_DISCONNECTED;  
563 - trace("%s(%s)",__FUNCTION__,(char *) buffer);  
564 -  
565 - if(buffer && *buffer)  
566 - emulate_input(hSession, buffer, len, pasting);  
567 -  
568 - return HLLAPI_STATUS_SUCCESS;  
569 - }  
570 -  
571 - __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void)  
572 - {  
573 - if(!erase_eof && hSession)  
574 - return HLLAPI_STATUS_SYSTEM_ERROR;  
575 - trace("%s",__FUNCTION__);  
576 - return erase_eof(hSession);  
577 - }  
578 -  
579 - __declspec (dllexport) DWORD __stdcall hllapi_print(void)  
580 - {  
581 - if(!(do_print && hSession))  
582 - return HLLAPI_STATUS_SYSTEM_ERROR;  
583 -  
584 - return do_print(hSession);  
585 - }  
586 -  
587 - char * hllapi_get_string(int offset, size_t len)  
588 - {  
589 - if(!(get_text_at_offset && hSession))  
590 - return NULL;  
591 -  
592 - return get_text_at_offset(hSession,offset-1,len);  
593 - }  
594 -  
595 - void hllapi_free(void *p)  
596 - {  
597 - if(release_memory)  
598 - release_memory(p);  
599 - }  
src/plugins/hllapi/calls.cc 0 → 100644
@@ -0,0 +1,329 @@ @@ -0,0 +1,329 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como calls.cc e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 + #include <exception>
  31 + #include <pw3270/class.h>
  32 + #include <pw3270/hllapi.h>
  33 +
  34 + #undef trace
  35 + #define trace( fmt, ... ) { FILE *out = fopen("c:\\Users\\Perry\\hllapi.log","a"); if(out) { fprintf(out, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fclose(out); } }
  36 +
  37 + using namespace std;
  38 + using namespace PW3270_NAMESPACE;
  39 +
  40 +/*--[ Globals ]--------------------------------------------------------------------------------------*/
  41 +
  42 + static session * hSession = NULL;
  43 +
  44 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  45 +
  46 + __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode)
  47 + {
  48 + try
  49 + {
  50 + if(hSession)
  51 + delete hSession;
  52 + hSession = session::create(mode);
  53 + }
  54 + catch(std::exception &e)
  55 + {
  56 + return HLLAPI_STATUS_SYSTEM_ERROR;
  57 + }
  58 +
  59 + return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR;
  60 + }
  61 +
  62 + __declspec (dllexport) DWORD __stdcall hllapi_deinit(void)
  63 + {
  64 + try
  65 + {
  66 + if(hSession)
  67 + {
  68 + delete hSession;
  69 + hSession = NULL;
  70 + }
  71 + }
  72 + catch(std::exception &e)
  73 + {
  74 + return HLLAPI_STATUS_SYSTEM_ERROR;
  75 + }
  76 +
  77 + return HLLAPI_STATUS_SUCCESS;
  78 + }
  79 +
  80 + __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void)
  81 + {
  82 + try
  83 + {
  84 + return atoi(session::get_default()->get_revision().c_str());
  85 + }
  86 + catch(std::exception &e)
  87 + {
  88 + return -1;
  89 + }
  90 + return (DWORD) -1;
  91 + }
  92 +
  93 + __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait)
  94 + {
  95 + int rc = HLLAPI_STATUS_SUCCESS;
  96 +
  97 + try
  98 + {
  99 + rc = session::get_default()->connect(uri,wait);
  100 + }
  101 + catch(std::exception &e)
  102 + {
  103 + return HLLAPI_STATUS_SYSTEM_ERROR;
  104 + }
  105 +
  106 + return rc;
  107 + }
  108 +
  109 + __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void)
  110 + {
  111 + return session::get_default()->is_connected();
  112 + }
  113 +
  114 + __declspec (dllexport) DWORD __stdcall hllapi_get_state(void)
  115 + {
  116 + switch(hllapi_get_message_id())
  117 + {
  118 + case LIB3270_MESSAGE_NONE: /* 0 - No message */
  119 + return HLLAPI_STATUS_SUCCESS;
  120 +
  121 + case LIB3270_MESSAGE_DISCONNECTED: /* 4 - Disconnected from host */
  122 + return HLLAPI_STATUS_DISCONNECTED;
  123 +
  124 + case LIB3270_MESSAGE_MINUS:
  125 + case LIB3270_MESSAGE_PROTECTED:
  126 + case LIB3270_MESSAGE_NUMERIC:
  127 + case LIB3270_MESSAGE_OVERFLOW:
  128 + case LIB3270_MESSAGE_INHIBIT:
  129 + case LIB3270_MESSAGE_KYBDLOCK:
  130 + return HLLAPI_STATUS_KEYBOARD_LOCKED;
  131 +
  132 + case LIB3270_MESSAGE_SYSWAIT:
  133 + case LIB3270_MESSAGE_TWAIT:
  134 + case LIB3270_MESSAGE_AWAITING_FIRST:
  135 + case LIB3270_MESSAGE_X:
  136 + case LIB3270_MESSAGE_RESOLVING:
  137 + case LIB3270_MESSAGE_CONNECTING:
  138 + return HLLAPI_STATUS_WAITING;
  139 + }
  140 +
  141 + return HLLAPI_STATUS_SYSTEM_ERROR;
  142 + }
  143 +
  144 + __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void)
  145 + {
  146 + session::get_default()->disconnect();
  147 + return HLLAPI_STATUS_SUCCESS;
  148 + }
  149 +
  150 + __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds)
  151 + {
  152 + return session::get_default()->wait_for_ready(seconds);
  153 + }
  154 +
  155 + __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds)
  156 + {
  157 + return session::get_default()->wait(seconds);
  158 + }
  159 +
  160 + __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void)
  161 + {
  162 + return session::get_default()->get_cstate();
  163 + }
  164 +
  165 + __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer)
  166 + {
  167 + if(!(buffer && *buffer))
  168 + return HLLAPI_STATUS_SYSTEM_ERROR;
  169 +
  170 + try
  171 + {
  172 + size_t sz = strlen(buffer);
  173 + string * str = session::get_default()->get_string_at(row,col,sz);
  174 + if(str)
  175 + {
  176 + strncpy(buffer,str->c_str(),sz);
  177 + delete str;
  178 + }
  179 + }
  180 + catch(std::exception &e)
  181 + {
  182 + return HLLAPI_STATUS_SYSTEM_ERROR;
  183 + }
  184 +
  185 + return HLLAPI_STATUS_SUCCESS;
  186 + }
  187 +
  188 + __declspec (dllexport) DWORD __stdcall hllapi_enter(void)
  189 + {
  190 + return session::get_default()->enter();
  191 + }
  192 +
  193 + __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text)
  194 + {
  195 + try
  196 + {
  197 + session::get_default()->set_string_at(row,col,text);
  198 + }
  199 + catch(std::exception &e)
  200 + {
  201 + return HLLAPI_STATUS_SYSTEM_ERROR;
  202 + }
  203 +
  204 + return HLLAPI_STATUS_SUCCESS;
  205 + }
  206 +
  207 + __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text)
  208 + {
  209 + int rc = HLLAPI_STATUS_SYSTEM_ERROR;
  210 + try
  211 + {
  212 + rc = session::get_default()->cmp_string_at(row,col,text);
  213 + }
  214 + catch(std::exception &e)
  215 + {
  216 + return HLLAPI_STATUS_SYSTEM_ERROR;
  217 + }
  218 +
  219 + return rc;
  220 + }
  221 +
  222 + __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key)
  223 + {
  224 + return session::get_default()->pfkey(key);
  225 + }
  226 +
  227 + __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key)
  228 + {
  229 + return session::get_default()->pakey(key);
  230 + }
  231 +
  232 + __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir)
  233 + {
  234 + HKEY hKey = 0;
  235 + unsigned long datalen = strlen(datadir);
  236 +
  237 + *datadir = 0;
  238 +
  239 + if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)
  240 + {
  241 + unsigned long datatype; // #defined in winnt.h (predefined types 0-11)
  242 + if(RegQueryValueExA(hKey,"datadir",NULL,&datatype,(LPBYTE) datadir,&datalen) != ERROR_SUCCESS)
  243 + *datadir = 0;
  244 + RegCloseKey(hKey);
  245 + }
  246 +
  247 + return *datadir;
  248 + }
  249 +
  250 + __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD pos)
  251 + {
  252 + return session::get_default()->set_cursor_addr(pos-1);
  253 + }
  254 +
  255 + __declspec (dllexport) DWORD __stdcall hllapi_getcursor()
  256 + {
  257 + return session::get_default()->get_cursor_addr()+1;
  258 + }
  259 +
  260 + __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD offset, LPSTR buffer, WORD len)
  261 + {
  262 + int rc = HLLAPI_STATUS_SYSTEM_ERROR;
  263 +
  264 + if(!(buffer && *buffer))
  265 + return rc;
  266 +
  267 + try
  268 + {
  269 + size_t szBuffer = strlen(buffer);
  270 +
  271 + if(len < szBuffer && len > 0)
  272 + szBuffer = len;
  273 +
  274 + string *str = session::get_default()->get_string(offset,szBuffer);
  275 + if(str)
  276 + {
  277 + strncpy(buffer,str->c_str(),szBuffer);
  278 + delete str;
  279 + rc = HLLAPI_STATUS_SUCCESS;
  280 + }
  281 + }
  282 + catch(std::exception &e)
  283 + {
  284 + rc = HLLAPI_STATUS_SYSTEM_ERROR;
  285 + }
  286 +
  287 + return rc;
  288 + }
  289 +
  290 + __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting)
  291 + {
  292 + session::get_default()->emulate_input(buffer);
  293 + return HLLAPI_STATUS_SUCCESS;
  294 + }
  295 +
  296 + __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void)
  297 + {
  298 + session::get_default()->erase_eof();
  299 + return HLLAPI_STATUS_SUCCESS;
  300 + }
  301 +
  302 + __declspec (dllexport) DWORD __stdcall hllapi_print(void)
  303 + {
  304 + return session::get_default()->print();
  305 + }
  306 +
  307 + char * hllapi_get_string(int offset, size_t len)
  308 + {
  309 + try
  310 + {
  311 + string *str = session::get_default()->get_string(offset-1,len);
  312 + if(str)
  313 + {
  314 + char * ret = strdup(str->c_str());
  315 + delete str;
  316 + return ret;
  317 + }
  318 + }
  319 + catch(std::exception &e)
  320 + {
  321 + }
  322 +
  323 + return NULL;
  324 + }
  325 +
  326 + void hllapi_free(void *p)
  327 + {
  328 + free(p);
  329 + }
src/plugins/hllapi/hllapi.c
@@ -91,7 +91,7 @@ @@ -91,7 +91,7 @@
91 LIB3270_EXPORT int hllapi(const unsigned long *func, char *buffer, unsigned short *length, unsigned short *rc) 91 LIB3270_EXPORT int hllapi(const unsigned long *func, char *buffer, unsigned short *length, unsigned short *rc)
92 #endif // _WIN32 92 #endif // _WIN32
93 { 93 {
94 - int f; 94 + unsigned int f;
95 95
96 trace("%s(%d)",__FUNCTION__,*func); 96 trace("%s(%d)",__FUNCTION__,*func);
97 97
@@ -123,7 +123,7 @@ static int connect_ps(char *buffer, unsigned short *length, unsigned short *rc) @@ -123,7 +123,7 @@ static int connect_ps(char *buffer, unsigned short *length, unsigned short *rc)
123 { 123 {
124 int sz = strlen(buffer); 124 int sz = strlen(buffer);
125 125
126 - tempbuffer = malloc(sz+2); 126 + tempbuffer = (char *) malloc(sz+2);
127 strcpy(tempbuffer,buffer); 127 strcpy(tempbuffer,buffer);
128 tempbuffer[sz-1] = ':'; 128 tempbuffer[sz-1] = ':';
129 tempbuffer[sz] = buffer[sz-1]; 129 tempbuffer[sz] = buffer[sz-1];
@@ -197,7 +197,7 @@ static int input_string(char *input, unsigned short *length, unsigned short *rc) @@ -197,7 +197,7 @@ static int input_string(char *input, unsigned short *length, unsigned short *rc)
197 if(*length > 0 && *length < szText) 197 if(*length > 0 && *length < szText)
198 szText = *length; 198 szText = *length;
199 199
200 - text = malloc(szText+2); 200 + text = (char *) malloc(szText+2);
201 memcpy(text,input,szText); 201 memcpy(text,input,szText);
202 text[szText] = 0; 202 text[szText] = 0;
203 203
src/plugins/hllapi/hllapi.cbp
@@ -37,9 +37,9 @@ @@ -37,9 +37,9 @@
37 <Add option="-g" /> 37 <Add option="-g" />
38 </Compiler> 38 </Compiler>
39 <Environment> 39 <Environment>
40 - <Variable name="LIB3270_CFLAGS" value='&quot;-I../../../src/include&quot;' />  
41 - <Variable name="LIB3270_LIBS" value='&quot;-L../../../.bin/Debug -l3270&quot;' />  
42 - <Variable name="PW3270_LIBS" value='&quot;-L../../../.bin/Debug -lpw3270 -l3270&quot;' /> 40 + <Variable name="LIB3270_CFLAGS" value='&quot;-I..\..\..\src\include&quot;' />
  41 + <Variable name="LIB3270_LIBS" value='&quot;-L..\..\..\.bin\Debug -l3270&quot;' />
  42 + <Variable name="PW3270_LIBS" value='&quot;-L..\..\..\.bin\Debug -lpw3270 -l3270&quot;' />
43 </Environment> 43 </Environment>
44 <MakeCommands> 44 <MakeCommands>
45 <Build command="$make LIB3270_MODE=Debug -f $makefile $target" /> 45 <Build command="$make LIB3270_MODE=Debug -f $makefile $target" />
@@ -55,14 +55,11 @@ @@ -55,14 +55,11 @@
55 <Add option="-Wall" /> 55 <Add option="-Wall" />
56 </Compiler> 56 </Compiler>
57 <Unit filename="Makefile.in" /> 57 <Unit filename="Makefile.in" />
58 - <Unit filename="calls.c">  
59 - <Option compilerVar="CC" />  
60 - </Unit> 58 + <Unit filename="calls.cc" />
61 <Unit filename="client.h" /> 59 <Unit filename="client.h" />
62 <Unit filename="hllapi.c"> 60 <Unit filename="hllapi.c">
63 <Option compilerVar="CC" /> 61 <Option compilerVar="CC" />
64 </Unit> 62 </Unit>
65 - <Unit filename="packets.h" />  
66 <Unit filename="pluginmain.c"> 63 <Unit filename="pluginmain.c">
67 <Option compilerVar="CC" /> 64 <Option compilerVar="CC" />
68 </Unit> 65 </Unit>
src/plugins/hllapi/pluginmain.c
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 */ 32 */
33 33
34 #include "server.h" 34 #include "server.h"
  35 + #include <windows.h>
35 #include <pw3270/plugin.h> 36 #include <pw3270/plugin.h>
36 #include <pw3270/v3270.h> 37 #include <pw3270/v3270.h>
37 #include <pw3270/ipcpackets.h> 38 #include <pw3270/ipcpackets.h>
@@ -42,18 +43,20 @@ @@ -42,18 +43,20 @@
42 43
43 #pragma pack(1) 44 #pragma pack(1)
44 45
  46 + enum PIPE_STATE
  47 + {
  48 + PIPE_STATE_WAITING,
  49 + PIPE_STATE_READ,
  50 + PIPE_STATE_PENDING_READ,
  51 + PIPE_STATE_UNDEFINED
  52 + };
  53 +
45 typedef struct _pipe_source 54 typedef struct _pipe_source
46 { 55 {
47 GSource gsrc; 56 GSource gsrc;
48 HANDLE hPipe; 57 HANDLE hPipe;
49 58
50 - enum _PIPE_STATE  
51 - {  
52 - PIPE_STATE_WAITING,  
53 - PIPE_STATE_READ,  
54 - PIPE_STATE_PENDING_READ,  
55 - PIPE_STATE_UNDEFINED,  
56 - } state; 59 + enum PIPE_STATE state;
57 60
58 OVERLAPPED overlap; 61 OVERLAPPED overlap;
59 unsigned char buffer[PIPE_BUFFER_LENGTH+1]; 62 unsigned char buffer[PIPE_BUFFER_LENGTH+1];
@@ -145,7 +148,7 @@ @@ -145,7 +148,7 @@
145 if(text) 148 if(text)
146 { 149 {
147 szBlock = sizeof(struct hllapi_packet_text)+strlen(text); 150 szBlock = sizeof(struct hllapi_packet_text)+strlen(text);
148 - pkt = g_malloc0(szBlock); 151 + pkt = (struct hllapi_packet_text *) g_malloc0(szBlock);
149 pkt->packet_id = 0; 152 pkt->packet_id = 0;
150 strcpy(pkt->text,text); 153 strcpy(pkt->text,text);
151 lib3270_free(text); 154 lib3270_free(text);
@@ -153,7 +156,7 @@ @@ -153,7 +156,7 @@
153 else 156 else
154 { 157 {
155 szBlock = sizeof(struct hllapi_packet_text); 158 szBlock = sizeof(struct hllapi_packet_text);
156 - pkt = g_malloc0(szBlock); 159 + pkt = (struct hllapi_packet_text *) g_malloc0(szBlock);
157 pkt->packet_id = errno ? errno : -1; 160 pkt->packet_id = errno ? errno : -1;
158 } 161 }
159 162
@@ -280,7 +283,7 @@ @@ -280,7 +283,7 @@
280 283
281 case HLLAPI_PACKET_SET_TOGGLE: 284 case HLLAPI_PACKET_SET_TOGGLE:
282 send_result(source,lib3270_set_toggle(lib3270_get_default_session_handle(), 285 send_result(source,lib3270_set_toggle(lib3270_get_default_session_handle(),
283 - ((struct hllapi_packet_set *) source->buffer)->id, 286 + (LIB3270_TOGGLE) ((struct hllapi_packet_set *) source->buffer)->id,
284 ((struct hllapi_packet_set *) source->buffer)->value)); 287 ((struct hllapi_packet_set *) source->buffer)->value));
285 break; 288 break;
286 289
@@ -456,7 +459,7 @@ @@ -456,7 +459,7 @@
456 459
457 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); 460 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
458 461
459 - for(ptr=lpMsgBuf;*ptr && *ptr != '\n';ptr++); 462 + for(ptr= (char *) lpMsgBuf;*ptr && *ptr != '\n';ptr++);
460 *ptr = 0; 463 *ptr = 0;
461 464
462 va_start(arg_ptr, fmt); 465 va_start(arg_ptr, fmt);
src/plugins/hllapi/testprogram.c
@@ -27,7 +27,6 @@ @@ -27,7 +27,6 @@
27 * 27 *
28 */ 28 */
29 29
30 - #include <windows.h>  
31 #include <stdio.h> 30 #include <stdio.h>
32 #include <time.h> 31 #include <time.h>
33 #include <pw3270/hllapi.h> 32 #include <pw3270/hllapi.h>
@@ -42,7 +41,7 @@ @@ -42,7 +41,7 @@
42 41
43 printf("init(%s)=%d\n",session,(int) hllapi_init((LPSTR) session)); 42 printf("init(%s)=%d\n",session,(int) hllapi_init((LPSTR) session));
44 printf("revision=%d\n",(int) hllapi_get_revision()); 43 printf("revision=%d\n",(int) hllapi_get_revision());
45 - printf("connect=%d\n",(int) hllapi_connect("fandezhi.efglobe.com:23",0)); 44 + printf("connect=%d\n",(int) hllapi_connect((char *) "fandezhi.efglobe.com:23",0));
46 printf("wait=%d\n",(int) hllapi_wait(3)); 45 printf("wait=%d\n",(int) hllapi_wait(3));
47 printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No"); 46 printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No");
48 47