Commit 46e2902ffcf3e5997874c2b14f80dbb4fba97c58
1 parent
5c12e21e
Exists in
master
and in
5 other branches
Padronizando construção do plugin hllapi
Showing
11 changed files
with
119 additions
and
979 deletions
Show diff stats
src/classlib/remote.cc
| @@ -721,8 +721,10 @@ | @@ -721,8 +721,10 @@ | ||
| 721 | size_t cbSize = sizeof(struct hllapi_packet_connect); | 721 | size_t cbSize = sizeof(struct hllapi_packet_connect); |
| 722 | struct hllapi_packet_connect * pkt = (struct hllapi_packet_connect *) malloc(cbSize); | 722 | struct hllapi_packet_connect * pkt = (struct hllapi_packet_connect *) malloc(cbSize); |
| 723 | 723 | ||
| 724 | + memset(pkt,0,cbSize); | ||
| 725 | + | ||
| 724 | pkt->packet_id = HLLAPI_PACKET_CONNECT; | 726 | pkt->packet_id = HLLAPI_PACKET_CONNECT; |
| 725 | - pkt->wait = (unsigned char) wait; | 727 | + pkt->wait = 0; |
| 726 | 728 | ||
| 727 | rc = query_intval((void *) pkt,cbSize,true); | 729 | rc = query_intval((void *) pkt,cbSize,true); |
| 728 | 730 |
src/include/plugin.mak.in
| @@ -67,6 +67,7 @@ INSTALL_DATA=@INSTALL_DATA@ | @@ -67,6 +67,7 @@ INSTALL_DATA=@INSTALL_DATA@ | ||
| 67 | #---[ Rules ]------------------------------------------------------------------ | 67 | #---[ Rules ]------------------------------------------------------------------ |
| 68 | VERSION=@VERSION@ | 68 | VERSION=@VERSION@ |
| 69 | DLL_FLAGS=@DLL_FLAGS@ | 69 | DLL_FLAGS=@DLL_FLAGS@ |
| 70 | +SYSDLL_FLAGS=@SYSDLL_FLAGS@ | ||
| 70 | DLL_CFLAGS=@DLL_CFLAGS@ | 71 | DLL_CFLAGS=@DLL_CFLAGS@ |
| 71 | DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | 72 | DEBUG_CFLAGS=-DDEBUG=1 -g -Wall |
| 72 | LIB3270_MODE ?= Default | 73 | LIB3270_MODE ?= Default |
| @@ -128,10 +129,11 @@ Debug: $(BINDBG)/$(PLUGIN_NAME) | @@ -128,10 +129,11 @@ Debug: $(BINDBG)/$(PLUGIN_NAME) | ||
| 128 | 129 | ||
| 129 | $(BINDBG)$(DLL_NAME): $(BINDBG)$(DLL_NAME).$(VERSION) | 130 | $(BINDBG)$(DLL_NAME): $(BINDBG)$(DLL_NAME).$(VERSION) |
| 130 | @rm -f $@ | 131 | @rm -f $@ |
| 131 | - @cd $(BINDBG)@DLLDIR@ && $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@ | 132 | + $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) $@ |
| 132 | 133 | ||
| 133 | $(BINRLS)$(DLL_NAME): $(BINRLS)$(DLL_NAME).$(VERSION) | 134 | $(BINRLS)$(DLL_NAME): $(BINRLS)$(DLL_NAME).$(VERSION) |
| 134 | @rm -f $@ | 135 | @rm -f $@ |
| 136 | + @rm -f $(BINRLS)@DLLDIR@/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ | ||
| 135 | @cd $(BINRLS)@DLLDIR@ && $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@ | 137 | @cd $(BINRLS)@DLLDIR@ && $(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@ |
| 136 | 138 | ||
| 137 | clean: | 139 | clean: |
src/include/pw3270/hllapi.h
| @@ -68,69 +68,69 @@ extern "C" { | @@ -68,69 +68,69 @@ extern "C" { | ||
| 68 | 68 | ||
| 69 | #define HLLAPI_STATUS_WAITING HLLAPI_STATUS_TIMEOUT | 69 | #define HLLAPI_STATUS_WAITING HLLAPI_STATUS_TIMEOUT |
| 70 | 70 | ||
| 71 | -#ifdef _WIN32 | 71 | + #ifdef WIN32 |
| 72 | + #include <windows.h> | ||
| 73 | + | ||
| 72 | // http://www.mingw.org/wiki/Visual_Basic_DLL | 74 | // http://www.mingw.org/wiki/Visual_Basic_DLL |
| 73 | - __declspec (dllexport) int __stdcall hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); | ||
| 74 | - | ||
| 75 | - __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode); | ||
| 76 | - __declspec (dllexport) DWORD __stdcall hllapi_deinit(void); | ||
| 77 | - | ||
| 78 | - __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void); | ||
| 79 | - __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir); | ||
| 80 | - | ||
| 81 | - __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait); | ||
| 82 | - __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void); | ||
| 83 | - __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void); | ||
| 84 | - __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void); | ||
| 85 | - __declspec (dllexport) DWORD __stdcall hllapi_get_state(void); | ||
| 86 | - __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); | ||
| 87 | - __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); | ||
| 88 | - __declspec (dllexport) DWORD __stdcall hllapi_enter(void); | ||
| 89 | - __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text); | ||
| 90 | - __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); | ||
| 91 | - __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); | ||
| 92 | - __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds); | ||
| 93 | - __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds); | ||
| 94 | - __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key); | ||
| 95 | - __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key); | ||
| 96 | - __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD key); | ||
| 97 | - __declspec (dllexport) DWORD __stdcall hllapi_getcursor(); | ||
| 98 | - __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void); | ||
| 99 | - __declspec (dllexport) DWORD __stdcall hllapi_print(void); | ||
| 100 | - | ||
| 101 | -#else | ||
| 102 | - | ||
| 103 | - typedef unsigned short DWORD | ||
| 104 | - | ||
| 105 | - LIB3270_EXPORT int __stdcall hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); | ||
| 106 | - | ||
| 107 | - LIB3270_EXPORT DWORD __stdcall hllapi_init(LPSTR mode); | ||
| 108 | - LIB3270_EXPORT DWORD __stdcall hllapi_deinit(void); | ||
| 109 | - | ||
| 110 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_revision(void); | ||
| 111 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_datadir(LPSTR datadir); | ||
| 112 | - | ||
| 113 | - LIB3270_EXPORT DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait); | ||
| 114 | - LIB3270_EXPORT DWORD __stdcall hllapi_disconnect(void); | ||
| 115 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_message_id(void); | ||
| 116 | - LIB3270_EXPORT DWORD __stdcall hllapi_is_connected(void); | ||
| 117 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_state(void); | ||
| 118 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); | ||
| 119 | - LIB3270_EXPORT DWORD __stdcall hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); | ||
| 120 | - LIB3270_EXPORT DWORD __stdcall hllapi_enter(void); | ||
| 121 | - LIB3270_EXPORT DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text); | ||
| 122 | - LIB3270_EXPORT DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); | ||
| 123 | - LIB3270_EXPORT DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); | ||
| 124 | - LIB3270_EXPORT DWORD __stdcall hllapi_wait_for_ready(WORD seconds); | ||
| 125 | - LIB3270_EXPORT DWORD __stdcall hllapi_wait(WORD seconds); | ||
| 126 | - LIB3270_EXPORT DWORD __stdcall hllapi_pfkey(WORD key); | ||
| 127 | - LIB3270_EXPORT DWORD __stdcall hllapi_pakey(WORD key); | ||
| 128 | - LIB3270_EXPORT DWORD __stdcall hllapi_setcursor(WORD key); | ||
| 129 | - LIB3270_EXPORT DWORD __stdcall hllapi_getcursor(); | ||
| 130 | - LIB3270_EXPORT DWORD __stdcall hllapi_erase_eof(void); | ||
| 131 | - LIB3270_EXPORT DWORD __stdcall hllapi_print(void); | ||
| 132 | - | ||
| 133 | -#endif // _WIN32 | 75 | + #define HLLAPI_API_CALL __declspec (dllexport) DWORD __stdcall |
| 76 | + | ||
| 77 | + #endif // WIN32 | ||
| 78 | + | ||
| 79 | + HLLAPI_API_CALL hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); | ||
| 80 | + | ||
| 81 | + HLLAPI_API_CALL hllapi_init(LPSTR mode); | ||
| 82 | + HLLAPI_API_CALL hllapi_deinit(void); | ||
| 83 | + | ||
| 84 | + HLLAPI_API_CALL hllapi_get_revision(void); | ||
| 85 | + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir); | ||
| 86 | + | ||
| 87 | + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait); | ||
| 88 | + HLLAPI_API_CALL hllapi_disconnect(void); | ||
| 89 | + HLLAPI_API_CALL hllapi_get_message_id(void); | ||
| 90 | + HLLAPI_API_CALL hllapi_is_connected(void); | ||
| 91 | + HLLAPI_API_CALL hllapi_get_state(void); | ||
| 92 | + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); | ||
| 93 | + HLLAPI_API_CALL hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); | ||
| 94 | + HLLAPI_API_CALL hllapi_enter(void); | ||
| 95 | + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text); | ||
| 96 | + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); | ||
| 97 | + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); | ||
| 98 | + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); | ||
| 99 | + HLLAPI_API_CALL hllapi_wait(WORD seconds); | ||
| 100 | + HLLAPI_API_CALL hllapi_pfkey(WORD key); | ||
| 101 | + HLLAPI_API_CALL hllapi_pakey(WORD key); | ||
| 102 | + HLLAPI_API_CALL hllapi_setcursor(WORD key); | ||
| 103 | + HLLAPI_API_CALL hllapi_getcursor(); | ||
| 104 | + HLLAPI_API_CALL hllapi_erase_eof(void); | ||
| 105 | + HLLAPI_API_CALL hllapi_print(void); | ||
| 106 | + | ||
| 107 | + HLLAPI_API_CALL hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); | ||
| 108 | + | ||
| 109 | + HLLAPI_API_CALL hllapi_init(LPSTR mode); | ||
| 110 | + HLLAPI_API_CALL hllapi_deinit(void); | ||
| 111 | + | ||
| 112 | + HLLAPI_API_CALL hllapi_get_revision(void); | ||
| 113 | + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir); | ||
| 114 | + | ||
| 115 | + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait); | ||
| 116 | + HLLAPI_API_CALL hllapi_disconnect(void); | ||
| 117 | + HLLAPI_API_CALL hllapi_get_message_id(void); | ||
| 118 | + HLLAPI_API_CALL hllapi_is_connected(void); | ||
| 119 | + HLLAPI_API_CALL hllapi_get_state(void); | ||
| 120 | + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); | ||
| 121 | + HLLAPI_API_CALL hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); | ||
| 122 | + HLLAPI_API_CALL hllapi_enter(void); | ||
| 123 | + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text); | ||
| 124 | + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); | ||
| 125 | + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); | ||
| 126 | + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); | ||
| 127 | + HLLAPI_API_CALL hllapi_wait(WORD seconds); | ||
| 128 | + HLLAPI_API_CALL hllapi_pfkey(WORD key); | ||
| 129 | + HLLAPI_API_CALL hllapi_pakey(WORD key); | ||
| 130 | + HLLAPI_API_CALL hllapi_setcursor(WORD key); | ||
| 131 | + HLLAPI_API_CALL hllapi_getcursor(); | ||
| 132 | + HLLAPI_API_CALL hllapi_erase_eof(void); | ||
| 133 | + HLLAPI_API_CALL hllapi_print(void); | ||
| 134 | 134 | ||
| 135 | #ifdef __cplusplus | 135 | #ifdef __cplusplus |
| 136 | } /* end of extern "C" */ | 136 | } /* end of extern "C" */ |
src/plugins/hllapi/Makefile.in
| @@ -31,127 +31,38 @@ | @@ -31,127 +31,38 @@ | ||
| 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 | 34 | +EXTAPI_SRC=calls.c hllapi.c |
| 35 | 35 | ||
| 36 | -CLASSLIBDIR=../../classlib | ||
| 37 | - | ||
| 38 | -#---[ Paths ]------------------------------------------------------------------ | ||
| 39 | - | ||
| 40 | -ROOTDIR ?= . | ||
| 41 | -OBJDIR ?= $(ROOTDIR)/.obj | ||
| 42 | -BINDIR ?= $(ROOTDIR)/.bin | ||
| 43 | -BINDBG ?= $(BINDIR)/Debug | ||
| 44 | -BINRLS ?= $(BINDIR)/Release | ||
| 45 | - | ||
| 46 | -OBJDBG = $(OBJDIR)/Debug | ||
| 47 | -OBJRLS = $(OBJDIR)/Release | ||
| 48 | -OBJEXT = o | ||
| 49 | - | ||
| 50 | -#---[ Tools ]------------------------------------------------------------------ | ||
| 51 | - | ||
| 52 | -MKDIR=@MKDIR_P@ | ||
| 53 | -CC=@CXX@ | ||
| 54 | -CXX=@CXX@ | ||
| 55 | -LD=@CXX@ | ||
| 56 | -MSGCAT=@MSGCAT@ | ||
| 57 | -XGETTEXT=@XGETTEXT@ | ||
| 58 | - | ||
| 59 | -#---[ Rules ]------------------------------------------------------------------ | ||
| 60 | - | ||
| 61 | -DLL_FLAGS=@DLL_FLAGS@ | ||
| 62 | -SYSDLL_FLAGS=@SYSDLL_FLAGS@ | 36 | +#---[ Include plugin rules ]--------------------------------------------------- |
| 63 | 37 | ||
| 64 | -DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | ||
| 65 | - | ||
| 66 | -LIB3270_MODE ?= Default | ||
| 67 | - | ||
| 68 | -ifeq ($(LIB3270_MODE),Debug) | ||
| 69 | - PW3270_CFLAGS=-I../../../src/include | ||
| 70 | - LIB3270_CFLAGS=-I../../../src/include | ||
| 71 | -endif | ||
| 72 | - | ||
| 73 | -ifeq ($(LIB3270_MODE),Release) | ||
| 74 | - PW3270_CFLAGS=-I../../../src/include | ||
| 75 | - LIB3270_CFLAGS=-I../../../src/include | ||
| 76 | -endif | ||
| 77 | - | ||
| 78 | -ifeq ($(LIB3270_MODE),Default) | ||
| 79 | - LIB3270_CFLAGS ?= `pkg-config --cflags lib3270` | ||
| 80 | - PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270` | ||
| 81 | -endif | ||
| 82 | - | ||
| 83 | -GTK_CFLAGS ?= @GTK_CFLAGS@ @GTKMAC_CFLAGS@ | ||
| 84 | -GTK_LIBS ?= @GTK_LIBS@ @GTKMAC_LIBS@ | 38 | +CLASSLIBDIR=../../classlib |
| 85 | 39 | ||
| 40 | +include ../../include/plugin.mak | ||
| 86 | include $(CLASSLIBDIR)/class.mak | 41 | include $(CLASSLIBDIR)/class.mak |
| 87 | 42 | ||
| 88 | -$(OBJDBG)/%.o: %.cc $(DEPENDS) | ||
| 89 | - @echo " CC `basename $@`" | ||
| 90 | - @$(MKDIR) `dirname $@` | ||
| 91 | - @$(CXX) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< | 43 | +#---[ Release Targets ]-------------------------------------------------------- |
| 92 | 44 | ||
| 93 | -$(OBJDBG)/%.o: %.c $(DEPENDS) | ||
| 94 | - @echo " CC `basename $@`" | ||
| 95 | - @$(MKDIR) `dirname $@` | ||
| 96 | - @$(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< | ||
| 97 | - | ||
| 98 | -$(OBJRLS)/%.o: %.cc $(DEPENDS) | ||
| 99 | - @echo " CC `basename $@`" | ||
| 100 | - @$(MKDIR) `dirname $@` | ||
| 101 | - @$(CXX) $(CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< | ||
| 102 | - | ||
| 103 | -$(OBJRLS)/%.o: %.c $(DEPENDS) | ||
| 104 | - @echo " CC `basename $@`" | ||
| 105 | - @$(MKDIR) `dirname $@` | ||
| 106 | - @$(CC) $(CFLAGS) $(LIB3270_CFLAGS) $(GTK_CFLAGS) -o $@ -c $< | ||
| 107 | - | ||
| 108 | - | ||
| 109 | -#---[ Release targets ]-------------------------------------------------------- | ||
| 110 | - | ||
| 111 | -Release: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(BINRLS)/libhllapi@DLLEXT@ | ||
| 112 | - | ||
| 113 | -$(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) | 45 | +$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME) |
| 114 | @echo " CCLD `basename $@`" | 46 | @echo " CCLD `basename $@`" |
| 115 | @$(MKDIR) `dirname $@` | 47 | @$(MKDIR) `dirname $@` |
| 116 | - @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) | 48 | + $(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) |
| 117 | 49 | ||
| 118 | -$(BINRLS)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) | 50 | +$(BINRLS)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) |
| 119 | @echo " CCLD `basename $@`" | 51 | @echo " CCLD `basename $@`" |
| 120 | @$(MKDIR) `dirname $@` | 52 | @$(MKDIR) `dirname $@` |
| 121 | - @$(LD) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) | 53 | + @$(CXX) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(CLASS_LIBS) |
| 122 | 54 | ||
| 123 | -#---[ Debug targets ]---------------------------------------------------------- | 55 | +install: |
| 124 | 56 | ||
| 125 | -Debug: $(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@ $(BINDBG)/libhllapi@DLLEXT@ | 57 | +#---[ Debug Targets ]---------------------------------------------------------- |
| 126 | 58 | ||
| 127 | -$(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) | 59 | +$(BINDBG)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) $(BINDBG)$(DLL_NAME) |
| 128 | @echo " CCLD `basename $@`" | 60 | @echo " CCLD `basename $@`" |
| 129 | @$(MKDIR) `dirname $@` | 61 | @$(MKDIR) `dirname $@` |
| 130 | - @$(LD) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) | 62 | + @$(CXX) $(DLL_FLAGS) @LDSOFLAGS@ @DBGRPATH@ $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) |
| 131 | 63 | ||
| 132 | -$(BINDBG)/libhllapi@DLLEXT@: $(foreach SRC, $(basename $(HLLAPI_SRC)), $(OBJDBG)/$(SRC).o) $(CLASS_DEBUG_OBJECTS) | 64 | +$(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJDBG)/$(SRC)@OBJEXT@) $(CLASS_DEBUG_OBJECTS) |
| 133 | @echo " CCLD `basename $@`" | 65 | @echo " CCLD `basename $@`" |
| 134 | @$(MKDIR) `dirname $@` | 66 | @$(MKDIR) `dirname $@` |
| 135 | - @$(LD) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @LDLIBFLAGS@ -o $@ $^ $(LIBS) $(CLASS_LIBS) | ||
| 136 | - | ||
| 137 | -#---[ Misc targets ]----------------------------------------------------------- | ||
| 138 | - | ||
| 139 | -$(BINDBG)/testprogram@EXEEXT@: $(OBJDBG)/testprogram.o $(BINDBG)/libhllapi@DLLEXT@ | ||
| 140 | - @echo " CCLD `basename $@`" | ||
| 141 | - @$(MKDIR) `dirname $@` | ||
| 142 | - @$(CXX) $(CFLAGS) $(PW3270_CFLAGS) -L$(BINDBG) $(DEBUG_CFLAGS) -lhllapi -o $@ $(OBJDBG)/testprogram.o | ||
| 143 | - | ||
| 144 | -test: $(BINDBG)/testprogram@EXEEXT@ | ||
| 145 | - | ||
| 146 | -run: $(BINDBG)/testprogram@EXEEXT@ | ||
| 147 | - @cd $(BINDBG) ; ./testprogram@EXEEXT@ | ||
| 148 | - | ||
| 149 | -install: $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ | ||
| 150 | - @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins | ||
| 151 | - @$(INSTALL_PROGRAM) $(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins | 67 | + $(CXX) $(SYSDLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(CLASS_LIBS) |
| 152 | 68 | ||
| 153 | -clean: | ||
| 154 | - @rm -fr $(OBJDIR) | ||
| 155 | - @rm -fr $(BINDIR) | ||
| 156 | - @rm -f testprogram@EXEEXT@ | ||
| 157 | - @find . -name "*~" -exec rm -f {} \; |
src/plugins/hllapi/calls.cc
| @@ -42,7 +42,7 @@ | @@ -42,7 +42,7 @@ | ||
| 42 | 42 | ||
| 43 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 43 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 44 | 44 | ||
| 45 | - __declspec (dllexport) DWORD __stdcall hllapi_init(LPSTR mode) | 45 | + HLLAPI_API_CALL hllapi_init(LPSTR mode) |
| 46 | { | 46 | { |
| 47 | trace("%s(%s)",__FUNCTION__,mode); | 47 | trace("%s(%s)",__FUNCTION__,mode); |
| 48 | 48 | ||
| @@ -62,7 +62,7 @@ | @@ -62,7 +62,7 @@ | ||
| 62 | return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR; | 62 | return hSession ? HLLAPI_STATUS_SUCCESS : HLLAPI_STATUS_SYSTEM_ERROR; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | - __declspec (dllexport) DWORD __stdcall hllapi_deinit(void) | 65 | + HLLAPI_API_CALL hllapi_deinit(void) |
| 66 | { | 66 | { |
| 67 | trace("%s()",__FUNCTION__); | 67 | trace("%s()",__FUNCTION__); |
| 68 | 68 | ||
| @@ -82,7 +82,7 @@ | @@ -82,7 +82,7 @@ | ||
| 82 | return HLLAPI_STATUS_SUCCESS; | 82 | return HLLAPI_STATUS_SUCCESS; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | - __declspec (dllexport) DWORD __stdcall hllapi_get_revision(void) | 85 | + HLLAPI_API_CALL hllapi_get_revision(void) |
| 86 | { | 86 | { |
| 87 | try | 87 | try |
| 88 | { | 88 | { |
| @@ -95,7 +95,7 @@ | @@ -95,7 +95,7 @@ | ||
| 95 | return (DWORD) -1; | 95 | return (DWORD) -1; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | - __declspec (dllexport) DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait) | 98 | + HLLAPI_API_CALL hllapi_connect(LPSTR uri, WORD wait) |
| 99 | { | 99 | { |
| 100 | int rc = HLLAPI_STATUS_SUCCESS; | 100 | int rc = HLLAPI_STATUS_SUCCESS; |
| 101 | 101 | ||
| @@ -111,12 +111,12 @@ | @@ -111,12 +111,12 @@ | ||
| 111 | return rc; | 111 | return rc; |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | - __declspec (dllexport) DWORD __stdcall hllapi_is_connected(void) | 114 | + HLLAPI_API_CALL hllapi_is_connected(void) |
| 115 | { | 115 | { |
| 116 | return session::get_default()->is_connected(); | 116 | return session::get_default()->is_connected(); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | - __declspec (dllexport) DWORD __stdcall hllapi_get_state(void) | 119 | + HLLAPI_API_CALL hllapi_get_state(void) |
| 120 | { | 120 | { |
| 121 | switch(hllapi_get_message_id()) | 121 | switch(hllapi_get_message_id()) |
| 122 | { | 122 | { |
| @@ -146,28 +146,28 @@ | @@ -146,28 +146,28 @@ | ||
| 146 | return HLLAPI_STATUS_SYSTEM_ERROR; | 146 | return HLLAPI_STATUS_SYSTEM_ERROR; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | - __declspec (dllexport) DWORD __stdcall hllapi_disconnect(void) | 149 | + HLLAPI_API_CALL hllapi_disconnect(void) |
| 150 | { | 150 | { |
| 151 | session::get_default()->disconnect(); | 151 | session::get_default()->disconnect(); |
| 152 | return HLLAPI_STATUS_SUCCESS; | 152 | return HLLAPI_STATUS_SUCCESS; |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | - __declspec (dllexport) DWORD __stdcall hllapi_wait_for_ready(WORD seconds) | 155 | + HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds) |
| 156 | { | 156 | { |
| 157 | return session::get_default()->wait_for_ready(seconds); | 157 | return session::get_default()->wait_for_ready(seconds); |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | - __declspec (dllexport) DWORD __stdcall hllapi_wait(WORD seconds) | 160 | + HLLAPI_API_CALL hllapi_wait(WORD seconds) |
| 161 | { | 161 | { |
| 162 | return session::get_default()->wait(seconds); | 162 | return session::get_default()->wait(seconds); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | - __declspec (dllexport) DWORD __stdcall hllapi_get_message_id(void) | 165 | + HLLAPI_API_CALL hllapi_get_message_id(void) |
| 166 | { | 166 | { |
| 167 | return session::get_default()->get_cstate(); | 167 | return session::get_default()->get_cstate(); |
| 168 | } | 168 | } |
| 169 | 169 | ||
| 170 | - __declspec (dllexport) DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer) | 170 | + HLLAPI_API_CALL hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer) |
| 171 | { | 171 | { |
| 172 | if(!(buffer && *buffer)) | 172 | if(!(buffer && *buffer)) |
| 173 | return HLLAPI_STATUS_SYSTEM_ERROR; | 173 | return HLLAPI_STATUS_SYSTEM_ERROR; |
| @@ -186,12 +186,12 @@ | @@ -186,12 +186,12 @@ | ||
| 186 | return HLLAPI_STATUS_SUCCESS; | 186 | return HLLAPI_STATUS_SUCCESS; |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | - __declspec (dllexport) DWORD __stdcall hllapi_enter(void) | 189 | + HLLAPI_API_CALL hllapi_enter(void) |
| 190 | { | 190 | { |
| 191 | return session::get_default()->enter(); | 191 | return session::get_default()->enter(); |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | - __declspec (dllexport) DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text) | 194 | + HLLAPI_API_CALL hllapi_set_text_at(WORD row, WORD col, LPSTR text) |
| 195 | { | 195 | { |
| 196 | try | 196 | try |
| 197 | { | 197 | { |
| @@ -205,7 +205,7 @@ | @@ -205,7 +205,7 @@ | ||
| 205 | return HLLAPI_STATUS_SUCCESS; | 205 | return HLLAPI_STATUS_SUCCESS; |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | - __declspec (dllexport) DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text) | 208 | + HLLAPI_API_CALL hllapi_cmp_text_at(WORD row, WORD col, LPSTR text) |
| 209 | { | 209 | { |
| 210 | int rc = HLLAPI_STATUS_SYSTEM_ERROR; | 210 | int rc = HLLAPI_STATUS_SYSTEM_ERROR; |
| 211 | try | 211 | try |
| @@ -220,17 +220,17 @@ | @@ -220,17 +220,17 @@ | ||
| 220 | return rc; | 220 | return rc; |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | - __declspec (dllexport) DWORD __stdcall hllapi_pfkey(WORD key) | 223 | + HLLAPI_API_CALL hllapi_pfkey(WORD key) |
| 224 | { | 224 | { |
| 225 | return session::get_default()->pfkey(key); | 225 | return session::get_default()->pfkey(key); |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | - __declspec (dllexport) DWORD __stdcall hllapi_pakey(WORD key) | 228 | + HLLAPI_API_CALL hllapi_pakey(WORD key) |
| 229 | { | 229 | { |
| 230 | return session::get_default()->pakey(key); | 230 | return session::get_default()->pakey(key); |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | - __declspec (dllexport) DWORD __stdcall hllapi_get_datadir(LPSTR datadir) | 233 | + HLLAPI_API_CALL hllapi_get_datadir(LPSTR datadir) |
| 234 | { | 234 | { |
| 235 | HKEY hKey = 0; | 235 | HKEY hKey = 0; |
| 236 | unsigned long datalen = strlen(datadir); | 236 | unsigned long datalen = strlen(datadir); |
| @@ -248,17 +248,17 @@ | @@ -248,17 +248,17 @@ | ||
| 248 | return *datadir; | 248 | return *datadir; |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | - __declspec (dllexport) DWORD __stdcall hllapi_setcursor(WORD pos) | 251 | + HLLAPI_API_CALL hllapi_setcursor(WORD pos) |
| 252 | { | 252 | { |
| 253 | return session::get_default()->set_cursor_addr(pos-1); | 253 | return session::get_default()->set_cursor_addr(pos-1); |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | - __declspec (dllexport) DWORD __stdcall hllapi_getcursor() | 256 | + HLLAPI_API_CALL hllapi_getcursor() |
| 257 | { | 257 | { |
| 258 | return session::get_default()->get_cursor_addr()+1; | 258 | return session::get_default()->get_cursor_addr()+1; |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | - __declspec (dllexport) DWORD __stdcall hllapi_get_screen(WORD offset, LPSTR buffer, WORD len) | 261 | + HLLAPI_API_CALL hllapi_get_screen(WORD offset, LPSTR buffer, WORD len) |
| 262 | { | 262 | { |
| 263 | int rc = HLLAPI_STATUS_SYSTEM_ERROR; | 263 | int rc = HLLAPI_STATUS_SYSTEM_ERROR; |
| 264 | 264 | ||
| @@ -284,19 +284,19 @@ | @@ -284,19 +284,19 @@ | ||
| 284 | return rc; | 284 | return rc; |
| 285 | } | 285 | } |
| 286 | 286 | ||
| 287 | - __declspec (dllexport) DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting) | 287 | + HLLAPI_API_CALL hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting) |
| 288 | { | 288 | { |
| 289 | session::get_default()->emulate_input(buffer); | 289 | session::get_default()->emulate_input(buffer); |
| 290 | return HLLAPI_STATUS_SUCCESS; | 290 | return HLLAPI_STATUS_SUCCESS; |
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | - __declspec (dllexport) DWORD __stdcall hllapi_erase_eof(void) | 293 | + HLLAPI_API_CALL hllapi_erase_eof(void) |
| 294 | { | 294 | { |
| 295 | session::get_default()->erase_eof(); | 295 | session::get_default()->erase_eof(); |
| 296 | return HLLAPI_STATUS_SUCCESS; | 296 | return HLLAPI_STATUS_SUCCESS; |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | - __declspec (dllexport) DWORD __stdcall hllapi_print(void) | 299 | + HLLAPI_API_CALL hllapi_print(void) |
| 300 | { | 300 | { |
| 301 | return session::get_default()->print(); | 301 | return session::get_default()->print(); |
| 302 | } | 302 | } |
src/plugins/hllapi/client.h
| @@ -27,7 +27,6 @@ | @@ -27,7 +27,6 @@ | ||
| 27 | * | 27 | * |
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | - #include <windows.h> | ||
| 31 | #include <pw3270/hllapi.h> | 30 | #include <pw3270/hllapi.h> |
| 32 | 31 | ||
| 33 | #ifndef ETIMEDOUT | 32 | #ifndef ETIMEDOUT |
| @@ -43,9 +42,14 @@ | @@ -43,9 +42,14 @@ | ||
| 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); } } | 42 | #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 | #endif // DEBUG | 43 | #endif // DEBUG |
| 45 | 44 | ||
| 45 | + #ifdef __cplusplus | ||
| 46 | + extern "C" { | ||
| 47 | + #endif | ||
| 48 | + | ||
| 49 | +/* | ||
| 46 | void * hllapi_pipe_init(const char *id); | 50 | void * hllapi_pipe_init(const char *id); |
| 47 | void hllapi_pipe_deinit(void *h); | 51 | void hllapi_pipe_deinit(void *h); |
| 48 | - const char * hllapi_pipe_get_revision(void); | 52 | + const char * hllapi_pipe_get_revision(void); |
| 49 | void hllapi_pipe_release_memory(void *p); | 53 | void hllapi_pipe_release_memory(void *p); |
| 50 | int hllapi_pipe_connect(void *h, const char *n, int wait); | 54 | int hllapi_pipe_connect(void *h, const char *n, int wait); |
| 51 | void hllapi_pipe_disconnect(void *h); | 55 | void hllapi_pipe_disconnect(void *h); |
| @@ -65,9 +69,13 @@ | @@ -65,9 +69,13 @@ | ||
| 65 | int hllapi_pipe_setcursor(void *h, int baddr); | 69 | int hllapi_pipe_setcursor(void *h, int baddr); |
| 66 | int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); | 70 | int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); |
| 67 | int hllapi_pipe_print(void *h); | 71 | int hllapi_pipe_print(void *h); |
| 72 | +*/ | ||
| 68 | 73 | ||
| 69 | char * hllapi_get_string(int offset, size_t len); | 74 | char * hllapi_get_string(int offset, size_t len); |
| 70 | void hllapi_free(void *p); | 75 | void hllapi_free(void *p); |
| 71 | 76 | ||
| 77 | + #ifdef __cplusplus | ||
| 78 | + } /* end of extern "C" */ | ||
| 79 | + #endif | ||
| 72 | 80 | ||
| 73 | 81 |
src/plugins/hllapi/hllapi.c
| @@ -85,11 +85,7 @@ | @@ -85,11 +85,7 @@ | ||
| 85 | 85 | ||
| 86 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 86 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 87 | 87 | ||
| 88 | -#ifdef _WIN32 | ||
| 89 | - __declspec (dllexport) int __stdcall hllapi(LPWORD func, LPSTR buffer, LPWORD length, LPWORD rc) | ||
| 90 | -#else | ||
| 91 | - LIB3270_EXPORT int hllapi(const unsigned long *func, char *buffer, unsigned short *length, unsigned short *rc) | ||
| 92 | -#endif // _WIN32 | 88 | +HLLAPI_API_CALL hllapi(LPWORD func, LPSTR buffer, LPWORD length, LPWORD rc) |
| 93 | { | 89 | { |
| 94 | unsigned int f; | 90 | unsigned int f; |
| 95 | 91 |
src/plugins/hllapi/pipesource.c
| @@ -1,385 +0,0 @@ | @@ -1,385 +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 pipesource.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 | - * licinio@bb.com.br (Licínio Luis Branco) | ||
| 28 | - * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | ||
| 29 | - * | ||
| 30 | - */ | ||
| 31 | - | ||
| 32 | - #include <pw3270.h> | ||
| 33 | - #include <pw3270/v3270.h> | ||
| 34 | - | ||
| 35 | - #include <windows.h> | ||
| 36 | - #include <stdarg.h> | ||
| 37 | - #include "remotectl.h" | ||
| 38 | - | ||
| 39 | -/*---[ Defines ]----------------------------------------------------------------------------*/ | ||
| 40 | - | ||
| 41 | - #pragma pack(1) | ||
| 42 | - | ||
| 43 | - typedef struct _pipe_source | ||
| 44 | - { | ||
| 45 | - GSource gsrc; | ||
| 46 | - HANDLE hPipe; | ||
| 47 | - | ||
| 48 | - enum _PIPE_STATE | ||
| 49 | - { | ||
| 50 | - PIPE_STATE_WAITING, | ||
| 51 | - PIPE_STATE_READ, | ||
| 52 | - PIPE_STATE_PENDING_READ, | ||
| 53 | - | ||
| 54 | - PIPE_STATE_UNDEFINED, | ||
| 55 | - } state; | ||
| 56 | - | ||
| 57 | - OVERLAPPED overlap; | ||
| 58 | - unsigned char buffer[PIPE_BUFFER_LENGTH+1]; | ||
| 59 | - } pipe_source; | ||
| 60 | - | ||
| 61 | - #pragma pack() | ||
| 62 | - | ||
| 63 | -/*---[ GSource ]----------------------------------------------------------------------------*/ | ||
| 64 | - | ||
| 65 | -static void wait_for_client(pipe_source *source) | ||
| 66 | -{ | ||
| 67 | - set_active(FALSE); | ||
| 68 | - if(ConnectNamedPipe(source->hPipe,&source->overlap)) | ||
| 69 | - { | ||
| 70 | - popup_lasterror("%s",_( "Error in ConnectNamedPipe" )); | ||
| 71 | - return; | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - switch(GetLastError()) | ||
| 75 | - { | ||
| 76 | - // The overlapped connection in progress. | ||
| 77 | - case ERROR_IO_PENDING: | ||
| 78 | - // trace("%s: ERROR_IO_PENDING",__FUNCTION__); | ||
| 79 | - source->state = PIPE_STATE_WAITING; | ||
| 80 | - break; | ||
| 81 | - | ||
| 82 | - // Client is already connected, so signal an event. | ||
| 83 | - case ERROR_PIPE_CONNECTED: | ||
| 84 | - trace("%s: ERROR_PIPE_CONNECTED",__FUNCTION__); | ||
| 85 | - set_active(TRUE); | ||
| 86 | - if(SetEvent(source->overlap.hEvent)) | ||
| 87 | - break; | ||
| 88 | - | ||
| 89 | - // If an error occurs during the connect operation... | ||
| 90 | - default: | ||
| 91 | - popup_lasterror("%s", _( "ConnectNamedPipe failed" )); | ||
| 92 | - } | ||
| 93 | - | ||
| 94 | - } | ||
| 95 | - | ||
| 96 | - static gboolean IO_prepare(GSource *source, gint *timeout) | ||
| 97 | - { | ||
| 98 | - /* | ||
| 99 | - * Called before all the file descriptors are polled. | ||
| 100 | - * If the source can determine that it is ready here | ||
| 101 | - * (without waiting for the results of the poll() call) | ||
| 102 | - * it should return TRUE. | ||
| 103 | - * | ||
| 104 | - * It can also return a timeout_ value which should be the maximum | ||
| 105 | - * timeout (in milliseconds) which should be passed to the poll() call. | ||
| 106 | - * The actual timeout used will be -1 if all sources returned -1, | ||
| 107 | - * or it will be the minimum of all the timeout_ values | ||
| 108 | - * returned which were >= 0. | ||
| 109 | - * | ||
| 110 | - */ | ||
| 111 | - if(WaitForSingleObject(((pipe_source *) source)->overlap.hEvent,0) == WAIT_OBJECT_0) | ||
| 112 | - { | ||
| 113 | - // trace("%s: source=%p",__FUNCTION__,source); | ||
| 114 | - return TRUE; | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - *timeout = 10; | ||
| 118 | - return FALSE; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - static gboolean IO_check(GSource *source) | ||
| 122 | - { | ||
| 123 | - /* | ||
| 124 | - * Called after all the file descriptors are polled. | ||
| 125 | - * The source should return TRUE if it is ready to be dispatched. | ||
| 126 | - * Note that some time may have passed since the previous prepare | ||
| 127 | - * function was called, so the source should be checked again here. | ||
| 128 | - * | ||
| 129 | - */ | ||
| 130 | - if(WaitForSingleObject(((pipe_source *) source)->overlap.hEvent,0) == WAIT_OBJECT_0) | ||
| 131 | - return TRUE; | ||
| 132 | - | ||
| 133 | - return FALSE; | ||
| 134 | - } | ||
| 135 | - | ||
| 136 | - static void process_input(pipe_source *source, DWORD cbRead) | ||
| 137 | - { | ||
| 138 | - HLLAPI_DATA * data = (HLLAPI_DATA *) source->buffer; | ||
| 139 | - QUERY * qry = g_malloc0(sizeof(QUERY)+cbRead+1); | ||
| 140 | - | ||
| 141 | - qry->hPipe = source->hPipe; | ||
| 142 | - qry->text = (const gchar *) (qry+1); | ||
| 143 | - | ||
| 144 | - if(data->id == HLLAPI_REQUEST_QUERY) | ||
| 145 | - { | ||
| 146 | - // HLLAPI query | ||
| 147 | - qry->cmd = (int) data->func; | ||
| 148 | - qry->pos = (int) data->rc; | ||
| 149 | - qry->length = data->value; | ||
| 150 | - memcpy((gchar *)(qry->text),data->string,qry->length); | ||
| 151 | - } | ||
| 152 | - else | ||
| 153 | - { | ||
| 154 | - qry->cmd = -1; | ||
| 155 | - } | ||
| 156 | - | ||
| 157 | - enqueue_request(qry); | ||
| 158 | - } | ||
| 159 | - | ||
| 160 | - void request_complete(QUERY *qry, int rc, const gchar *text) | ||
| 161 | - { | ||
| 162 | - request_buffer(qry,rc,strlen(text),(const gpointer) text); | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - void request_status(QUERY *qry, int rc) | ||
| 166 | - { | ||
| 167 | - if(rc) | ||
| 168 | - { | ||
| 169 | - const gchar *msg = strerror(rc); | ||
| 170 | - request_buffer(qry, rc, strlen(msg), (const gpointer) msg); | ||
| 171 | - } | ||
| 172 | - else | ||
| 173 | - { | ||
| 174 | - request_buffer(qry, rc, 0, NULL); | ||
| 175 | - } | ||
| 176 | - } | ||
| 177 | - | ||
| 178 | - void request_value(QUERY *qry, int rc, unsigned int value) | ||
| 179 | - { | ||
| 180 | - HLLAPI_DATA data; | ||
| 181 | - | ||
| 182 | - memset(&data,0,sizeof(data)); | ||
| 183 | - data.id = HLLAPI_RESPONSE_VALUE; | ||
| 184 | - data.func = qry->cmd; | ||
| 185 | - data.rc = rc; | ||
| 186 | - data.value = value; | ||
| 187 | - | ||
| 188 | -#ifdef WIN32 | ||
| 189 | - { | ||
| 190 | - DWORD wrote = sizeof(data); | ||
| 191 | - WriteFile(qry->hPipe,&data,wrote,&wrote,NULL); | ||
| 192 | - trace("Wrote=%d len=%d",(int) wrote, sizeof(data)); | ||
| 193 | - } | ||
| 194 | -#endif // WIN32 | ||
| 195 | - | ||
| 196 | - g_free(qry); | ||
| 197 | - | ||
| 198 | - | ||
| 199 | - } | ||
| 200 | - | ||
| 201 | - void request_buffer(QUERY *qry, int rc, size_t szBuffer, const gpointer buffer) | ||
| 202 | - { | ||
| 203 | - size_t sz; | ||
| 204 | - HLLAPI_DATA *data; | ||
| 205 | - | ||
| 206 | - if(buffer) | ||
| 207 | - { | ||
| 208 | - sz = sizeof(HLLAPI_DATA)+szBuffer; | ||
| 209 | - data = g_malloc0(sz); | ||
| 210 | - data->id = HLLAPI_RESPONSE_TEXT; | ||
| 211 | - memcpy(data->string,buffer,szBuffer); | ||
| 212 | - } | ||
| 213 | - else | ||
| 214 | - { | ||
| 215 | - sz = sizeof(HLLAPI_DATA); | ||
| 216 | - data = g_malloc0(sz); | ||
| 217 | - data->id = HLLAPI_RESPONSE_VALUE; | ||
| 218 | - } | ||
| 219 | - | ||
| 220 | - data->func = qry->cmd; | ||
| 221 | - data->rc = rc; | ||
| 222 | - data->value = szBuffer; | ||
| 223 | - | ||
| 224 | - trace("rc=%d data->len=%d",rc,(int) szBuffer); | ||
| 225 | - | ||
| 226 | -#ifdef WIN32 | ||
| 227 | - { | ||
| 228 | - DWORD wrote = sz; | ||
| 229 | - WriteFile(qry->hPipe,data,wrote,&wrote,NULL); | ||
| 230 | - trace("Wrote=%d len=%d",(int) wrote, (int) sz); | ||
| 231 | - } | ||
| 232 | -#endif // WIN32 | ||
| 233 | - | ||
| 234 | - g_free(data); | ||
| 235 | - g_free(qry); | ||
| 236 | - | ||
| 237 | - } | ||
| 238 | - | ||
| 239 | - static void read_input_pipe(pipe_source *source) | ||
| 240 | - { | ||
| 241 | - DWORD cbRead = 0; | ||
| 242 | - | ||
| 243 | - if(ReadFile(source->hPipe,source->buffer,PIPE_BUFFER_LENGTH,&cbRead,&source->overlap) && cbRead > 0) | ||
| 244 | - process_input(source,cbRead); | ||
| 245 | - | ||
| 246 | - // The read operation is still pending. | ||
| 247 | - switch(GetLastError()) | ||
| 248 | - { | ||
| 249 | - case 0: | ||
| 250 | - break; | ||
| 251 | - | ||
| 252 | - case ERROR_IO_PENDING: | ||
| 253 | - // trace("%s: PIPE_STATE_PENDING_READ",__FUNCTION__); | ||
| 254 | - source->state = PIPE_STATE_PENDING_READ; | ||
| 255 | - break; | ||
| 256 | - | ||
| 257 | - case ERROR_PIPE_LISTENING: | ||
| 258 | - // trace("%s: ERROR_PIPE_LISTENING",__FUNCTION__); | ||
| 259 | - source->state = PIPE_STATE_READ; | ||
| 260 | - break; | ||
| 261 | - | ||
| 262 | - case ERROR_BROKEN_PIPE: | ||
| 263 | - trace("%s: ERROR_BROKEN_PIPE",__FUNCTION__); | ||
| 264 | - | ||
| 265 | - if(!DisconnectNamedPipe(source->hPipe)) | ||
| 266 | - { | ||
| 267 | - set_active(FALSE); | ||
| 268 | - popup_lasterror("%s",_( "Error in DisconnectNamedPipe" )); | ||
| 269 | - } | ||
| 270 | - else | ||
| 271 | - { | ||
| 272 | - wait_for_client(source); | ||
| 273 | - } | ||
| 274 | - break; | ||
| 275 | - | ||
| 276 | - case ERROR_PIPE_NOT_CONNECTED: | ||
| 277 | - trace("%s: ERROR_PIPE_NOT_CONNECTED",__FUNCTION__); | ||
| 278 | - set_active(FALSE); | ||
| 279 | - break; | ||
| 280 | - | ||
| 281 | - default: | ||
| 282 | - if(source->hPipe != INVALID_HANDLE_VALUE) | ||
| 283 | - popup_lasterror("%s",_( "Error receiving message from pipe" ) ); | ||
| 284 | - } | ||
| 285 | - | ||
| 286 | - } | ||
| 287 | - | ||
| 288 | - static gboolean IO_dispatch(GSource *source, GSourceFunc callback, gpointer data) | ||
| 289 | - { | ||
| 290 | - /* | ||
| 291 | - * Called to dispatch the event source, | ||
| 292 | - * after it has returned TRUE in either its prepare or its check function. | ||
| 293 | - * The dispatch function is passed in a callback function and data. | ||
| 294 | - * The callback function may be NULL if the source was never connected | ||
| 295 | - * to a callback using g_source_set_callback(). The dispatch function | ||
| 296 | - * should call the callback function with user_data and whatever additional | ||
| 297 | - * parameters are needed for this type of event source. | ||
| 298 | - */ | ||
| 299 | - BOOL fSuccess; | ||
| 300 | - DWORD cbRead = 0; | ||
| 301 | -// DWORD dwErr = 0; | ||
| 302 | - | ||
| 303 | - fSuccess = GetOverlappedResult(((pipe_source *) source)->hPipe,&((pipe_source *) source)->overlap,&cbRead,FALSE ); | ||
| 304 | - | ||
| 305 | - // trace("%s: source=%p data=%p Result=%s cbRead=%d",__FUNCTION__,source,data,fSuccess ? "Success" : "Unsuccess",(int) cbRead); | ||
| 306 | - | ||
| 307 | - switch(((pipe_source *) source)->state) | ||
| 308 | - { | ||
| 309 | - case PIPE_STATE_WAITING: | ||
| 310 | - if(fSuccess) | ||
| 311 | - { | ||
| 312 | - trace("Pipe connected (cbRet=%d)",(int) cbRead); | ||
| 313 | - set_active(TRUE); | ||
| 314 | - ((pipe_source *) source)->state = PIPE_STATE_READ; | ||
| 315 | - } | ||
| 316 | - else | ||
| 317 | - { | ||
| 318 | - popup_lasterror("%s", _( "Pipe connection failed" )); | ||
| 319 | - } | ||
| 320 | - break; | ||
| 321 | - | ||
| 322 | - case PIPE_STATE_READ: | ||
| 323 | - // trace("Reading pipe (cbRead=%d)",(int) cbRead); | ||
| 324 | - read_input_pipe( (pipe_source *) source); | ||
| 325 | - break; | ||
| 326 | - | ||
| 327 | - case PIPE_STATE_PENDING_READ: | ||
| 328 | - if(fSuccess && cbRead > 0) | ||
| 329 | - process_input((pipe_source *) source,cbRead); | ||
| 330 | - ((pipe_source *) source)->state = PIPE_STATE_READ; | ||
| 331 | - break; | ||
| 332 | - | ||
| 333 | -//#ifdef DEBUG | ||
| 334 | -// default: | ||
| 335 | -// trace("%s: source=%p data=%p Unexpected mode %d",__FUNCTION__,source,data,((pipe_source *) source)->state); | ||
| 336 | -//#endif | ||
| 337 | - } | ||
| 338 | - | ||
| 339 | - return TRUE; | ||
| 340 | - } | ||
| 341 | - | ||
| 342 | - static void IO_finalize(GSource *source) | ||
| 343 | - { | ||
| 344 | -// trace("%s: source=%p",__FUNCTION__,source); | ||
| 345 | - | ||
| 346 | - if( ((pipe_source *) source)->hPipe != INVALID_HANDLE_VALUE) | ||
| 347 | - { | ||
| 348 | - CloseHandle(((pipe_source *) source)->hPipe); | ||
| 349 | - ((pipe_source *) source)->hPipe = INVALID_HANDLE_VALUE; | ||
| 350 | - } | ||
| 351 | - | ||
| 352 | - } | ||
| 353 | - | ||
| 354 | - static gboolean IO_closure(gpointer data) | ||
| 355 | - { | ||
| 356 | -// trace("%s: data=%p",__FUNCTION__,data); | ||
| 357 | - return 0; | ||
| 358 | - } | ||
| 359 | - | ||
| 360 | - | ||
| 361 | - void init_source_pipe(HANDLE hPipe) | ||
| 362 | - { | ||
| 363 | - static GSourceFuncs pipe_source_funcs = | ||
| 364 | - { | ||
| 365 | - IO_prepare, | ||
| 366 | - IO_check, | ||
| 367 | - IO_dispatch, | ||
| 368 | - IO_finalize, | ||
| 369 | - IO_closure, | ||
| 370 | - NULL | ||
| 371 | - }; | ||
| 372 | - | ||
| 373 | - pipe_source *source = (pipe_source *) g_source_new(&pipe_source_funcs,sizeof(pipe_source)); | ||
| 374 | - | ||
| 375 | - source->hPipe = hPipe; | ||
| 376 | - source->state = PIPE_STATE_WAITING; | ||
| 377 | - source->overlap.hEvent = CreateEvent( NULL,TRUE,TRUE,NULL); | ||
| 378 | - | ||
| 379 | - g_source_attach((GSource *) source,NULL); | ||
| 380 | - | ||
| 381 | - wait_for_client(source); | ||
| 382 | - | ||
| 383 | - return; | ||
| 384 | - } | ||
| 385 | - |
src/plugins/hllapi/pluginmain.c
| @@ -144,6 +144,7 @@ | @@ -144,6 +144,7 @@ | ||
| 144 | { | 144 | { |
| 145 | struct hllapi_packet_text *pkt; | 145 | struct hllapi_packet_text *pkt; |
| 146 | DWORD szBlock; | 146 | DWORD szBlock; |
| 147 | + int f; | ||
| 147 | 148 | ||
| 148 | if(text) | 149 | if(text) |
| 149 | { | 150 | { |
| @@ -161,7 +162,7 @@ | @@ -161,7 +162,7 @@ | ||
| 161 | } | 162 | } |
| 162 | 163 | ||
| 163 | trace("szBlock=%d text=\"%s\"",szBlock, ( (struct hllapi_packet_text *) pkt)->text); | 164 | trace("szBlock=%d text=\"%s\"",szBlock, ( (struct hllapi_packet_text *) pkt)->text); |
| 164 | - for(int f=0;f< (int) szBlock;f++) | 165 | + for(f=0;f< (int) szBlock;f++) |
| 165 | { | 166 | { |
| 166 | trace("rsp(%d)= %d \"%s\"",f,* (((char *) pkt)+f),((char *) pkt)+f); | 167 | trace("rsp(%d)= %d \"%s\"",f,* (((char *) pkt)+f),((char *) pkt)+f); |
| 167 | } | 168 | } |
src/plugins/hllapi/remote.c
| @@ -1,372 +0,0 @@ | @@ -1,372 +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 <lib3270.h> | ||
| 31 | - #include <malloc.h> | ||
| 32 | - #include <string.h> | ||
| 33 | - #include <errno.h> | ||
| 34 | - #include <stdio.h> | ||
| 35 | - #include <time.h> | ||
| 36 | - #include <lib3270/log.h> | ||
| 37 | - #include <pw3270/ipcpackets.h> | ||
| 38 | - | ||
| 39 | - #include "client.h" | ||
| 40 | - | ||
| 41 | -/*--[ Globals ]--------------------------------------------------------------------------------------*/ | ||
| 42 | - | ||
| 43 | -/*--[ Implement ]------------------------------------------------------------------------------------*/ | ||
| 44 | - | ||
| 45 | - void * hllapi_pipe_init(const char *id) | ||
| 46 | - { | ||
| 47 | - HANDLE hPipe = INVALID_HANDLE_VALUE; | ||
| 48 | - static DWORD dwMode = PIPE_READMODE_MESSAGE; | ||
| 49 | - char buffer[4096]; | ||
| 50 | - char * name = strdup(id); | ||
| 51 | - char * ptr; | ||
| 52 | - | ||
| 53 | - trace("%s(%s)",__FUNCTION__,id); | ||
| 54 | - | ||
| 55 | - for(ptr=name;*ptr;ptr++) | ||
| 56 | - { | ||
| 57 | - if(*ptr == ':') | ||
| 58 | - *ptr = '_'; | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - snprintf(buffer,4095,"\\\\.\\pipe\\%s",name); | ||
| 62 | - | ||
| 63 | - free(name); | ||
| 64 | - | ||
| 65 | - trace("Opening \"%s\"",buffer); | ||
| 66 | - | ||
| 67 | - if(!WaitNamedPipe(buffer,NMPWAIT_USE_DEFAULT_WAIT)) | ||
| 68 | - { | ||
| 69 | - trace("%s: Pipe not found",__FUNCTION__); | ||
| 70 | - errno = ENOENT; | ||
| 71 | - return NULL; | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - hPipe = CreateFile(buffer,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL); | ||
| 75 | - | ||
| 76 | - if(hPipe == INVALID_HANDLE_VALUE) | ||
| 77 | - { | ||
| 78 | - errno = GetLastError(); | ||
| 79 | - return NULL; | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - if(!SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL)) | ||
| 83 | - { | ||
| 84 | - errno = GetLastError(); | ||
| 85 | - return NULL; | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - trace("hPipe=%p",(void *) hPipe); | ||
| 89 | - return hPipe; | ||
| 90 | - } | ||
| 91 | - | ||
| 92 | - void hllapi_pipe_deinit(void *h) | ||
| 93 | - { | ||
| 94 | - trace("%s(%p)",__FUNCTION__,h); | ||
| 95 | - | ||
| 96 | - if(!h) | ||
| 97 | - return; | ||
| 98 | - | ||
| 99 | - CloseHandle((HANDLE) h); | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - const char * hllapi_pipe_get_revision(void) | ||
| 103 | - { | ||
| 104 | - return PACKAGE_REVISION; | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - int hllapi_pipe_connect(void *h, const char *n, int wait) | ||
| 108 | - { | ||
| 109 | - struct hllapi_packet_connect * pkt; | ||
| 110 | - struct hllapi_packet_result response; | ||
| 111 | - DWORD cbSize; | ||
| 112 | - | ||
| 113 | - if(!n) | ||
| 114 | - n = ""; | ||
| 115 | - | ||
| 116 | - cbSize = sizeof(struct hllapi_packet_connect)+strlen(n); | ||
| 117 | - pkt = malloc(cbSize); | ||
| 118 | - | ||
| 119 | - pkt->packet_id = HLLAPI_PACKET_CONNECT; | ||
| 120 | - pkt->wait = (unsigned char) wait; | ||
| 121 | - strcpy(pkt->hostname,n); | ||
| 122 | - | ||
| 123 | - trace("Sending %s",pkt->hostname); | ||
| 124 | - | ||
| 125 | - if(!TransactNamedPipe((HANDLE) h,(LPVOID) pkt, cbSize, &response, sizeof(response), &cbSize,NULL)) | ||
| 126 | - { | ||
| 127 | - errno = GetLastError(); | ||
| 128 | - response.rc = -1; | ||
| 129 | - } | ||
| 130 | - | ||
| 131 | - free(pkt); | ||
| 132 | - | ||
| 133 | - return response.rc; | ||
| 134 | - } | ||
| 135 | - | ||
| 136 | - void hllapi_pipe_disconnect(void *h) | ||
| 137 | - { | ||
| 138 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_DISCONNECT }; | ||
| 139 | - struct hllapi_packet_result response; | ||
| 140 | - DWORD cbSize = sizeof(query); | ||
| 141 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 142 | - } | ||
| 143 | - | ||
| 144 | - LIB3270_MESSAGE hllapi_pipe_get_message(void *h) | ||
| 145 | - { | ||
| 146 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_GET_PROGRAM_MESSAGE }; | ||
| 147 | - struct hllapi_packet_result response; | ||
| 148 | - DWORD cbSize = sizeof(query); | ||
| 149 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 150 | - return (LIB3270_MESSAGE) response.rc; | ||
| 151 | - } | ||
| 152 | - | ||
| 153 | - char * hllapi_pipe_get_text_at(void *h, int row, int col, int len) | ||
| 154 | - { | ||
| 155 | - struct hllapi_packet_query_at query = { HLLAPI_PACKET_GET_TEXT_AT, row, col, len }; | ||
| 156 | - struct hllapi_packet_text * response; | ||
| 157 | - DWORD cbSize = sizeof(struct hllapi_packet_text)+len; | ||
| 158 | - char * text = NULL; | ||
| 159 | - | ||
| 160 | - response = malloc(cbSize+2); | ||
| 161 | - memset(response,0,cbSize+2); | ||
| 162 | - | ||
| 163 | - if(!TransactNamedPipe((HANDLE) h,(LPVOID) &query, sizeof(struct hllapi_packet_query_at), &response, cbSize, &cbSize,NULL)) | ||
| 164 | - return NULL; | ||
| 165 | - | ||
| 166 | - if(response->packet_id) | ||
| 167 | - errno = response->packet_id; | ||
| 168 | - else | ||
| 169 | - text = strdup(response->text); | ||
| 170 | - | ||
| 171 | - free(response); | ||
| 172 | - return text; | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - int hllapi_pipe_enter(void *h) | ||
| 176 | - { | ||
| 177 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_ENTER }; | ||
| 178 | - struct hllapi_packet_result response; | ||
| 179 | - DWORD cbSize = sizeof(query); | ||
| 180 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 181 | - return response.rc; | ||
| 182 | - } | ||
| 183 | - | ||
| 184 | - int hllapi_pipe_erase_eof(void *h) | ||
| 185 | - { | ||
| 186 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_ERASE_EOF }; | ||
| 187 | - struct hllapi_packet_result response; | ||
| 188 | - DWORD cbSize = sizeof(query); | ||
| 189 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 190 | - return response.rc; | ||
| 191 | - } | ||
| 192 | - | ||
| 193 | - | ||
| 194 | - int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str) | ||
| 195 | - { | ||
| 196 | - struct hllapi_packet_text_at * query; | ||
| 197 | - struct hllapi_packet_result response; | ||
| 198 | - DWORD cbSize = sizeof(struct hllapi_packet_text_at)+strlen((const char *) str); | ||
| 199 | - | ||
| 200 | - query = malloc(cbSize); | ||
| 201 | - query->packet_id = HLLAPI_PACKET_SET_TEXT_AT; | ||
| 202 | - query->row = row; | ||
| 203 | - query->col = col; | ||
| 204 | - strcpy(query->text,(const char *) str); | ||
| 205 | - | ||
| 206 | - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 207 | - | ||
| 208 | - free(query); | ||
| 209 | - | ||
| 210 | - return response.rc; | ||
| 211 | - } | ||
| 212 | - | ||
| 213 | - int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text) | ||
| 214 | - { | ||
| 215 | - struct hllapi_packet_text_at * query; | ||
| 216 | - struct hllapi_packet_result response; | ||
| 217 | - DWORD cbSize = sizeof(struct hllapi_packet_text_at)+strlen(text); | ||
| 218 | - | ||
| 219 | - query = malloc(cbSize); | ||
| 220 | - query->packet_id = HLLAPI_PACKET_CMP_TEXT_AT; | ||
| 221 | - query->row = row; | ||
| 222 | - query->col = col; | ||
| 223 | - strcpy(query->text,text); | ||
| 224 | - | ||
| 225 | - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 226 | - | ||
| 227 | - free(query); | ||
| 228 | - | ||
| 229 | - return response.rc; | ||
| 230 | - } | ||
| 231 | - | ||
| 232 | - int hllapi_pipe_pfkey(void *h, int key) | ||
| 233 | - { | ||
| 234 | - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PFKEY, key }; | ||
| 235 | - struct hllapi_packet_result response; | ||
| 236 | - DWORD cbSize = sizeof(query); | ||
| 237 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 238 | - return response.rc; | ||
| 239 | - } | ||
| 240 | - | ||
| 241 | - int hllapi_pipe_pakey(void *h, int key) | ||
| 242 | - { | ||
| 243 | - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PAKEY, key }; | ||
| 244 | - struct hllapi_packet_result response; | ||
| 245 | - DWORD cbSize = sizeof(query); | ||
| 246 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 247 | - return response.rc; | ||
| 248 | - } | ||
| 249 | - | ||
| 250 | - void hllapi_pipe_release_memory(void *p) | ||
| 251 | - { | ||
| 252 | - free(p); | ||
| 253 | - } | ||
| 254 | - | ||
| 255 | - int hllapi_pipe_wait_for_ready(void *h, int seconds) | ||
| 256 | - { | ||
| 257 | - time_t end = time(0)+seconds; | ||
| 258 | - | ||
| 259 | - while(time(0) < end) | ||
| 260 | - { | ||
| 261 | - if(!hllapi_pipe_is_connected(h)) | ||
| 262 | - return ENOTCONN; | ||
| 263 | - | ||
| 264 | - if(hllapi_pipe_get_message(h) == 0) | ||
| 265 | - return 0; | ||
| 266 | - Sleep(250); | ||
| 267 | - } | ||
| 268 | - | ||
| 269 | - return ETIMEDOUT; | ||
| 270 | - } | ||
| 271 | - | ||
| 272 | - int hllapi_pipe_is_connected(void *h) | ||
| 273 | - { | ||
| 274 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_IS_CONNECTED }; | ||
| 275 | - struct hllapi_packet_result response; | ||
| 276 | - DWORD cbSize = sizeof(query); | ||
| 277 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 278 | - return (LIB3270_MESSAGE) response.rc; | ||
| 279 | - } | ||
| 280 | - | ||
| 281 | - int hllapi_pipe_sleep(void *h, int seconds) | ||
| 282 | - { | ||
| 283 | - time_t end = time(0)+seconds; | ||
| 284 | - | ||
| 285 | - while(time(0) < end) | ||
| 286 | - { | ||
| 287 | - if(!hllapi_pipe_is_connected(h)) | ||
| 288 | - return ENOTCONN; | ||
| 289 | - Sleep(500); | ||
| 290 | - } | ||
| 291 | - | ||
| 292 | - return 0; | ||
| 293 | - } | ||
| 294 | - | ||
| 295 | - int hllapi_pipe_getcursor(void *h) | ||
| 296 | - { | ||
| 297 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_GET_CURSOR }; | ||
| 298 | - struct hllapi_packet_result response; | ||
| 299 | - DWORD cbSize = sizeof(query); | ||
| 300 | - | ||
| 301 | - trace("%s",__FUNCTION__); | ||
| 302 | - | ||
| 303 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 304 | - return (LIB3270_MESSAGE) response.rc; | ||
| 305 | - | ||
| 306 | - } | ||
| 307 | - | ||
| 308 | - int hllapi_pipe_setcursor(void *h, int baddr) | ||
| 309 | - { | ||
| 310 | - struct hllapi_packet_addr query = { HLLAPI_PACKET_SET_CURSOR, baddr }; | ||
| 311 | - struct hllapi_packet_result response; | ||
| 312 | - DWORD cbSize = sizeof(query); | ||
| 313 | - | ||
| 314 | - trace("%s(%d)",__FUNCTION__,query.addr); | ||
| 315 | - | ||
| 316 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 317 | - return response.rc; | ||
| 318 | - } | ||
| 319 | - | ||
| 320 | - char * hllapi_pipe_get_text(void *h, int offset, int len) | ||
| 321 | - { | ||
| 322 | - struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, offset, len }; | ||
| 323 | - struct hllapi_packet_text * response; | ||
| 324 | - DWORD cbSize = sizeof(struct hllapi_packet_text)+len; | ||
| 325 | - char * text = NULL; | ||
| 326 | - | ||
| 327 | - trace("cbSize=%d",(int) cbSize); | ||
| 328 | - | ||
| 329 | - response = malloc(cbSize+2); | ||
| 330 | - memset(response,0,cbSize+2); | ||
| 331 | - | ||
| 332 | - if(!TransactNamedPipe((HANDLE) h,(LPVOID) &query, sizeof(query), response, cbSize, &cbSize,NULL)) | ||
| 333 | - return NULL; | ||
| 334 | - | ||
| 335 | - trace("rc=%d",response->packet_id); | ||
| 336 | - | ||
| 337 | - if(response->packet_id) | ||
| 338 | - errno = response->packet_id; | ||
| 339 | - else | ||
| 340 | - text = strdup(response->text); | ||
| 341 | - | ||
| 342 | - free(response); | ||
| 343 | - return text; | ||
| 344 | - } | ||
| 345 | - | ||
| 346 | - int hllapi_pipe_emulate_input(void *h, const char *text, int len, int pasting) | ||
| 347 | - { | ||
| 348 | - struct hllapi_packet_emulate_input * query; | ||
| 349 | - struct hllapi_packet_result response; | ||
| 350 | - DWORD cbSize = sizeof(struct hllapi_packet_emulate_input)+strlen(text); | ||
| 351 | - | ||
| 352 | - query = malloc(cbSize); | ||
| 353 | - query->packet_id = HLLAPI_PACKET_EMULATE_INPUT; | ||
| 354 | - query->len = len; | ||
| 355 | - query->pasting = pasting; | ||
| 356 | - strcpy(query->text,text); | ||
| 357 | - | ||
| 358 | - TransactNamedPipe((HANDLE) h,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 359 | - | ||
| 360 | - free(query); | ||
| 361 | - | ||
| 362 | - return response.rc; | ||
| 363 | - } | ||
| 364 | - | ||
| 365 | - int hllapi_pipe_print(void *h) | ||
| 366 | - { | ||
| 367 | - static const struct hllapi_packet_query query = { HLLAPI_PACKET_PRINT }; | ||
| 368 | - struct hllapi_packet_result response; | ||
| 369 | - DWORD cbSize = sizeof(query); | ||
| 370 | - TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | ||
| 371 | - return response.rc; | ||
| 372 | - } |
src/plugins/rx3270/Makefile.in
| @@ -61,26 +61,3 @@ $(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJ | @@ -61,26 +61,3 @@ $(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJ | ||
| 61 | @$(MKDIR) `dirname $@` | 61 | @$(MKDIR) `dirname $@` |
| 62 | @$(CXX) $(SYSDLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS) | 62 | @$(CXX) $(SYSDLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS) |
| 63 | 63 | ||
| 64 | -#---[ Release Targets ]-------------------------------------------------------- | ||
| 65 | - | ||
| 66 | -$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME) | ||
| 67 | - @echo " CCLD `basename $@`" | ||
| 68 | - @$(MKDIR) `dirname $@` | ||
| 69 | - $(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS) | ||
| 70 | - | ||
| 71 | -$(BINRLS)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS) | ||
| 72 | - @echo " CCLD `basename $@`" | ||
| 73 | - @$(MKDIR) `dirname $@` | ||
| 74 | - @$(CXX) $(SYSDLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS) | ||
| 75 | - | ||
| 76 | -install: | ||
| 77 | - @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugin | ||
| 78 | - @$(INSTALL_PROGRAM) $(BINRLS)/$(PLUGIN_NAME) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins | ||
| 79 | - | ||
| 80 | - @$(MKDIR) $(DESTDIR)$(REXXLIBDIR) | ||
| 81 | - @$(INSTALL_PROGRAM) $(BINRLS)$(DLL_NAME).$(VERSION) $(DESTDIR)$(REXXLIBDIR) | ||
| 82 | - @$(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) $(DESTDIR)$(REXXLIBDIR)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ | ||
| 83 | - | ||
| 84 | - @$(MKDIR) $(DESTDIR)$(REXX_HOME) | ||
| 85 | - @$(INSTALL_DATA) rx3270.cls $(DESTDIR)$(REXX_HOME) | ||
| 86 | - |