From 46e2902ffcf3e5997874c2b14f80dbb4fba97c58 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Tue, 22 Apr 2014 11:15:37 +0000 Subject: [PATCH] Padronizando construção do plugin hllapi --- src/classlib/remote.cc | 4 +++- src/include/plugin.mak.in | 4 +++- src/include/pw3270/hllapi.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------- src/plugins/hllapi/Makefile.in | 119 +++++++++++++++-------------------------------------------------------------------------------------------------------- src/plugins/hllapi/calls.cc | 46 +++++++++++++++++++++++----------------------- src/plugins/hllapi/client.h | 12 ++++++++++-- src/plugins/hllapi/hllapi.c | 6 +----- src/plugins/hllapi/pipesource.c | 385 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/plugins/hllapi/pluginmain.c | 3 ++- src/plugins/hllapi/remote.c | 372 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ src/plugins/rx3270/Makefile.in | 23 ----------------------- 11 files changed, 119 insertions(+), 979 deletions(-) delete mode 100644 src/plugins/hllapi/pipesource.c delete mode 100644 src/plugins/hllapi/remote.c diff --git a/src/classlib/remote.cc b/src/classlib/remote.cc index 10bc42e..9b3d12b 100644 --- a/src/classlib/remote.cc +++ b/src/classlib/remote.cc @@ -721,8 +721,10 @@ size_t cbSize = sizeof(struct hllapi_packet_connect); struct hllapi_packet_connect * pkt = (struct hllapi_packet_connect *) malloc(cbSize); + memset(pkt,0,cbSize); + pkt->packet_id = HLLAPI_PACKET_CONNECT; - pkt->wait = (unsigned char) wait; + pkt->wait = 0; rc = query_intval((void *) pkt,cbSize,true); diff --git a/src/include/plugin.mak.in b/src/include/plugin.mak.in index 88f20b6..182d9fb 100644 --- a/src/include/plugin.mak.in +++ b/src/include/plugin.mak.in @@ -67,6 +67,7 @@ INSTALL_DATA=@INSTALL_DATA@ #---[ Rules ]------------------------------------------------------------------ VERSION=@VERSION@ DLL_FLAGS=@DLL_FLAGS@ +SYSDLL_FLAGS=@SYSDLL_FLAGS@ DLL_CFLAGS=@DLL_CFLAGS@ DEBUG_CFLAGS=-DDEBUG=1 -g -Wall LIB3270_MODE ?= Default @@ -128,10 +129,11 @@ Debug: $(BINDBG)/$(PLUGIN_NAME) $(BINDBG)$(DLL_NAME): $(BINDBG)$(DLL_NAME).$(VERSION) @rm -f $@ - @cd $(BINDBG)@DLLDIR@ && $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@ + $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) $@ $(BINRLS)$(DLL_NAME): $(BINRLS)$(DLL_NAME).$(VERSION) @rm -f $@ + @rm -f $(BINRLS)@DLLDIR@/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ @cd $(BINRLS)@DLLDIR@ && $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@ clean: diff --git a/src/include/pw3270/hllapi.h b/src/include/pw3270/hllapi.h index 7c54b93..356e34f 100644 --- a/src/include/pw3270/hllapi.h +++ b/src/include/pw3270/hllapi.h @@ -68,69 +68,69 @@ extern "C" { #define HLLAPI_STATUS_WAITING HLLAPI_STATUS_TIMEOUT -#ifdef _WIN32 + #ifdef WIN32 + #include + // http://www.mingw.org/wiki/Visual_Basic_DLL - __declspec (dllexport) int __stdcall hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); - - __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode); - __declspec (dllexport) DWORD __stdcall hllapi_deinit(void); - - __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void); - __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir); - - __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait); - __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void); - __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void); - __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void); - __declspec (dllexport) DWORD __stdcall hllapi_get_state(void); - __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); - __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); - __declspec (dllexport) DWORD __stdcall hllapi_enter(void); - __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text); - __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); - __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); - __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds); - __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds); - __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key); - __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key); - __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD key); - __declspec (dllexport) DWORD __stdcall hllapi_getcursor(); - __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void); - __declspec (dllexport) DWORD __stdcall hllapi_print(void); - -#else - - typedef unsigned short DWORD - - LIB3270_EXPORT int __stdcall hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); - - LIB3270_EXPORT DWORD __stdcall hllapi_init(LPSTR mode); - LIB3270_EXPORT DWORD __stdcall hllapi_deinit(void); - - LIB3270_EXPORT DWORD __stdcall hllapi_get_revision(void); - LIB3270_EXPORT DWORD __stdcall hllapi_get_datadir(LPSTR datadir); - - LIB3270_EXPORT DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait); - LIB3270_EXPORT DWORD __stdcall hllapi_disconnect(void); - LIB3270_EXPORT DWORD __stdcall hllapi_get_message_id(void); - LIB3270_EXPORT DWORD __stdcall hllapi_is_connected(void); - LIB3270_EXPORT DWORD __stdcall hllapi_get_state(void); - LIB3270_EXPORT DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); - LIB3270_EXPORT DWORD __stdcall hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); - LIB3270_EXPORT DWORD __stdcall hllapi_enter(void); - LIB3270_EXPORT DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text); - LIB3270_EXPORT DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); - LIB3270_EXPORT DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); - LIB3270_EXPORT DWORD __stdcall hllapi_wait_for_ready(WORD seconds); - LIB3270_EXPORT DWORD __stdcall hllapi_wait(WORD seconds); - LIB3270_EXPORT DWORD __stdcall hllapi_pfkey(WORD key); - LIB3270_EXPORT DWORD __stdcall hllapi_pakey(WORD key); - LIB3270_EXPORT DWORD __stdcall hllapi_setcursor(WORD key); - LIB3270_EXPORT DWORD __stdcall hllapi_getcursor(); - LIB3270_EXPORT DWORD __stdcall hllapi_erase_eof(void); - LIB3270_EXPORT DWORD __stdcall hllapi_print(void); - -#endif // _WIN32 + #define HLLAPI_API_CALL __declspec (dllexport) DWORD __stdcall + + #endif // WIN32 + + HLLAPI_API_CALL hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); + + HLLAPI_API_CALL hllapi_init(LPSTR mode); + HLLAPI_API_CALL hllapi_deinit(void); + + HLLAPI_API_CALL hllapi_get_revision(void); + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir); + + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait); + HLLAPI_API_CALL hllapi_disconnect(void); + HLLAPI_API_CALL hllapi_get_message_id(void); + HLLAPI_API_CALL hllapi_is_connected(void); + HLLAPI_API_CALL hllapi_get_state(void); + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); + HLLAPI_API_CALL hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); + HLLAPI_API_CALL hllapi_enter(void); + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text); + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); + HLLAPI_API_CALL hllapi_wait(WORD seconds); + HLLAPI_API_CALL hllapi_pfkey(WORD key); + HLLAPI_API_CALL hllapi_pakey(WORD key); + HLLAPI_API_CALL hllapi_setcursor(WORD key); + HLLAPI_API_CALL hllapi_getcursor(); + HLLAPI_API_CALL hllapi_erase_eof(void); + HLLAPI_API_CALL hllapi_print(void); + + HLLAPI_API_CALL hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); + + HLLAPI_API_CALL hllapi_init(LPSTR mode); + HLLAPI_API_CALL hllapi_deinit(void); + + HLLAPI_API_CALL hllapi_get_revision(void); + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir); + + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait); + HLLAPI_API_CALL hllapi_disconnect(void); + HLLAPI_API_CALL hllapi_get_message_id(void); + HLLAPI_API_CALL hllapi_is_connected(void); + HLLAPI_API_CALL hllapi_get_state(void); + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); + HLLAPI_API_CALL hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); + HLLAPI_API_CALL hllapi_enter(void); + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text); + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); + HLLAPI_API_CALL hllapi_wait(WORD seconds); + HLLAPI_API_CALL hllapi_pfkey(WORD key); + HLLAPI_API_CALL hllapi_pakey(WORD key); + HLLAPI_API_CALL hllapi_setcursor(WORD key); + HLLAPI_API_CALL hllapi_getcursor(); + HLLAPI_API_CALL hllapi_erase_eof(void); + HLLAPI_API_CALL hllapi_print(void); #ifdef __cplusplus } /* end of extern "C" */ diff --git a/src/plugins/hllapi/Makefile.in b/src/plugins/hllapi/Makefile.in index a23d7b6..437baaa 100644 --- a/src/plugins/hllapi/Makefile.in +++ b/src/plugins/hllapi/Makefile.in @@ -31,127 +31,38 @@ MODULE_NAME=hllapi DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile PLUGIN_SRC=pluginmain.c -HLLAPI_SRC=hllapi.c calls.c +EXTAPI_SRC=calls.c hllapi.c -CLASSLIBDIR=../../classlib - -#---[ Paths ]------------------------------------------------------------------ - -ROOTDIR ?= . -OBJDIR ?= $(ROOTDIR)/.obj -BINDIR ?= $(ROOTDIR)/.bin -BINDBG ?= $(BINDIR)/Debug -BINRLS ?= $(BINDIR)/Release - -OBJDBG = $(OBJDIR)/Debug -OBJRLS = $(OBJDIR)/Release -OBJEXT = o - -#---[ Tools ]------------------------------------------------------------------ - -MKDIR=@MKDIR_P@ -CC=@CXX@ -CXX=@CXX@ -LD=@CXX@ -MSGCAT=@MSGCAT@ -XGETTEXT=@XGETTEXT@ - -#---[ Rules ]------------------------------------------------------------------ - -DLL_FLAGS=@DLL_FLAGS@ -SYSDLL_FLAGS=@SYSDLL_FLAGS@ +#---[ Include plugin rules ]--------------------------------------------------- -DEBUG_CFLAGS=-DDEBUG=1 -g -Wall - -LIB3270_MODE ?= Default - -ifeq ($(LIB3270_MODE),Debug) - PW3270_CFLAGS=-I../../../src/include - LIB3270_CFLAGS=-I../../../src/include -endif - -ifeq ($(LIB3270_MODE),Release) - PW3270_CFLAGS=-I../../../src/include - LIB3270_CFLAGS=-I../../../src/include -endif - -ifeq ($(LIB3270_MODE),Default) - LIB3270_CFLAGS ?= `pkg-config --cflags lib3270` - PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270` -endif - -GTK_CFLAGS ?= @GTK_CFLAGS@ @GTKMAC_CFLAGS@ -GTK_LIBS ?= @GTK_LIBS@ @GTKMAC_LIBS@ +CLASSLIBDIR=../../classlib +include ../../include/plugin.mak include $(CLASSLIBDIR)/class.mak -$(OBJDBG)/%.o: %.cc $(DEPENDS) - @echo " CC `basename $@`" - @$(MKDIR) `dirname $@` - @$(CXX) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< +#---[ Release Targets ]-------------------------------------------------------- -$(OBJDBG)/%.o: %.c $(DEPENDS) - @echo " CC `basename $@`" - @$(MKDIR) `dirname $@` - @$(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< - -$(OBJRLS)/%.o: %.cc $(DEPENDS) - @echo " CC `basename $@`" - @$(MKDIR) `dirname $@` - @$(CXX) $(CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< - -$(OBJRLS)/%.o: %.c $(DEPENDS) - @echo " CC `basename $@`" - @$(MKDIR) `dirname $@` - @$(CC) $(CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< - - -#---[ Release targets ]-------------------------------------------------------- - -Release: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(BINRLS)/libhllapi@DLLEXT@ - -$(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) +$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME) @echo " CCLD `basename $@`" @$(MKDIR) `dirname $@` - @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) + $(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) -$(BINRLS)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) +$(BINRLS)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) @echo " CCLD `basename $@`" @$(MKDIR) `dirname $@` - @$(LD) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) + @$(CXX) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(CLASS_LIBS) -#---[ Debug targets ]---------------------------------------------------------- +install: -Debug: $(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@ $(BINDBG)/libhllapi@DLLEXT@ +#---[ Debug Targets ]---------------------------------------------------------- -$(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) +$(BINDBG)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) $(BINDBG)$(DLL_NAME) @echo " CCLD `basename $@`" @$(MKDIR) `dirname $@` - @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) + @$(CXX) $(DLL_FLAGS) @LDSOFLAGS@ @DBGRPATH@ $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) -$(BINDBG)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJDBG)/$(SRC).o) $(CLASS_DEBUG_OBJECTS) +$(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJDBG)/$(SRC)@OBJEXT@) $(CLASS_DEBUG_OBJECTS) @echo " CCLD `basename $@`" @$(MKDIR) `dirname $@` - @$(LD) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) $(CLASS_LIBS) - -#---[ Misc targets ]----------------------------------------------------------- - -$(BINDBG)/testprogram@EXEEXT@: $(OBJDBG)/testprogram.o $(BINDBG)/libhllapi@DLLEXT@ - @echo " CCLD `basename $@`" - @$(MKDIR) `dirname $@` - @$(CXX) $(CFLAGS) $(PW3270_CFLAGS) -L$(BINDBG) $(DEBUG_CFLAGS) -lhllapi -o $@ $(OBJDBG)/testprogram.o - -test: $(BINDBG)/testprogram@EXEEXT@ - -run: $(BINDBG)/testprogram@EXEEXT@ - @cd $(BINDBG) ; ./testprogram@EXEEXT@ - -install: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ - @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins - @$(INSTALL_PROGRAM) $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins + $(CXX) $(SYSDLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(CLASS_LIBS) -clean: - @rm -fr $(OBJDIR) - @rm -fr $(BINDIR) - @rm -f testprogram@EXEEXT@ - @find . -name "*~" -exec rm -f {} \; diff --git a/src/plugins/hllapi/calls.cc b/src/plugins/hllapi/calls.cc index 382cb4b..f8e12ba 100644 --- a/src/plugins/hllapi/calls.cc +++ b/src/plugins/hllapi/calls.cc @@ -42,7 +42,7 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ - __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode) + HLLAPI_API_CALL hllapi_init(LPSTR mode) { trace("%s(%s)",__FUNCTION__,mode); @@ -62,7 +62,7 @@ return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR; } - __declspec (dllexport) DWORD __stdcall hllapi_deinit(void) + HLLAPI_API_CALL hllapi_deinit(void) { trace("%s()",__FUNCTION__); @@ -82,7 +82,7 @@ return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void) + HLLAPI_API_CALL hllapi_get_revision(void) { try { @@ -95,7 +95,7 @@ return (DWORD) -1; } - __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait) + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait) { int rc = HLLAPI_STATUS_SUCCESS; @@ -111,12 +111,12 @@ return rc; } - __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void) + HLLAPI_API_CALL hllapi_is_connected(void) { return session::get_default()->is_connected(); } - __declspec (dllexport) DWORD __stdcall hllapi_get_state(void) + HLLAPI_API_CALL hllapi_get_state(void) { switch(hllapi_get_message_id()) { @@ -146,28 +146,28 @@ return HLLAPI_STATUS_SYSTEM_ERROR; } - __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void) + HLLAPI_API_CALL hllapi_disconnect(void) { session::get_default()->disconnect(); return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds) + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds) { return session::get_default()->wait_for_ready(seconds); } - __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds) + HLLAPI_API_CALL hllapi_wait(WORD seconds) { return session::get_default()->wait(seconds); } - __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void) + HLLAPI_API_CALL hllapi_get_message_id(void) { return session::get_default()->get_cstate(); } - __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer) + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer) { if(!(buffer && *buffer)) return HLLAPI_STATUS_SYSTEM_ERROR; @@ -186,12 +186,12 @@ return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_enter(void) + HLLAPI_API_CALL hllapi_enter(void) { return session::get_default()->enter(); } - __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text) + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text) { try { @@ -205,7 +205,7 @@ return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text) + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text) { int rc = HLLAPI_STATUS_SYSTEM_ERROR; try @@ -220,17 +220,17 @@ return rc; } - __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key) + HLLAPI_API_CALL hllapi_pfkey(WORD key) { return session::get_default()->pfkey(key); } - __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key) + HLLAPI_API_CALL hllapi_pakey(WORD key) { return session::get_default()->pakey(key); } - __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir) + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir) { HKEY hKey = 0; unsigned long datalen = strlen(datadir); @@ -248,17 +248,17 @@ return *datadir; } - __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD pos) + HLLAPI_API_CALL hllapi_setcursor(WORD pos) { return session::get_default()->set_cursor_addr(pos-1); } - __declspec (dllexport) DWORD __stdcall hllapi_getcursor() + HLLAPI_API_CALL hllapi_getcursor() { return session::get_default()->get_cursor_addr()+1; } - __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD offset, LPSTR buffer, WORD len) + HLLAPI_API_CALL hllapi_get_screen(WORD offset, LPSTR buffer, WORD len) { int rc = HLLAPI_STATUS_SYSTEM_ERROR; @@ -284,19 +284,19 @@ return rc; } - __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting) + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting) { session::get_default()->emulate_input(buffer); return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void) + HLLAPI_API_CALL hllapi_erase_eof(void) { session::get_default()->erase_eof(); return HLLAPI_STATUS_SUCCESS; } - __declspec (dllexport) DWORD __stdcall hllapi_print(void) + HLLAPI_API_CALL hllapi_print(void) { return session::get_default()->print(); } diff --git a/src/plugins/hllapi/client.h b/src/plugins/hllapi/client.h index 677904d..1e5a965 100644 --- a/src/plugins/hllapi/client.h +++ b/src/plugins/hllapi/client.h @@ -27,7 +27,6 @@ * */ - #include #include #ifndef ETIMEDOUT @@ -43,9 +42,14 @@ #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); } } #endif // DEBUG + #ifdef __cplusplus + extern "C" { + #endif + +/* void * hllapi_pipe_init(const char *id); void hllapi_pipe_deinit(void *h); - const char * hllapi_pipe_get_revision(void); + const char * hllapi_pipe_get_revision(void); void hllapi_pipe_release_memory(void *p); int hllapi_pipe_connect(void *h, const char *n, int wait); void hllapi_pipe_disconnect(void *h); @@ -65,9 +69,13 @@ int hllapi_pipe_setcursor(void *h, int baddr); int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); int hllapi_pipe_print(void *h); +*/ char * hllapi_get_string(int offset, size_t len); void hllapi_free(void *p); + #ifdef __cplusplus + } /* end of extern "C" */ + #endif diff --git a/src/plugins/hllapi/hllapi.c b/src/plugins/hllapi/hllapi.c index b5e3cc2..db3d4e8 100644 --- a/src/plugins/hllapi/hllapi.c +++ b/src/plugins/hllapi/hllapi.c @@ -85,11 +85,7 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ -#ifdef _WIN32 - __declspec (dllexport) int __stdcall hllapi(LPWORD func, LPSTR buffer, LPWORD length, LPWORD rc) -#else - LIB3270_EXPORT int hllapi(const unsigned long *func, char *buffer, unsigned short *length, unsigned short *rc) -#endif // _WIN32 +HLLAPI_API_CALL hllapi(LPWORD func, LPSTR buffer, LPWORD length, LPWORD rc) { unsigned int f; diff --git a/src/plugins/hllapi/pipesource.c b/src/plugins/hllapi/pipesource.c deleted file mode 100644 index b72c56b..0000000 --- a/src/plugins/hllapi/pipesource.c +++ /dev/null @@ -1,385 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple - * Place, Suite 330, Boston, MA, 02111-1307, USA - * - * Este programa está nomeado como pipesource.c e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * licinio@bb.com.br (Licínio Luis Branco) - * kraucer@bb.com.br (Kraucer Fernandes Mazuco) - * - */ - - #include - #include - - #include - #include - #include "remotectl.h" - -/*---[ Defines ]----------------------------------------------------------------------------*/ - - #pragma pack(1) - - typedef struct _pipe_source - { - GSource gsrc; - HANDLE hPipe; - - enum _PIPE_STATE - { - PIPE_STATE_WAITING, - PIPE_STATE_READ, - PIPE_STATE_PENDING_READ, - - PIPE_STATE_UNDEFINED, - } state; - - OVERLAPPED overlap; - unsigned char buffer[PIPE_BUFFER_LENGTH+1]; - } pipe_source; - - #pragma pack() - -/*---[ GSource ]----------------------------------------------------------------------------*/ - -static void wait_for_client(pipe_source *source) -{ - set_active(FALSE); - if(ConnectNamedPipe(source->hPipe,&source->overlap)) - { - popup_lasterror("%s",_( "Error in ConnectNamedPipe" )); - return; - } - - switch(GetLastError()) - { - // The overlapped connection in progress. - case ERROR_IO_PENDING: - // trace("%s: ERROR_IO_PENDING",__FUNCTION__); - source->state = PIPE_STATE_WAITING; - break; - - // Client is already connected, so signal an event. - case ERROR_PIPE_CONNECTED: - trace("%s: ERROR_PIPE_CONNECTED",__FUNCTION__); - set_active(TRUE); - if(SetEvent(source->overlap.hEvent)) - break; - - // If an error occurs during the connect operation... - default: - popup_lasterror("%s", _( "ConnectNamedPipe failed" )); - } - - } - - static gboolean IO_prepare(GSource *source, gint *timeout) - { - /* - * Called before all the file descriptors are polled. - * If the source can determine that it is ready here - * (without waiting for the results of the poll() call) - * it should return TRUE. - * - * It can also return a timeout_ value which should be the maximum - * timeout (in milliseconds) which should be passed to the poll() call. - * The actual timeout used will be -1 if all sources returned -1, - * or it will be the minimum of all the timeout_ values - * returned which were >= 0. - * - */ - if(WaitForSingleObject(((pipe_source *) source)->overlap.hEvent,0) == WAIT_OBJECT_0) - { - // trace("%s: source=%p",__FUNCTION__,source); - return TRUE; - } - - *timeout = 10; - return FALSE; - } - - static gboolean IO_check(GSource *source) - { - /* - * Called after all the file descriptors are polled. - * The source should return TRUE if it is ready to be dispatched. - * Note that some time may have passed since the previous prepare - * function was called, so the source should be checked again here. - * - */ - if(WaitForSingleObject(((pipe_source *) source)->overlap.hEvent,0) == WAIT_OBJECT_0) - return TRUE; - - return FALSE; - } - - static void process_input(pipe_source *source, DWORD cbRead) - { - HLLAPI_DATA * data = (HLLAPI_DATA *) source->buffer; - QUERY * qry = g_malloc0(sizeof(QUERY)+cbRead+1); - - qry->hPipe = source->hPipe; - qry->text = (const gchar *) (qry+1); - - if(data->id == HLLAPI_REQUEST_QUERY) - { - // HLLAPI query - qry->cmd = (int) data->func; - qry->pos = (int) data->rc; - qry->length = data->value; - memcpy((gchar *)(qry->text),data->string,qry->length); - } - else - { - qry->cmd = -1; - } - - enqueue_request(qry); - } - - void request_complete(QUERY *qry, int rc, const gchar *text) - { - request_buffer(qry,rc,strlen(text),(const gpointer) text); - } - - void request_status(QUERY *qry, int rc) - { - if(rc) - { - const gchar *msg = strerror(rc); - request_buffer(qry, rc, strlen(msg), (const gpointer) msg); - } - else - { - request_buffer(qry, rc, 0, NULL); - } - } - - void request_value(QUERY *qry, int rc, unsigned int value) - { - HLLAPI_DATA data; - - memset(&data,0,sizeof(data)); - data.id = HLLAPI_RESPONSE_VALUE; - data.func = qry->cmd; - data.rc = rc; - data.value = value; - -#ifdef WIN32 - { - DWORD wrote = sizeof(data); - WriteFile(qry->hPipe,&data,wrote,&wrote,NULL); - trace("Wrote=%d len=%d",(int) wrote, sizeof(data)); - } -#endif // WIN32 - - g_free(qry); - - - } - - void request_buffer(QUERY *qry, int rc, size_t szBuffer, const gpointer buffer) - { - size_t sz; - HLLAPI_DATA *data; - - if(buffer) - { - sz = sizeof(HLLAPI_DATA)+szBuffer; - data = g_malloc0(sz); - data->id = HLLAPI_RESPONSE_TEXT; - memcpy(data->string,buffer,szBuffer); - } - else - { - sz = sizeof(HLLAPI_DATA); - data = g_malloc0(sz); - data->id = HLLAPI_RESPONSE_VALUE; - } - - data->func = qry->cmd; - data->rc = rc; - data->value = szBuffer; - - trace("rc=%d data->len=%d",rc,(int) szBuffer); - -#ifdef WIN32 - { - DWORD wrote = sz; - WriteFile(qry->hPipe,data,wrote,&wrote,NULL); - trace("Wrote=%d len=%d",(int) wrote, (int) sz); - } -#endif // WIN32 - - g_free(data); - g_free(qry); - - } - - static void read_input_pipe(pipe_source *source) - { - DWORD cbRead = 0; - - if(ReadFile(source->hPipe,source->buffer,PIPE_BUFFER_LENGTH,&cbRead,&source->overlap) && cbRead > 0) - process_input(source,cbRead); - - // The read operation is still pending. - switch(GetLastError()) - { - case 0: - break; - - case ERROR_IO_PENDING: - // trace("%s: PIPE_STATE_PENDING_READ",__FUNCTION__); - source->state = PIPE_STATE_PENDING_READ; - break; - - case ERROR_PIPE_LISTENING: - // trace("%s: ERROR_PIPE_LISTENING",__FUNCTION__); - source->state = PIPE_STATE_READ; - break; - - case ERROR_BROKEN_PIPE: - trace("%s: ERROR_BROKEN_PIPE",__FUNCTION__); - - if(!DisconnectNamedPipe(source->hPipe)) - { - set_active(FALSE); - popup_lasterror("%s",_( "Error in DisconnectNamedPipe" )); - } - else - { - wait_for_client(source); - } - break; - - case ERROR_PIPE_NOT_CONNECTED: - trace("%s: ERROR_PIPE_NOT_CONNECTED",__FUNCTION__); - set_active(FALSE); - break; - - default: - if(source->hPipe != INVALID_HANDLE_VALUE) - popup_lasterror("%s",_( "Error receiving message from pipe" ) ); - } - - } - - static gboolean IO_dispatch(GSource *source, GSourceFunc callback, gpointer data) - { - /* - * Called to dispatch the event source, - * after it has returned TRUE in either its prepare or its check function. - * The dispatch function is passed in a callback function and data. - * The callback function may be NULL if the source was never connected - * to a callback using g_source_set_callback(). The dispatch function - * should call the callback function with user_data and whatever additional - * parameters are needed for this type of event source. - */ - BOOL fSuccess; - DWORD cbRead = 0; -// DWORD dwErr = 0; - - fSuccess = GetOverlappedResult(((pipe_source *) source)->hPipe,&((pipe_source *) source)->overlap,&cbRead,FALSE ); - - // trace("%s: source=%p data=%p Result=%s cbRead=%d",__FUNCTION__,source,data,fSuccess ? "Success" : "Unsuccess",(int) cbRead); - - switch(((pipe_source *) source)->state) - { - case PIPE_STATE_WAITING: - if(fSuccess) - { - trace("Pipe connected (cbRet=%d)",(int) cbRead); - set_active(TRUE); - ((pipe_source *) source)->state = PIPE_STATE_READ; - } - else - { - popup_lasterror("%s", _( "Pipe connection failed" )); - } - break; - - case PIPE_STATE_READ: - // trace("Reading pipe (cbRead=%d)",(int) cbRead); - read_input_pipe( (pipe_source *) source); - break; - - case PIPE_STATE_PENDING_READ: - if(fSuccess && cbRead > 0) - process_input((pipe_source *) source,cbRead); - ((pipe_source *) source)->state = PIPE_STATE_READ; - break; - -//#ifdef DEBUG -// default: -// trace("%s: source=%p data=%p Unexpected mode %d",__FUNCTION__,source,data,((pipe_source *) source)->state); -//#endif - } - - return TRUE; - } - - static void IO_finalize(GSource *source) - { -// trace("%s: source=%p",__FUNCTION__,source); - - if( ((pipe_source *) source)->hPipe != INVALID_HANDLE_VALUE) - { - CloseHandle(((pipe_source *) source)->hPipe); - ((pipe_source *) source)->hPipe = INVALID_HANDLE_VALUE; - } - - } - - static gboolean IO_closure(gpointer data) - { -// trace("%s: data=%p",__FUNCTION__,data); - return 0; - } - - - void init_source_pipe(HANDLE hPipe) - { - static GSourceFuncs pipe_source_funcs = - { - IO_prepare, - IO_check, - IO_dispatch, - IO_finalize, - IO_closure, - NULL - }; - - pipe_source *source = (pipe_source *) g_source_new(&pipe_source_funcs,sizeof(pipe_source)); - - source->hPipe = hPipe; - source->state = PIPE_STATE_WAITING; - source->overlap.hEvent = CreateEvent( NULL,TRUE,TRUE,NULL); - - g_source_attach((GSource *) source,NULL); - - wait_for_client(source); - - return; - } - diff --git a/src/plugins/hllapi/pluginmain.c b/src/plugins/hllapi/pluginmain.c index a5e6d54..fe746ec 100644 --- a/src/plugins/hllapi/pluginmain.c +++ b/src/plugins/hllapi/pluginmain.c @@ -144,6 +144,7 @@ { struct hllapi_packet_text *pkt; DWORD szBlock; + int f; if(text) { @@ -161,7 +162,7 @@ } trace("szBlock=%d text=\"%s\"",szBlock, ( (struct hllapi_packet_text *) pkt)->text); - for(int f=0;f< (int) szBlock;f++) + for(f=0;f< (int) szBlock;f++) { trace("rsp(%d)= %d \"%s\"",f,* (((char *) pkt)+f),((char *) pkt)+f); } diff --git a/src/plugins/hllapi/remote.c b/src/plugins/hllapi/remote.c deleted file mode 100644 index eb9166a..0000000 --- a/src/plugins/hllapi/remote.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple - * Place, Suite 330, Boston, MA, 02111-1307, USA - * - * Este programa está nomeado como calls.c e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - */ - - #include - #include - #include - #include - #include - #include - #include - #include - - #include "client.h" - -/*--[ Globals ]--------------------------------------------------------------------------------------*/ - -/*--[ Implement ]------------------------------------------------------------------------------------*/ - - void * hllapi_pipe_init(const char *id) - { - HANDLE hPipe = INVALID_HANDLE_VALUE; - static DWORD dwMode = PIPE_READMODE_MESSAGE; - char buffer[4096]; - char * name = strdup(id); - char * ptr; - - trace("%s(%s)",__FUNCTION__,id); - - for(ptr=name;*ptr;ptr++) - { - if(*ptr == ':') - *ptr = '_'; - } - - snprintf(buffer,4095,"\\\\.\\pipe\\%s",name); - - free(name); - - trace("Opening \"%s\"",buffer); - - if(!WaitNamedPipe(buffer,NMPWAIT_USE_DEFAULT_WAIT)) - { - trace("%s: Pipe not found",__FUNCTION__); - errno = ENOENT; - return NULL; - } - - hPipe = CreateFile(buffer,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL); - - if(hPipe == INVALID_HANDLE_VALUE) - { - errno = GetLastError(); - return NULL; - } - - if(!SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL)) - { - errno = GetLastError(); - return NULL; - } - - trace("hPipe=%p",(void *) hPipe); - return hPipe; - } - - void hllapi_pipe_deinit(void *h) - { - trace("%s(%p)",__FUNCTION__,h); - - if(!h) - return; - - CloseHandle((HANDLE) h); - } - - const char * hllapi_pipe_get_revision(void) - { - return PACKAGE_REVISION; - } - - int hllapi_pipe_connect(void *h, const char *n, int wait) - { - struct hllapi_packet_connect * pkt; - struct hllapi_packet_result response; - DWORD cbSize; - - if(!n) - n = ""; - - cbSize = sizeof(struct hllapi_packet_connect)+strlen(n); - pkt = malloc(cbSize); - - pkt->packet_id = HLLAPI_PACKET_CONNECT; - pkt->wait = (unsigned char) wait; - strcpy(pkt->hostname,n); - - trace("Sending %s",pkt->hostname); - - if(!TransactNamedPipe((HANDLE) h,(LPVOID) pkt, cbSize, &response, sizeof(response), &cbSize,NULL)) - { - errno = GetLastError(); - response.rc = -1; - } - - free(pkt); - - return response.rc; - } - - void hllapi_pipe_disconnect(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_DISCONNECT }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - } - - LIB3270_MESSAGE hllapi_pipe_get_message(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_GET_PROGRAM_MESSAGE }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return (LIB3270_MESSAGE) response.rc; - } - - char * hllapi_pipe_get_text_at(void *h, int row, int col, int len) - { - struct hllapi_packet_query_at query = { HLLAPI_PACKET_GET_TEXT_AT, row, col, len }; - struct hllapi_packet_text * response; - DWORD cbSize = sizeof(struct hllapi_packet_text)+len; - char * text = NULL; - - response = malloc(cbSize+2); - memset(response,0,cbSize+2); - - if(!TransactNamedPipe((HANDLE) h,(LPVOID) &query, sizeof(struct hllapi_packet_query_at), &response, cbSize, &cbSize,NULL)) - return NULL; - - if(response->packet_id) - errno = response->packet_id; - else - text = strdup(response->text); - - free(response); - return text; - } - - int hllapi_pipe_enter(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_ENTER }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } - - int hllapi_pipe_erase_eof(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_ERASE_EOF }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } - - - int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str) - { - struct hllapi_packet_text_at * query; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(struct hllapi_packet_text_at)+strlen((const char *) str); - - query = malloc(cbSize); - query->packet_id = HLLAPI_PACKET_SET_TEXT_AT; - query->row = row; - query->col = col; - strcpy(query->text,(const char *) str); - - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); - - free(query); - - return response.rc; - } - - int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text) - { - struct hllapi_packet_text_at * query; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(struct hllapi_packet_text_at)+strlen(text); - - query = malloc(cbSize); - query->packet_id = HLLAPI_PACKET_CMP_TEXT_AT; - query->row = row; - query->col = col; - strcpy(query->text,text); - - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); - - free(query); - - return response.rc; - } - - int hllapi_pipe_pfkey(void *h, int key) - { - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PFKEY, key }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } - - int hllapi_pipe_pakey(void *h, int key) - { - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PAKEY, key }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } - - void hllapi_pipe_release_memory(void *p) - { - free(p); - } - - int hllapi_pipe_wait_for_ready(void *h, int seconds) - { - time_t end = time(0)+seconds; - - while(time(0) < end) - { - if(!hllapi_pipe_is_connected(h)) - return ENOTCONN; - - if(hllapi_pipe_get_message(h) == 0) - return 0; - Sleep(250); - } - - return ETIMEDOUT; - } - - int hllapi_pipe_is_connected(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_IS_CONNECTED }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return (LIB3270_MESSAGE) response.rc; - } - - int hllapi_pipe_sleep(void *h, int seconds) - { - time_t end = time(0)+seconds; - - while(time(0) < end) - { - if(!hllapi_pipe_is_connected(h)) - return ENOTCONN; - Sleep(500); - } - - return 0; - } - - int hllapi_pipe_getcursor(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_GET_CURSOR }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - - trace("%s",__FUNCTION__); - - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return (LIB3270_MESSAGE) response.rc; - - } - - int hllapi_pipe_setcursor(void *h, int baddr) - { - struct hllapi_packet_addr query = { HLLAPI_PACKET_SET_CURSOR, baddr }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - - trace("%s(%d)",__FUNCTION__,query.addr); - - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } - - char * hllapi_pipe_get_text(void *h, int offset, int len) - { - struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, offset, len }; - struct hllapi_packet_text * response; - DWORD cbSize = sizeof(struct hllapi_packet_text)+len; - char * text = NULL; - - trace("cbSize=%d",(int) cbSize); - - response = malloc(cbSize+2); - memset(response,0,cbSize+2); - - if(!TransactNamedPipe((HANDLE) h,(LPVOID) &query, sizeof(query), response, cbSize, &cbSize,NULL)) - return NULL; - - trace("rc=%d",response->packet_id); - - if(response->packet_id) - errno = response->packet_id; - else - text = strdup(response->text); - - free(response); - return text; - } - - int hllapi_pipe_emulate_input(void *h, const char *text, int len, int pasting) - { - struct hllapi_packet_emulate_input * query; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(struct hllapi_packet_emulate_input)+strlen(text); - - query = malloc(cbSize); - query->packet_id = HLLAPI_PACKET_EMULATE_INPUT; - query->len = len; - query->pasting = pasting; - strcpy(query->text,text); - - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); - - free(query); - - return response.rc; - } - - int hllapi_pipe_print(void *h) - { - static const struct hllapi_packet_query query = { HLLAPI_PACKET_PRINT }; - struct hllapi_packet_result response; - DWORD cbSize = sizeof(query); - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); - return response.rc; - } diff --git a/src/plugins/rx3270/Makefile.in b/src/plugins/rx3270/Makefile.in index c706f26..8ebce5a 100644 --- a/src/plugins/rx3270/Makefile.in +++ b/src/plugins/rx3270/Makefile.in @@ -61,26 +61,3 @@ $(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJ @$(MKDIR) `dirname $@` @$(CXX) $(SYSDLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS) -#---[ Release Targets ]-------------------------------------------------------- - -$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME) - @echo " CCLD `basename $@`" - @$(MKDIR) `dirname $@` - $(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) - -$(BINRLS)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) - @echo " CCLD `basename $@`" - @$(MKDIR) `dirname $@` - @$(CXX) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS) - -install: - @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugin - @$(INSTALL_PROGRAM) $(BINRLS)/$(PLUGIN_NAME) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins - - @$(MKDIR) $(DESTDIR)$(REXXLIBDIR) - @$(INSTALL_PROGRAM) $(BINRLS)$(DLL_NAME).$(VERSION) $(DESTDIR)$(REXXLIBDIR) - @$(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) $(DESTDIR)$(REXXLIBDIR)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ - - @$(MKDIR) $(DESTDIR)$(REXX_HOME) - @$(INSTALL_DATA) rx3270.cls $(DESTDIR)$(REXX_HOME) - -- libgit2 0.21.2