Commit 683c97daa4cbe930e7e331d0f7c67b21287be4ee

Authored by Perry Werneck
1 parent d1f2f1f2

Ajustes para empacotamento, remoção do plugin ooRexx movido para projeto separado.

@@ -91,6 +91,12 @@ $(BINRLS)/%@DLLEXT@: \ @@ -91,6 +91,12 @@ $(BINRLS)/%@DLLEXT@: \
91 91
92 @$(MAKE) -C src/$(basename $(notdir $@)) $@ 92 @$(MAKE) -C src/$(basename $(notdir $@)) $@
93 93
  94 +$(BINRLS)/%.a: \
  95 + $(DEPENDS) \
  96 + ./src/%/*
  97 +
  98 + @$(MAKE) -C src/$(basename $(notdir $@)) $@
  99 +
94 $(BINRLS)/plugins/%@DLLEXT@: \ 100 $(BINRLS)/plugins/%@DLLEXT@: \
95 $(DEPENDS) \ 101 $(DEPENDS) \
96 ./src/plugins/%/* 102 ./src/plugins/%/*
@@ -170,6 +176,7 @@ $(SRCDIR)/%: \ @@ -170,6 +176,7 @@ $(SRCDIR)/%: \
170 all: \ 176 all: \
171 $(BINRLS)/lib3270@DLLEXT@ \ 177 $(BINRLS)/lib3270@DLLEXT@ \
172 $(BINRLS)/$(PACKAGE_TARNAME)@EXEEXT@ \ 178 $(BINRLS)/$(PACKAGE_TARNAME)@EXEEXT@ \
  179 + $(BINRLS)/libpw3270cpp.a \
173 $(foreach PLG, $(PLUGINS), $(BINRLS)/plugins/$(PLG)@DLLEXT@) \ 180 $(foreach PLG, $(PLUGINS), $(BINRLS)/plugins/$(PLG)@DLLEXT@) \
174 locale/$(PACKAGE_TARNAME).pot 181 locale/$(PACKAGE_TARNAME).pot
175 182
@@ -190,10 +197,16 @@ locale/$(PACKAGE_TARNAME).pot: \ @@ -190,10 +197,16 @@ locale/$(PACKAGE_TARNAME).pot: \
190 @$(MSGCAT) --sort-output $^ > $@ 197 @$(MSGCAT) --sort-output $^ > $@
191 198
192 install: \ 199 install: \
  200 + install-lib \
  201 + install-app \
  202 + install-sdk \
  203 + $(foreach PLG, $(PLUGINS), $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)-plugins/$(PLG)@DLLEXT@)
  204 +
  205 +install-lib: \
193 $(DESTDIR)$(libdir)/lib3270@DLLEXT@ \ 206 $(DESTDIR)$(libdir)/lib3270@DLLEXT@ \
  207 +
  208 +install-app: \
194 $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)@EXEEXT@ \ 209 $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)@EXEEXT@ \
195 - $(DESTDIR)$(libdir)/libpw3270cpp.a \  
196 - $(foreach PLG, $(PLUGINS), $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)-plugins/$(PLG)@DLLEXT@) \  
197 locale/$(PACKAGE_TARNAME).pot 210 locale/$(PACKAGE_TARNAME).pot
198 211
199 @$(MKDIR) $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME) 212 @$(MKDIR) $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME)
@@ -201,7 +214,11 @@ install: \ @@ -201,7 +214,11 @@ install: \
201 214
202 @$(MAKE) -C ui install 215 @$(MAKE) -C ui install
203 @$(MAKE) -C locale install 216 @$(MAKE) -C locale install
  217 +
  218 +install-sdk:
  219 +
204 @$(MAKE) -C sdk install 220 @$(MAKE) -C sdk install
  221 + @$(MAKE) -C src/libpw3270cpp install
205 222
206 #---[ Debug targets ]---------------------------------------------------------- 223 #---[ Debug targets ]----------------------------------------------------------
207 224
debian/control
@@ -2,7 +2,7 @@ Source: pw3270 @@ -2,7 +2,7 @@ Source: pw3270
2 Section: unknown 2 Section: unknown
3 Priority: optional 3 Priority: optional
4 Maintainer: Perry Werneck <perry.werneck@gmail.com> 4 Maintainer: Perry Werneck <perry.werneck@gmail.com>
5 -Build-Depends: debhelper (>= 7), autotools-dev, autoconf, libgtk-3-dev, gettext, libssl-dev, desktop-file-utils, libdbus-glib-1-dev, libssl-dev, xsltproc, librsvg2-bin, oorexx-dev, zip, libreoffice-common, libreoffice-core, libreoffice-dev, uno-libs3, ure 5 +Build-Depends: debhelper (>= 7), autotools-dev, autoconf, libgtk-3-dev, gettext, libssl-dev, desktop-file-utils, libdbus-glib-1-dev, libssl-dev, xsltproc, librsvg2-bin
6 6
7 Package: pw3270 7 Package: pw3270
8 Architecture: any 8 Architecture: any
@@ -25,21 +25,16 @@ Depends: ${misc:Depends}, lib3270 (= ${binary:Version}) @@ -25,21 +25,16 @@ Depends: ${misc:Depends}, lib3270 (= ${binary:Version})
25 Description: lib3270 development files. 25 Description: lib3270 development files.
26 This package contains the files needed for development of lib3270 based applications 26 This package contains the files needed for development of lib3270 based applications
27 27
  28 +Package: pw3270-dev
  29 +Architecture: any
  30 +Section: libdevel
  31 +Depends: ${misc:Depends}, lib3270-dev (= ${binary:Version}), pw3270 (= ${binary:Version})
  32 +Description: lib3270 development files.
  33 + This package contains the files needed for development of pw3270 extensions and plugins
  34 +
28 Package: pw3270-plugin-dbus 35 Package: pw3270-plugin-dbus
29 Architecture: any 36 Architecture: any
30 Depends: ${misc:Depends}, pw3270 (= ${binary:Version}), libdbus-1-3 37 Depends: ${misc:Depends}, pw3270 (= ${binary:Version}), libdbus-1-3
31 Description: DBUS plugin for pw3270. 38 Description: DBUS plugin for pw3270.
32 This package contains the plugin allowing scripting of a pw3270 session using dbus calls. 39 This package contains the plugin allowing scripting of a pw3270 session using dbus calls.
33 40
34 -Package: pw3270-plugin-rexx  
35 -Architecture: any  
36 -Depends: ${misc:Depends}, lib3270 (= ${binary:Version}), oorexx (>= 4.1.2)  
37 -Description: REXX script support for pw3270.  
38 - This package provides Rexx class and associated libraries allowing rexx scripts to access tn3270e hosts.  
39 -  
40 -Package: libreoffice-extension-pw3270  
41 -Architecture: any  
42 -Depends: ${misc:Depends}, pw3270 (= ${binary:Version}), libreoffice-core  
43 -Description: DBUS plugin for pw3270.  
44 - This package contains the libreoffice modules for acessing 3270 hosts.  
45 -  
@@ -8,10 +8,6 @@ export DH_VERBOSE=1 @@ -8,10 +8,6 @@ export DH_VERBOSE=1
8 # This is the debhelper compatibility version to use. 8 # This is the debhelper compatibility version to use.
9 export DH_COMPAT=4 9 export DH_COMPAT=4
10 10
11 -# Libreoffice stuff  
12 -export OFFICE_HOME=/usr/lib/libreoffice  
13 -export OO_SDK_URE_HOME=/usr/lib/ure  
14 -  
15 CFLAGS = -g 11 CFLAGS = -g
16 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) 12 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
17 CFLAGS += -O0 13 CFLAGS += -O0
@@ -50,40 +46,37 @@ install: build @@ -50,40 +46,37 @@ install: build
50 dh_clean -k 46 dh_clean -k
51 dh_installdirs 47 dh_installdirs
52 48
  49 + # Build package
  50 + make all
  51 +
53 # Install main library 52 # Install main library
54 make DESTDIR=$(PWD)/debian/lib3270 install-lib 53 make DESTDIR=$(PWD)/debian/lib3270 install-lib
55 54
56 # Install pw3270's GUI 55 # Install pw3270's GUI
57 make DESTDIR=$(PWD)/debian/pw3270 install-app 56 make DESTDIR=$(PWD)/debian/pw3270 install-app
58 57
59 - # Install sdk  
60 - make DESTDIR=$(PWD)/debian/lib3270-dev install-sdk 58 + # Install lib3270-sdk
  59 + make DESTDIR=$(PWD)/debian/lib3270-dev -C sdk install-lib3270
61 60
62 - mkdir -p $(PWD)/debian/lib3270-dev/usr/share/pw3270/ui  
63 - mv -f $(PWD)/debian/pw3270/usr/share/pw3270/ui/*debug.xml $(PWD)/debian/lib3270-dev/usr/share/pw3270/ui/ 61 + # Install pw3270-sdk
  62 + make DESTDIR=$(PWD)/debian/pw3270-dev -C sdk install-pw3270
  63 + make DESTDIR=$(PWD)/debian/pw3270-dev -C src/libpw3270cpp install
64 64
65 - # Install libreoffice extension  
66 - make DESTDIR=$(PWD)/debian/libreoffice-extension-pw3270 install-oxt 65 + mkdir -p $(PWD)/debian/lib3270-dev/lib3270
  66 + install --mode=644 src/include/lib3270.h $(PWD)/debian/lib3270-dev
  67 + install --mode=644 src/include/lib3270/*.h $(PWD)/debian/lib3270-dev/lib3270
67 68
68 - # Install DBUS plugin  
69 - make DESTDIR=$(PWD)/debian/pw3270-plugin-dbus install-plugin-dbus 69 + # Move SDK's ui files
70 70
71 - # Install REXX plugin  
72 - make DESTDIR=$(PWD)/debian/pw3270-plugin-rexx install-plugin-rexx 71 + # Install DBUS plugin
  72 + make DESTDIR=$(PWD)/debian/pw3270-plugin-dbus -C src/plugins/dbus3270/ install
73 73
74 - mkdir -p $(PWD)/debian/pw3270-plugin-rexx/usr/share/pw3270/ui/  
75 - mv -f $(PWD)/debian/pw3270/usr/share/pw3270/ui/*rexx.xml $(PWD)/debian/pw3270-plugin-rexx/usr/share/pw3270/ui/  
76 -  
77 - # Create updated file lists 74 + # Get file lists
78 find $(PWD)/debian/lib3270 -type f | sed -e "s@^$(PWD)/debian/lib3270/@/@g" > $(PWD)/debian/lib3270.install 75 find $(PWD)/debian/lib3270 -type f | sed -e "s@^$(PWD)/debian/lib3270/@/@g" > $(PWD)/debian/lib3270.install
79 -  
80 find $(PWD)/debian/pw3270 -type f | sed -e "s@^$(PWD)/debian/pw3270/@/@g" > $(PWD)/debian/pw3270.install 76 find $(PWD)/debian/pw3270 -type f | sed -e "s@^$(PWD)/debian/pw3270/@/@g" > $(PWD)/debian/pw3270.install
81 -  
82 - find $(PWD)/debian/libreoffice-extension-pw3270 -type f | sed -e "s@^$(PWD)/debian/libreoffice-extension-pw3270/@/@g" > $(PWD)/debian/libreoffice-extension-pw3270.install  
83 -  
84 find $(PWD)/debian/pw3270-plugin-dbus -type f | sed -e "s@^$(PWD)/debian/pw3270-plugin-dbus/@/@g" > $(PWD)/debian/pw3270-plugin-dbus.install 77 find $(PWD)/debian/pw3270-plugin-dbus -type f | sed -e "s@^$(PWD)/debian/pw3270-plugin-dbus/@/@g" > $(PWD)/debian/pw3270-plugin-dbus.install
85 - find $(PWD)/debian/pw3270-plugin-rexx -type f | sed -e "s@^$(PWD)/debian/pw3270-plugin-rexx/@/@g" > $(PWD)/debian/pw3270-plugin-rexx.install  
86 - 78 + find $(PWD)/debian/lib3270-dev -type f | sed -e "s@^$(PWD)/debian/lib3270-dev/@/@g" > $(PWD)/debian/lib3270-dev.install
  79 + find $(PWD)/debian/pw3270-dev -type f | sed -e "s@^$(PWD)/debian/pw3270-dev/@/@g" > $(PWD)/debian/pw3270-dev.install
87 # --- end custom part for installing 80 # --- end custom part for installing
88 81
89 # Build architecture-independent files here. 82 # Build architecture-independent files here.
locale/Makefile.in
1 # 1 #
2 -# "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 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 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. 4 # aplicativos mainframe. Registro no INPI sob o nome G3270.
5 # 5 #
@@ -15,13 +15,13 @@ @@ -15,13 +15,13 @@
15 # obter mais detalhes. 15 # obter mais detalhes.
16 # 16 #
17 # Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este 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 18 +# programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 +# St, Fifth Floor, Boston, MA 02110-1301 USA
20 # 20 #
21 # Contatos: 21 # Contatos:
22 # 22 #
23 -# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
24 -# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) 23 +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  24 +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
25 # 25 #
26 26
27 27
locale/pw3270.pot
@@ -9,7 +9,7 @@ msgstr &quot;&quot; @@ -9,7 +9,7 @@ msgstr &quot;&quot;
9 "#-#-#-#-# lib3270.pot (PACKAGE VERSION) #-#-#-#-#\n" 9 "#-#-#-#-# lib3270.pot (PACKAGE VERSION) #-#-#-#-#\n"
10 "Project-Id-Version: PACKAGE VERSION\n" 10 "Project-Id-Version: PACKAGE VERSION\n"
11 "Report-Msgid-Bugs-To: \n" 11 "Report-Msgid-Bugs-To: \n"
12 -"POT-Creation-Date: 2017-01-19 11:07-0200\n" 12 +"POT-Creation-Date: 2017-01-19 15:24-0200\n"
13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15 "Language-Team: LANGUAGE <LL@li.org>\n" 15 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,7 +20,7 @@ msgstr &quot;&quot; @@ -20,7 +20,7 @@ msgstr &quot;&quot;
20 "#-#-#-#-# pw3270.pot (PACKAGE VERSION) #-#-#-#-#\n" 20 "#-#-#-#-# pw3270.pot (PACKAGE VERSION) #-#-#-#-#\n"
21 "Project-Id-Version: PACKAGE VERSION\n" 21 "Project-Id-Version: PACKAGE VERSION\n"
22 "Report-Msgid-Bugs-To: \n" 22 "Report-Msgid-Bugs-To: \n"
23 -"POT-Creation-Date: 2017-01-19 11:07-0200\n" 23 +"POT-Creation-Date: 2017-01-19 15:24-0200\n"
24 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 24 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
25 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 25 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
26 "Language-Team: LANGUAGE <LL@li.org>\n" 26 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -42,7 +42,7 @@ msgstr &quot;&quot; @@ -42,7 +42,7 @@ msgstr &quot;&quot;
42 "#-#-#-#-# dbus3270.pot (PACKAGE VERSION) #-#-#-#-#\n" 42 "#-#-#-#-# dbus3270.pot (PACKAGE VERSION) #-#-#-#-#\n"
43 "Project-Id-Version: PACKAGE VERSION\n" 43 "Project-Id-Version: PACKAGE VERSION\n"
44 "Report-Msgid-Bugs-To: \n" 44 "Report-Msgid-Bugs-To: \n"
45 -"POT-Creation-Date: 2017-01-19 11:07-0200\n" 45 +"POT-Creation-Date: 2017-01-19 15:24-0200\n"
46 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 46 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
47 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 47 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
48 "Language-Team: LANGUAGE <LL@li.org>\n" 48 "Language-Team: LANGUAGE <LL@li.org>\n"
rpm/pw3270.spec
@@ -41,11 +41,8 @@ Source: pw3270-%{version}.tar.bz2 @@ -41,11 +41,8 @@ Source: pw3270-%{version}.tar.bz2
41 41
42 BuildRoot: %{_tmppath}/%{name}-%{version}-build 42 BuildRoot: %{_tmppath}/%{name}-%{version}-build
43 43
44 -Requires: lib3270-%{_libvrs} = %{version}  
45 Requires: shared-mime-info 44 Requires: shared-mime-info
46 45
47 -Requires: libpw3270-%{MAJOR_VERSION}_%{MINOR_VERSION}  
48 -  
49 #--[ Setup by distribution ]------------------------------------------------------------------------------------------ 46 #--[ Setup by distribution ]------------------------------------------------------------------------------------------
50 # 47 #
51 # References: 48 # References:
@@ -154,7 +151,7 @@ This package contains the tn3270 protocol library for %{name} @@ -154,7 +151,7 @@ This package contains the tn3270 protocol library for %{name}
154 Summary: Devel for 3270 Communication library for %{name} 151 Summary: Devel for 3270 Communication library for %{name}
155 Group: Development/Libraries/C and C++ 152 Group: Development/Libraries/C and C++
156 Provides: lib3270-devel-%{MAJOR_VERSION}_%{MINOR_VERSION} 153 Provides: lib3270-devel-%{MAJOR_VERSION}_%{MINOR_VERSION}
157 -Requires: lib3270-%{MAJOR_VERSION}_%{MINOR_VERSION} 154 +Requires: lib3270-%{MAJOR_VERSION}_%{MINOR_VERSION} = %{version}
158 155
159 %description -n lib3270-devel 156 %description -n lib3270-devel
160 Open-source GTK-based IBM 3270 terminal emulator with many advanced features. It can be used to communicate with any IBM host that supports 3270-style connections over TELNET. 157 Open-source GTK-based IBM 3270 terminal emulator with many advanced features. It can be used to communicate with any IBM host that supports 3270-style connections over TELNET.
@@ -163,8 +160,8 @@ This package contains the development files for tn3270 protocol library for %{na @@ -163,8 +160,8 @@ This package contains the development files for tn3270 protocol library for %{na
163 %package -n %{name}-devel 160 %package -n %{name}-devel
164 Summary: Files required for development of %{name} plugins 161 Summary: Files required for development of %{name} plugins
165 Group: Development/Libraries/C and C++ 162 Group: Development/Libraries/C and C++
166 -Requires: lib3270-devel-%{MAJOR_VERSION}_%{MINOR_VERSION}  
167 -Requires: libpw3270-%{MAJOR_VERSION}_%{MINOR_VERSION} 163 +Requires: lib3270-devel-%{MAJOR_VERSION}_%{MINOR_VERSION} = %{version}
  164 +Requires: libpw3270-%{MAJOR_VERSION}_%{MINOR_VERSION} = %{version}
168 165
169 %description -n %{name}-devel 166 %description -n %{name}-devel
170 Open-source GTK-based IBM 3270 terminal emulator with many advanced features. It can be used to communicate with any IBM host that supports 3270-style connections over TELNET. 167 Open-source GTK-based IBM 3270 terminal emulator with many advanced features. It can be used to communicate with any IBM host that supports 3270-style connections over TELNET.
sdk/Makefile.in
@@ -67,14 +67,20 @@ $(SRCDIR)/src/include/%.h: \ @@ -67,14 +67,20 @@ $(SRCDIR)/src/include/%.h: \
67 #---[ Targets ]-------------------------------------------------------------------------- 67 #---[ Targets ]--------------------------------------------------------------------------
68 68
69 install: \ 69 install: \
70 - $(foreach SRC, $(basename $(wildcard *.pc)), $(DESTDIR)$(libdir)/pkgconfig/$(SRC).pc) \ 70 + install-lib3270 \
  71 + install-pw3270
  72 +
  73 +install-lib3270: \
71 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/lib3270/*.h)), $(DESTDIR)$(includedir)/lib3270/$(SRC)) \ 74 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/lib3270/*.h)), $(DESTDIR)$(includedir)/lib3270/$(SRC)) \
72 - $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(DESTDIR)$(includedir)/pw3270/$(SRC)) \ 75 + $(DESTDIR)$(libdir)/pkgconfig/lib3270.pc \
73 $(DESTDIR)$(includedir)/lib3270.h \ 76 $(DESTDIR)$(includedir)/lib3270.h \
  77 +
  78 +install-pw3270: \
  79 + $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(DESTDIR)$(includedir)/pw3270/$(SRC)) \
  80 + $(DESTDIR)$(libdir)/pkgconfig/pw3270.pc \
74 $(DESTDIR)$(includedir)/pw3270.h \ 81 $(DESTDIR)$(includedir)/pw3270.h \
75 $(DESTDIR)$(includedir)/pw3270cpp.h \ 82 $(DESTDIR)$(includedir)/pw3270cpp.h \
76 83
77 -  
78 $(SRCDIR)/sdk: \ 84 $(SRCDIR)/sdk: \
79 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/lib3270/*.h)), $(SRCDIR)/src/include/lib3270/$(SRC)) \ 85 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/lib3270/*.h)), $(SRCDIR)/src/include/lib3270/$(SRC)) \
80 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(SRCDIR)/src/include/pw3270/$(SRC)) \ 86 $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(SRCDIR)/src/include/pw3270/$(SRC)) \
src/include/pw3270/ipcpackets.h
@@ -15,10 +15,10 @@ @@ -15,10 +15,10 @@
15 * obter mais detalhes. 15 * obter mais detalhes.
16 * 16 *
17 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este 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 18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
20 * 20 *
21 - * Este programa está nomeado como ipcpackets.h e possui - linhas de código. 21 + * Este programa está nomeado como lib3270.h e possui - linhas de código.
22 * 22 *
23 * Contatos: 23 * Contatos:
24 * 24 *
src/libpw3270cpp/Makefile.in
@@ -102,20 +102,23 @@ $(POTDIR)/%.pot: %.c @@ -102,20 +102,23 @@ $(POTDIR)/%.pot: %.c
102 102
103 #---[ Release Targets ]------------------------------------------------------------------ 103 #---[ Release Targets ]------------------------------------------------------------------
104 104
  105 +all: \
  106 + $(BASEDIR)/.bin/Release/$(MODULE_NAME).a
  107 +
105 Release: \ 108 Release: \
106 - $(BASEDIR)/.obj/Release/$(MODULE_NAME).a 109 + $(BASEDIR)/.bin/Release/$(MODULE_NAME).a
107 110
108 install: \ 111 install: \
109 $(DESTDIR)$(libdir)/$(MODULE_NAME).a 112 $(DESTDIR)$(libdir)/$(MODULE_NAME).a
110 113
111 $(DESTDIR)$(libdir)/$(MODULE_NAME).a: \ 114 $(DESTDIR)$(libdir)/$(MODULE_NAME).a: \
112 - $(BASEDIR)/.obj/Release/$(MODULE_NAME).a 115 + $(BASEDIR)/.bin/Release/$(MODULE_NAME).a
113 116
114 @echo $@ ... 117 @echo $@ ...
115 @$(MKDIR) `dirname $@` 118 @$(MKDIR) `dirname $@`
116 - @$(INSTALL_PROGRAM) $^ $@ 119 + @$(INSTALL_DATA) $^ $@
117 120
118 -$(BASEDIR)/.obj/Release/$(MODULE_NAME).a: \ 121 +$(BASEDIR)/.bin/Release/$(MODULE_NAME).a: \
119 $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) 122 $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)
120 123
121 @echo $@ ... 124 @echo $@ ...
src/plugins/dbus3270/Makefile.in
@@ -62,6 +62,7 @@ XGETTEXT=@XGETTEXT@ @@ -62,6 +62,7 @@ XGETTEXT=@XGETTEXT@
62 MSGCAT=@MSGCAT@ 62 MSGCAT=@MSGCAT@
63 INSTALL=@INSTALL@ 63 INSTALL=@INSTALL@
64 INSTALL_DATA=@INSTALL_DATA@ 64 INSTALL_DATA=@INSTALL_DATA@
  65 +INSTALL_PROGRAM=@INSTALL_PROGRAM@
65 66
66 CFLAGS=@CFLAGS@ @GTK_CFLAGS@ -I$(BASEDIR)/src/include 67 CFLAGS=@CFLAGS@ @GTK_CFLAGS@ -I$(BASEDIR)/src/include
67 LIBS=@LIBS@ @GTK_LIBS@ @GLIB_LIBS@ @GDBUS_LIBS@ @LIB3270_LIBS@ @PW3270_LIBS@ 68 LIBS=@LIBS@ @GTK_LIBS@ @GLIB_LIBS@ @GDBUS_LIBS@ @LIB3270_LIBS@ @PW3270_LIBS@
@@ -122,18 +123,22 @@ dbus-glue.h: \ @@ -122,18 +123,22 @@ dbus-glue.h: \
122 Release: \ 123 Release: \
123 $(BINRLS)/$(MODULE_NAME)@DLLEXT@ 124 $(BINRLS)/$(MODULE_NAME)@DLLEXT@
124 125
125 -$(BINRLS)/$(MODULE_NAME)@DLLEXT@: \  
126 - $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) 126 +install: \
  127 + $(BINRLS)/$(MODULE_NAME)@DLLEXT@
127 128
128 @echo $@ ... 129 @echo $@ ...
129 @$(MKDIR) `dirname $@` 130 @$(MKDIR) `dirname $@`
130 - @$(LD) \  
131 - -shared \  
132 - -L$(BASEDIR)/.bin/Release \  
133 - -o $@ $^ \  
134 - $(LIBS) 131 + $(INSTALL_PROGRAM) $(BINRLS)/$(MODULE_NAME)@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)-plugins/$(MODULE_NAME)@DLLEXT@
135 132
136 $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)-plugins/$(MODULE_NAME)@DLLEXT@: \ 133 $(DESTDIR)$(libdir)/$(PACKAGE_TARNAME)-plugins/$(MODULE_NAME)@DLLEXT@: \
  134 + $(BINRLS)/$(MODULE_NAME)@DLLEXT@
  135 +
  136 + @echo $@ ...
  137 + @$(MKDIR) `dirname $@`
  138 + $(INSTALL_PROGRAM) $(BINRLS)/$(MODULE_NAME)@DLLEXT@ $@
  139 +
  140 +
  141 +$(BINRLS)/$(MODULE_NAME)@DLLEXT@: \
137 $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) 142 $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)
138 143
139 @echo $@ ... 144 @echo $@ ...
src/plugins/rx3270/Makefile.in
@@ -1,89 +0,0 @@ @@ -1,89 +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 -# Contatos:  
22 -#  
23 -# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
24 -# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)  
25 -#  
26 -  
27 -#---[ Sources ]----------------------------------------------------------------  
28 -  
29 -MODULE_NAME=rx3270  
30 -DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile  
31 -PLUGIN_SRC=pluginmain.cc  
32 -EXTAPI_SRC=rxapimain.cc typed_routines.cc rexx_methods.cc  
33 -  
34 -#---[ Tools ]------------------------------------------------------------------  
35 -  
36 -REXXCONFIG=@REXXCONFIG@  
37 -LN_S=@LN_S@  
38 -  
39 -#---[ Include plugin rules ]---------------------------------------------------  
40 -  
41 -CLASSLIBDIR=../../classlib  
42 -  
43 -include ../../include/plugin.mak  
44 -include $(CLASSLIBDIR)/class.mak  
45 -  
46 -LIBS=@REXX_LIBS@ @LIBICONV@ @DBUS_LIBS@  
47 -  
48 -REXX_CFLAGS=@REXX_CFLAGS@  
49 -DBUS_CFLAGS=@DBUS_CFLAGS@  
50 -  
51 -CFLAGS=@CFLAGS@ $(REXX_CFLAGS) $(DBUS_CFLAGS)  
52 -REXX_HOME=@REXX_HOME@  
53 -REXXLIBDIR=@REXX_LIBDIR@  
54 -  
55 -#---[ Debug Targets ]----------------------------------------------------------  
56 -  
57 -$(BINDBG)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) $(BINDBG)$(DLL_NAME)  
58 - @echo " CCLD `basename $@`"  
59 - @$(MKDIR) `dirname $@`  
60 - @$(CXX) $(DLL_FLAGS) @LDSOFLAGS@ @DBGRPATH@ $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS)  
61 -  
62 -$(BINDBG)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJDBG)/$(SRC)@OBJEXT@) $(CLASS_DEBUG_OBJECTS)  
63 - @echo " CCLD `basename $@`"  
64 - @$(MKDIR) `dirname $@`  
65 - @$(CXX) $(DLL_FLAGS) $(LDFLAGS) @LDSOFLAGS@ @DBGRPATH@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS)  
66 -  
67 -#---[ Release Targets ]--------------------------------------------------------  
68 -  
69 -$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME)  
70 - @echo " CCLD `basename $@`"  
71 - @$(MKDIR) `dirname $@`  
72 - @$(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(PW3270_LIBS)  
73 -  
74 -$(BINRLS)$(DLL_NAME).$(VERSION): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) $(CLASS_RELEASE_OBJECTS)  
75 - @echo " CCLD `basename $@`"  
76 - @$(MKDIR) `dirname $@`  
77 - @$(CXX) $(DLL_FLAGS) @LDSOFLAGS@ $(LDFLAGS) @RLS_LDFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS) $(CLASS_LIBS)  
78 -  
79 -install:  
80 - @$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins  
81 - @$(INSTALL_PROGRAM) $(BINRLS)/$(PLUGIN_NAME) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins  
82 -  
83 - @$(MKDIR) $(DESTDIR)$(REXXLIBDIR)  
84 - @$(INSTALL_PROGRAM) $(BINRLS)$(DLL_NAME).$(VERSION) $(DESTDIR)$(REXXLIBDIR)  
85 - @$(LN_S) @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.$(VERSION) $(DESTDIR)$(REXXLIBDIR)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@  
86 -  
87 - @$(MKDIR) $(DESTDIR)$(REXX_HOME)  
88 - @$(INSTALL_DATA) rx3270.cls $(DESTDIR)$(REXX_HOME)  
89 -  
src/plugins/rx3270/pluginmain.cc
@@ -1,419 +0,0 @@ @@ -1,419 +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 pluginmain.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 - * Referencias:  
29 - *  
30 - * * http://www.oorexx.org/docs/rexxpg/x14097.htm  
31 - * * http://www.oorexx.org/docs/rexxpg/c2539.htm  
32 - *  
33 - */  
34 -  
35 - #define ENABLE_NLS  
36 - #define GETTEXT_PACKAGE PACKAGE_NAME  
37 -  
38 - #include "rx3270.h"  
39 -  
40 - #include <libintl.h>  
41 - #include <glib/gi18n.h>  
42 - #include <gtk/gtk.h>  
43 -  
44 - #include <string.h>  
45 - #include <pw3270.h>  
46 - #include <pw3270/plugin.h>  
47 - #include <v3270.h>  
48 - #include <pw3270/trace.h>  
49 - #include <lib3270/actions.h>  
50 - #include <lib3270/log.h>  
51 - #include <lib3270/trace.h>  
52 - #include <lib3270/charset.h>  
53 - #include <pw3270/class.h>  
54 -  
55 -  
56 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
57 -  
58 -#if GTK_CHECK_VERSION(2,32,0)  
59 - static GMutex mutex;  
60 -#else  
61 - static GStaticMutex mutex = G_STATIC_MUTEX_INIT;  
62 -#endif // GTK_CHECK_VERSION  
63 -  
64 - static gchar * script_name = NULL;  
65 -  
66 -/*--[ Rexx application data block ]--------------------------------------------------------------------------*/  
67 -  
68 - struct rexx_application_data  
69 - {  
70 - GtkAction * action;  
71 - GtkWidget * widget;  
72 - GtkWidget * trace;  
73 - const gchar * filename;  
74 - };  
75 -  
76 -/*--[ Plugin session object ]--------------------------------------------------------------------------------*/  
77 -  
78 - using namespace std;  
79 - using namespace PW3270_NAMESPACE;  
80 -  
81 -  
82 -/*--[ Running rexx scripts ]---------------------------------------------------------------------------------*/  
83 -  
84 - static void trace_cleanup(GtkWidget *widget, gpointer dunno)  
85 - {  
86 - rexx_application_data *data = (rexx_application_data *) g_object_get_data(G_OBJECT(widget),"rexx_app_data");  
87 -  
88 - trace("%s: data=%p",__FUNCTION__,data);  
89 -  
90 - if(data)  
91 - data->trace = NULL;  
92 -  
93 - }  
94 -  
95 - static GtkWidget * get_trace_window(rexx_application_data *data)  
96 - {  
97 - if(data->trace)  
98 - return data->trace;  
99 -  
100 - data->trace = pw3270_trace_new();  
101 - g_signal_connect(G_OBJECT(data->trace), "destroy",G_CALLBACK(trace_cleanup), NULL);  
102 -  
103 - pw3270_trace_set_destroy_on_close(data->trace,TRUE);  
104 -  
105 - g_object_set_data(G_OBJECT(data->trace),"rexx_app_data",data);  
106 -  
107 - gtk_window_set_title(GTK_WINDOW(data->trace),_("Rexx trace"));  
108 -  
109 - gtk_window_set_transient_for(GTK_WINDOW(data->trace),GTK_WINDOW(gtk_widget_get_toplevel(data->widget)));  
110 - gtk_window_set_destroy_with_parent(GTK_WINDOW(data->trace),TRUE);  
111 -  
112 -  
113 - gtk_window_set_default_size(GTK_WINDOW(data->trace),590,430);  
114 - gtk_widget_show_all(data->trace);  
115 - return data->trace;  
116 - }  
117 -  
118 - static void read_line(struct rexx_application_data *data, PRXSTRING Retstr)  
119 - {  
120 - gchar *value = pw3270_trace_get_command(get_trace_window(data));  
121 -  
122 - if(value)  
123 - {  
124 - if(strlen(value) > (RXAUTOBUFLEN-1))  
125 - {  
126 - Retstr->strptr = (char *) RexxAllocateMemory(strlen(value)+1);  
127 - strcpy(Retstr->strptr,value);  
128 - }  
129 - else  
130 - {  
131 - g_snprintf(Retstr->strptr,RXAUTOBUFLEN-1,"%s",value);  
132 - }  
133 - g_free(value);  
134 - }  
135 - else  
136 - {  
137 - *Retstr->strptr = 0;  
138 - }  
139 -  
140 - Retstr->strlength = strlen(Retstr->strptr);  
141 -  
142 - }  
143 -  
144 - static int REXXENTRY Rexx_IO_exit(RexxExitContext *context, int exitnumber, int subfunction, PEXIT parmBlock)  
145 - {  
146 -// trace("%s call with ExitNumber: %d Subfunction: %d",__FUNCTION__,(int) exitnumber, (int) subfunction);  
147 -  
148 - switch(subfunction)  
149 - {  
150 - case RXSIOSAY: // SAY a line to STDOUT  
151 - {  
152 - struct rexx_application_data *data = (struct rexx_application_data *) context->GetApplicationData();  
153 -  
154 - GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(data->widget)),  
155 - GTK_DIALOG_DESTROY_WITH_PARENT,  
156 - GTK_MESSAGE_INFO,  
157 - GTK_BUTTONS_OK_CANCEL,  
158 - "%s", (((RXSIOSAY_PARM *) parmBlock)->rxsio_string).strptr );  
159 -  
160 - gtk_window_set_title(GTK_WINDOW(dialog), _( "Script message" ) );  
161 -  
162 - if(data->trace)  
163 - pw3270_trace_printf(data->trace,"%s\n",(((RXSIOSAY_PARM *) parmBlock)->rxsio_string).strptr);  
164 -  
165 - if(gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL)  
166 - context->RaiseException0(Rexx_Error_Program_interrupted);  
167 -  
168 - gtk_widget_destroy(dialog);  
169 - }  
170 - break;  
171 -  
172 - case RXSIOTRC: // Trace output  
173 - {  
174 - struct rexx_application_data *data = (struct rexx_application_data *) context->GetApplicationData();  
175 - lib3270_write_log(NULL, "rx3270", "%s", (((RXSIOTRC_PARM *) parmBlock)->rxsio_string).strptr);  
176 - pw3270_trace_printf(get_trace_window(data),"%s\n",(((RXSIOTRC_PARM *) parmBlock)->rxsio_string).strptr);  
177 - }  
178 - break;  
179 -  
180 - case RXSIOTRD: // Read from char stream  
181 - read_line((struct rexx_application_data *) context->GetApplicationData(), & (((RXSIODTR_PARM *) parmBlock)->rxsiodtr_retc) );  
182 - break;  
183 -  
184 - case RXSIODTR: // DEBUG read from char stream  
185 - read_line((struct rexx_application_data *) context->GetApplicationData(), & (((RXSIODTR_PARM *) parmBlock)->rxsiodtr_retc) );  
186 - break;  
187 -  
188 - default:  
189 - return RXEXIT_NOT_HANDLED;  
190 -  
191 - }  
192 -  
193 - return RXEXIT_HANDLED;  
194 - }  
195 -  
196 - static void call_rexx_script(GtkAction *action, GtkWidget *widget, const gchar *filename)  
197 - {  
198 - const gchar * args = (const gchar *) g_object_get_data(G_OBJECT(action),"args");  
199 -  
200 - struct rexx_application_data appdata;  
201 -  
202 - RexxInstance * instance;  
203 - RexxThreadContext * threadContext;  
204 - RexxOption options[25];  
205 - RexxContextExit exits[2];  
206 -  
207 - memset(&appdata,0,sizeof(appdata));  
208 - appdata.action = action;  
209 - appdata.widget = widget;  
210 - appdata.filename = filename;  
211 -  
212 - memset(options,0,sizeof(options));  
213 - memset(exits,0,sizeof(exits));  
214 -  
215 - exits[0].sysexit_code = RXSIO;  
216 - exits[0].handler = Rexx_IO_exit;  
217 -  
218 - // http://www.oorexx.org/docs/rexxpg/c2539.htm  
219 -  
220 - options[0].optionName = DIRECT_EXITS;  
221 - options[0].option = (void *) exits;  
222 -  
223 - options[1].optionName = APPLICATION_DATA;  
224 - options[1].option = (void *) &appdata;  
225 -  
226 - rx3270_set_package_option(&options[2]);  
227 -  
228 - options[3].optionName = EXTERNAL_CALL_PATH;  
229 - options[3].option = pw3270_get_datadir(NULL);  
230 -  
231 - trace("Rexxdir: \"%s\"",(gchar *) ((void *) options[3].option));  
232 -  
233 - if(!RexxCreateInterpreter(&instance, &threadContext, options))  
234 - {  
235 - GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)),  
236 - GTK_DIALOG_DESTROY_WITH_PARENT,  
237 - GTK_MESSAGE_ERROR,  
238 - GTK_BUTTONS_CANCEL,  
239 - _( "Can't start %s script" ), "rexx" );  
240 -  
241 - gtk_window_set_title(GTK_WINDOW(dialog),_( "Rexx error" ));  
242 - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),_( "Can't create %s interpreter instance" ), "rexx");  
243 -  
244 - gtk_dialog_run(GTK_DIALOG (dialog));  
245 - gtk_widget_destroy(dialog);  
246 - }  
247 - else  
248 - {  
249 - RexxArrayObject rxArgs;  
250 -  
251 - trace("%s %s(%s)",__FUNCTION__,filename,args);  
252 -  
253 - if(args)  
254 - {  
255 - gchar **arg = g_strsplit(args,",",-1);  
256 - size_t sz = g_strv_length(arg);  
257 -  
258 - rxArgs = threadContext->NewArray(sz);  
259 - for(unsigned int i = 0; i<sz; i++)  
260 - threadContext->ArrayPut(rxArgs, threadContext->String(arg[i]), i + 1);  
261 -  
262 - g_strfreev(arg);  
263 - }  
264 - else  
265 - {  
266 - rxArgs = threadContext->NewArray(1);  
267 - threadContext->ArrayPut(rxArgs, threadContext->String(""),1);  
268 - }  
269 -  
270 - v3270_set_script(widget,'R',TRUE);  
271 - script_name = g_path_get_basename(filename);  
272 - trace("%s: Calling",filename);  
273 - RexxObjectPtr result = threadContext->CallProgram(filename, rxArgs);  
274 - trace("%s: Returns",filename);  
275 - g_free(script_name);  
276 - script_name = NULL;  
277 - v3270_set_script(widget,'R',FALSE);  
278 -  
279 - if (threadContext->CheckCondition())  
280 - {  
281 - RexxCondition condition;  
282 -  
283 - // retrieve the error information and get it into a decoded form  
284 - RexxDirectoryObject cond = threadContext->GetConditionInfo();  
285 - threadContext->DecodeConditionInfo(cond, &condition);  
286 - // display the errors  
287 - GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)),  
288 - GTK_DIALOG_DESTROY_WITH_PARENT,  
289 - GTK_MESSAGE_ERROR,  
290 - GTK_BUTTONS_CANCEL,  
291 - _( "%s script failed" ), "Rexx" );  
292 -  
293 - gtk_window_set_title(GTK_WINDOW(dialog),_( "Rexx error" ));  
294 -  
295 - gtk_message_dialog_format_secondary_text(  
296 - GTK_MESSAGE_DIALOG(dialog),  
297 - _( "%s error %d: %s\n%s" ),  
298 - "Rexx",  
299 - (int) condition.code,  
300 - threadContext->CString(condition.errortext),  
301 - threadContext->CString(condition.message)  
302 -  
303 - );  
304 -  
305 - gtk_dialog_run(GTK_DIALOG (dialog));  
306 - gtk_widget_destroy(dialog);  
307 -  
308 - }  
309 - else if (result != NULLOBJECT)  
310 - {  
311 - CSTRING resultString = threadContext->CString(result);  
312 - lib3270_write_log(NULL,"REXX","%s exits with rc=%s",filename,resultString);  
313 - }  
314 -  
315 - instance->Terminate();  
316 -  
317 - if(appdata.trace)  
318 - {  
319 - pw3270_trace_printf(appdata.trace,"%s","** Rexx script ends\n");  
320 - g_object_set_data(G_OBJECT(appdata.trace),"rexx_app_data",NULL);  
321 - }  
322 -  
323 - trace("%s ends",__FUNCTION__);  
324 - }  
325 -  
326 - g_free(options[3].option);  
327 -  
328 - }  
329 -  
330 -  
331 -extern "C"  
332 -{  
333 - LIB3270_EXPORT void pw3270_action_rexx_activated(GtkAction *action, GtkWidget *widget)  
334 - {  
335 -  
336 - gchar *filename = (gchar *) g_object_get_data(G_OBJECT(action),"src");  
337 -  
338 - lib3270_trace_event(v3270_get_session(widget),"Action %s activated on widget %p",gtk_action_get_name(action),widget);  
339 -  
340 -#if GTK_CHECK_VERSION(2,32,0)  
341 - if(!g_mutex_trylock(&mutex))  
342 -#else  
343 - if(!g_static_mutex_trylock(&mutex))  
344 -#endif // GTK_CHECK_VERSION  
345 - {  
346 - GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)),  
347 - GTK_DIALOG_DESTROY_WITH_PARENT,  
348 - GTK_MESSAGE_ERROR,  
349 - GTK_BUTTONS_CANCEL,  
350 - "%s", _( "Can't start script" ));  
351 -  
352 - gtk_window_set_title(GTK_WINDOW(dialog),_( "System busy" ));  
353 - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),"%s",_( "Please, try again in a few moments" ));  
354 -  
355 - gtk_dialog_run(GTK_DIALOG (dialog));  
356 - gtk_widget_destroy(dialog);  
357 - return;  
358 - }  
359 -  
360 - pw3270_set_action_state(action,FALSE);  
361 -  
362 - if(filename && *filename)  
363 - {  
364 - // Has filename, call it directly  
365 - call_rexx_script(action,widget,filename);  
366 - }  
367 - else  
368 - {  
369 -  
370 - filename = pw3270_file_chooser(GTK_FILE_CHOOSER_ACTION_OPEN, "rexx", _( "Select script to run" ), NULL, "rex");  
371 -  
372 - if(filename)  
373 - {  
374 - if(*filename)  
375 - {  
376 - call_rexx_script(action,widget,filename);  
377 - }  
378 - g_free(filename);  
379 - }  
380 -  
381 -  
382 - }  
383 -  
384 - pw3270_set_action_state(action,TRUE);  
385 -  
386 -#if GTK_CHECK_VERSION(2,32,0)  
387 - g_mutex_unlock(&mutex);  
388 -#else  
389 - g_static_mutex_unlock(&mutex);  
390 -#endif // GTK_CHECK_VERSION  
391 -  
392 - }  
393 -  
394 -}  
395 -  
396 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
397 -  
398 -  
399 - LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal)  
400 - {  
401 - trace("%s",__FUNCTION__);  
402 -#if GTK_CHECK_VERSION(2,32,0)  
403 - g_mutex_init(&mutex);  
404 -#endif // GTK_CHECK_VERSION  
405 -  
406 - rx3270_set_session(lib3270_get_default_session_handle());  
407 -  
408 - return 0;  
409 - }  
410 -  
411 - LIB3270_EXPORT int pw3270_plugin_stop(GtkWidget *window, GtkWidget *terminal)  
412 - {  
413 -#if GTK_CHECK_VERSION(2,32,0)  
414 - g_mutex_clear(&mutex);  
415 -#endif // GTK_CHECK_VERSION  
416 - trace("%s",__FUNCTION__);  
417 - return 0;  
418 - }  
419 -  
src/plugins/rx3270/rexx_methods.cc
@@ -1,647 +0,0 @@ @@ -1,647 +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 rexx_methods.cc e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - *  
29 - * Referencias:  
30 - *  
31 - * * http://www.oorexx.org/docs/rexxpg/x2950.htm  
32 - *  
33 - */  
34 -  
35 - #include "rx3270.h"  
36 - #include <gtk/gtk.h>  
37 - #include <time.h>  
38 - #include <string.h>  
39 - #include <ctype.h>  
40 - #include <pw3270/class.h>  
41 -  
42 - using namespace std;  
43 - using namespace PW3270_NAMESPACE;  
44 -  
45 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
46 -  
47 -RexxMethod1(int, rx3270_method_init, OPTIONAL_CSTRING, type)  
48 -{  
49 - // Set session class in rexx object  
50 - try  
51 - {  
52 - if(!(type && *type))  
53 - type = "";  
54 - RexxPointerObject sessionPtr = context->NewPointer(session::create(type));  
55 - context->SetObjectVariable("CSELF", sessionPtr);  
56 - }  
57 - catch(std::exception &e)  
58 - {  
59 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
60 - }  
61 -  
62 - return 0;  
63 -}  
64 -  
65 -RexxMethod1(int, rx3270_method_uninit, CSELF, sessionPtr)  
66 -{  
67 - session *hSession = (session *) sessionPtr;  
68 -  
69 - trace("rx3270_method_uninit hSession=%p",hSession);  
70 -  
71 - if(hSession)  
72 - delete hSession;  
73 -  
74 - trace("%s","rx3270_method_uninit");  
75 - return 0;  
76 -}  
77 -  
78 -RexxMethod1(RexxStringObject, rx3270_method_version, CSELF, sessionPtr)  
79 -{  
80 - session * hSession = (session *) sessionPtr;  
81 -  
82 - if(hSession)  
83 - return context->String((CSTRING) hSession->get_version().c_str());  
84 -  
85 - return context->String((CSTRING) PACKAGE_VERSION);  
86 -}  
87 -  
88 -RexxMethod1(RexxStringObject, rx3270_method_revision, CSELF, sessionPtr)  
89 -{  
90 - session * hSession = (session *) sessionPtr;  
91 -  
92 - if(hSession)  
93 - return context->String((CSTRING) hSession->get_revision().c_str());  
94 -  
95 - return context->String((CSTRING) PACKAGE_REVISION);  
96 -}  
97 -  
98 -RexxMethod3(int, rx3270_method_connect, CSELF, sessionPtr, CSTRING, uri, OPTIONAL_int, wait)  
99 -{  
100 - session *hSession = (session *) sessionPtr;  
101 - if(!hSession)  
102 - return -1;  
103 -  
104 - return hSession->connect(uri,wait != 0);  
105 -}  
106 -  
107 -RexxMethod1(int, rx3270_method_disconnect, CSELF, sessionPtr)  
108 -{  
109 - session *hSession = (session *) sessionPtr;  
110 - if(!hSession)  
111 - return -1;  
112 - return hSession->disconnect();  
113 -}  
114 -  
115 -RexxMethod2(int, rx3270_method_sleep, CSELF, sessionPtr, int, seconds)  
116 -{  
117 - session *hSession = (session *) sessionPtr;  
118 - if(!hSession)  
119 - return -1;  
120 - return hSession->wait(seconds);  
121 -}  
122 -  
123 -RexxMethod1(logical_t, rx3270_method_is_connected, CSELF, sessionPtr)  
124 -{  
125 - try  
126 - {  
127 - session *hSession = (session *) sessionPtr;  
128 - if(!hSession)  
129 - return false;  
130 - return hSession->is_connected();  
131 - }  
132 - catch(std::exception &e)  
133 - {  
134 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
135 - }  
136 -  
137 - return 0;  
138 -}  
139 -  
140 -RexxMethod1(logical_t, rx3270_method_is_ready, CSELF, sessionPtr)  
141 -{  
142 - session *hSession = (session *) sessionPtr;  
143 - if(!hSession)  
144 - return false;  
145 - return hSession->is_ready();  
146 -}  
147 -  
148 -RexxMethod2(int, rx3270_method_wait_for_ready, CSELF, sessionPtr, OPTIONAL_int, seconds)  
149 -{  
150 - session *hSession = (session *) sessionPtr;  
151 - if(!hSession)  
152 - return -1;  
153 - return hSession->wait_for_ready(seconds > 0 ? seconds : 60);  
154 -}  
155 -  
156 -RexxMethod3(int, rx3270_method_set_cursor, CSELF, sessionPtr, int, row, int, col)  
157 -{  
158 - session *hSession = (session *) sessionPtr;  
159 - if(!hSession)  
160 - return -1;  
161 - return hSession->set_cursor_position(row,col);  
162 -}  
163 -  
164 -RexxMethod1(int, rx3270_method_get_cursor_addr, CSELF, sessionPtr)  
165 -{  
166 - session *hSession = (session *) sessionPtr;  
167 - if(!hSession)  
168 - return -1;  
169 - return hSession->get_cursor_addr();  
170 -}  
171 -  
172 -RexxMethod2(int, rx3270_method_set_cursor_addr, CSELF, sessionPtr, int, addr)  
173 -{  
174 - session *hSession = (session *) sessionPtr;  
175 - if(!hSession)  
176 - return -1;  
177 - return hSession->set_cursor_addr(addr);  
178 -}  
179 -  
180 -RexxMethod1(int, rx3270_method_enter, CSELF, sessionPtr)  
181 -{  
182 - session *hSession = (session *) sessionPtr;  
183 - if(!hSession)  
184 - return -1;  
185 - return hSession->enter();  
186 -}  
187 -  
188 -RexxMethod1(int, rx3270_method_erase, CSELF, sessionPtr)  
189 -{  
190 - session *hSession = (session *) sessionPtr;  
191 - if(!hSession)  
192 - return -1;  
193 - return hSession->erase();  
194 -}  
195 -  
196 -RexxMethod1(int, rx3270_method_erase_eof, CSELF, sessionPtr)  
197 -{  
198 - session *hSession = (session *) sessionPtr;  
199 - if(!hSession)  
200 - return -1;  
201 - return hSession->erase_eof();  
202 -}  
203 -  
204 -RexxMethod1(int, rx3270_method_erase_eol, CSELF, sessionPtr)  
205 -{  
206 - session *hSession = (session *) sessionPtr;  
207 - if(!hSession)  
208 - return -1;  
209 - return hSession->erase_eol();  
210 -}  
211 -  
212 -RexxMethod1(int, rx3270_method_erase_input, CSELF, sessionPtr)  
213 -{  
214 - session *hSession = (session *) sessionPtr;  
215 - if(!hSession)  
216 - return -1;  
217 - return hSession->erase_input();  
218 -}  
219 -  
220 -  
221 -RexxMethod2(int, rx3270_method_pfkey, CSELF, sessionPtr, int, key)  
222 -{  
223 - session *hSession = (session *) sessionPtr;  
224 - if(!hSession)  
225 - return -1;  
226 - return hSession->pfkey(key);  
227 -}  
228 -  
229 -RexxMethod2(int, rx3270_method_pakey, CSELF, sessionPtr, int, key)  
230 -{  
231 - session *hSession = (session *) sessionPtr;  
232 - if(!hSession)  
233 - return -1;  
234 - return hSession->pakey(key);  
235 -}  
236 -  
237 -RexxMethod4(RexxStringObject, rx3270_method_get_text_at, CSELF, sessionPtr, int, row, int, col, int, sz)  
238 -{  
239 -  
240 - try  
241 - {  
242 - session * hSession = (session *) sessionPtr;  
243 - string str = hSession->get_string_at(row,col,sz);  
244 - return context->String((CSTRING) str.c_str());  
245 -  
246 - }  
247 - catch(std::exception &e)  
248 - {  
249 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
250 - }  
251 -  
252 - return context->String("");  
253 -}  
254 -  
255 -  
256 -RexxMethod4(int, rx3270_method_set_text_at, CSELF, sessionPtr, int, row, int, col, CSTRING, text)  
257 -{  
258 - try  
259 - {  
260 - session * hSession = (session *) sessionPtr;  
261 - return hSession->set_string_at(row,col,text);  
262 - }  
263 - catch(std::exception &e)  
264 - {  
265 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
266 - }  
267 -  
268 - return -1;  
269 -}  
270 -  
271 -RexxMethod2(int, rx3270_method_input_text, CSELF, sessionPtr, CSTRING, text)  
272 -{  
273 - try  
274 - {  
275 - session * hSession = (session *) sessionPtr;  
276 - return hSession->input_string(text);  
277 - }  
278 - catch(std::exception &e)  
279 - {  
280 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
281 - }  
282 -  
283 - return -1;  
284 -  
285 -}  
286 -  
287 -RexxMethod4(int, rx3270_method_cmp_text_at, CSELF, sessionPtr, int, row, int, col, CSTRING, key)  
288 -{  
289 - try  
290 - {  
291 - session * hSession = (session *) sessionPtr;  
292 - return hSession->cmp_string_at(row,col,key);  
293 - }  
294 - catch(std::exception &e)  
295 - {  
296 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
297 - }  
298 - return -1;  
299 -}  
300 -  
301 -RexxMethod2(int, rx3270_method_event_trace, CSELF, sessionPtr, int, flag)  
302 -{  
303 - session *hSession = (session *) sessionPtr;  
304 - if(!hSession)  
305 - return -1;  
306 - hSession->set_toggle(LIB3270_TOGGLE_EVENT_TRACE,flag);  
307 - return 0;  
308 -}  
309 -  
310 -RexxMethod2(int, rx3270_method_screen_trace, CSELF, sessionPtr, int, flag)  
311 -{  
312 - session *hSession = (session *) sessionPtr;  
313 - if(!hSession)  
314 - return -1;  
315 - hSession->set_toggle(LIB3270_TOGGLE_SCREEN_TRACE,flag);  
316 - return 0;  
317 -  
318 -}  
319 -  
320 -RexxMethod2(int, rx3270_method_ds_trace, CSELF, sessionPtr, int, flag)  
321 -{  
322 - session *hSession = (session *) sessionPtr;  
323 - if(!hSession)  
324 - return -1;  
325 - hSession->set_toggle(LIB3270_TOGGLE_DS_TRACE,flag);  
326 - return 0;  
327 -}  
328 -  
329 -RexxMethod3(int, rx3270_method_set_option, CSELF, sessionPtr, CSTRING, name, int, flag)  
330 -{  
331 - static const struct _toggle_info  
332 - {  
333 - const char * name;  
334 - LIB3270_TOGGLE id;  
335 - }  
336 - toggle[LIB3270_TOGGLE_COUNT] =  
337 - {  
338 - { "monocase", LIB3270_TOGGLE_MONOCASE },  
339 - { "cursorblink", LIB3270_TOGGLE_CURSOR_BLINK },  
340 - { "showtiming", LIB3270_TOGGLE_SHOW_TIMING },  
341 - { "cursorpos", LIB3270_TOGGLE_CURSOR_POS },  
342 - { "dstrace", LIB3270_TOGGLE_DS_TRACE },  
343 - { "linewrap", LIB3270_TOGGLE_LINE_WRAP },  
344 - { "blankfill", LIB3270_TOGGLE_BLANK_FILL },  
345 - { "screentrace", LIB3270_TOGGLE_SCREEN_TRACE },  
346 - { "eventtrace", LIB3270_TOGGLE_EVENT_TRACE },  
347 - { "marginedpaste", LIB3270_TOGGLE_MARGINED_PASTE },  
348 - { "rectselect", LIB3270_TOGGLE_RECTANGLE_SELECT },  
349 - { "crosshair", LIB3270_TOGGLE_CROSSHAIR },  
350 - { "fullscreen", LIB3270_TOGGLE_FULL_SCREEN },  
351 - { "reconnect", LIB3270_TOGGLE_RECONNECT },  
352 - { "insert", LIB3270_TOGGLE_INSERT },  
353 - { "smartpaste", LIB3270_TOGGLE_SMART_PASTE },  
354 - { "bold", LIB3270_TOGGLE_BOLD },  
355 - { "keepselected", LIB3270_TOGGLE_KEEP_SELECTED },  
356 - { "underline", LIB3270_TOGGLE_UNDERLINE },  
357 - { "autoconnect", LIB3270_TOGGLE_CONNECT_ON_STARTUP },  
358 - { "kpalternative", LIB3270_TOGGLE_KP_ALTERNATIVE },  
359 - { "beep", LIB3270_TOGGLE_BEEP },  
360 - { "fieldattr", LIB3270_TOGGLE_VIEW_FIELD },  
361 - { "altscreen", LIB3270_TOGGLE_ALTSCREEN },  
362 - { "keepalive", LIB3270_TOGGLE_KEEP_ALIVE },  
363 - };  
364 -  
365 - session *hSession = (session *) sessionPtr;  
366 - if(hSession)  
367 - {  
368 - for(int f = 0; f < LIB3270_TOGGLE_COUNT; f++)  
369 - {  
370 - if(!strcasecmp(name,toggle[f].name))  
371 - {  
372 - hSession->set_toggle(toggle[f].id,flag);  
373 - return 0;  
374 - }  
375 - }  
376 - return ENOENT;  
377 - }  
378 - return -1;  
379 -}  
380 -  
381 -  
382 -RexxMethod4(logical_t, rx3270_method_test, CSELF, sessionPtr, CSTRING, key, int, row, int, col)  
383 -{  
384 - try  
385 - {  
386 - session * hSession = (session *) sessionPtr;  
387 -  
388 - if(!hSession->is_ready())  
389 - hSession->iterate(false);  
390 -  
391 - if(hSession->is_ready())  
392 - {  
393 - string str = hSession->get_string_at(row,col,strlen(key));  
394 - return (strcasecmp(str.c_str(),key) == 0);  
395 - }  
396 -  
397 - }  
398 - catch(std::exception &e)  
399 - {  
400 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
401 - }  
402 -  
403 - return false;  
404 -}  
405 -  
406 -RexxMethod5(int, rx3270_method_wait_for_text_at, CSELF, sessionPtr, int, row, int, col, CSTRING, key, int, timeout)  
407 -{  
408 - try  
409 - {  
410 - session * hSession = (session *) sessionPtr;  
411 - return hSession->wait_for_string_at(row,col,key,timeout);  
412 -  
413 - }  
414 - catch(std::exception &e)  
415 - {  
416 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
417 - }  
418 -  
419 - return -1;  
420 -}  
421 -  
422 -RexxMethod3(RexxStringObject, rx3270_method_get_text, CSELF, sessionPtr, OPTIONAL_int, baddr, OPTIONAL_int, sz)  
423 -{  
424 - try  
425 - {  
426 - session * hSession = (session *) sessionPtr;  
427 - string str = hSession->get_string(baddr,sz > 0 ? sz : -1);  
428 - return context->String((CSTRING) str.c_str());  
429 - }  
430 - catch(std::exception &e)  
431 - {  
432 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
433 - }  
434 -  
435 - return context->String("");  
436 -}  
437 -  
438 -  
439 -RexxMethod2(int, rx3270_method_get_field_len, CSELF, sessionPtr, OPTIONAL_int, baddr)  
440 -{  
441 - session *hSession = (session *) sessionPtr;  
442 - if(!hSession)  
443 - return -1;  
444 - return hSession->get_field_len(baddr);  
445 -}  
446 -  
447 -RexxMethod2(int, rx3270_method_get_field_start, CSELF, sessionPtr, OPTIONAL_int, baddr)  
448 -{  
449 - session *hSession = (session *) sessionPtr;  
450 - if(!hSession)  
451 - return -1;  
452 - return hSession->get_field_start(baddr)+1;  
453 -}  
454 -  
455 -RexxMethod2(int, rx3270_method_get_next_unprotected, CSELF, sessionPtr, OPTIONAL_int, baddr)  
456 -{  
457 - session *hSession = (session *) sessionPtr;  
458 - if(!hSession)  
459 - return -1;  
460 -  
461 - baddr = hSession->get_next_unprotected(baddr);  
462 - if(baddr < 1)  
463 - return -1;  
464 -  
465 - return baddr;  
466 -}  
467 -  
468 -RexxMethod2(int, rx3270_method_get_is_protected, CSELF, sessionPtr, OPTIONAL_int, baddr)  
469 -{  
470 -  
471 - session *hSession = (session *) sessionPtr;  
472 - if(!hSession)  
473 - return -1;  
474 -  
475 - return hSession->get_is_protected(baddr);  
476 -}  
477 -  
478 -RexxMethod3(int, rx3270_method_get_is_protected_at, CSELF, sessionPtr, int, row, int, col)  
479 -{  
480 -  
481 - session *hSession = (session *) sessionPtr;  
482 - if(!hSession)  
483 - return -1;  
484 -  
485 - return hSession->get_is_protected_at(row,col);  
486 -}  
487 -  
488 -  
489 -RexxMethod1(RexxStringObject, rx3270_method_get_selection, CSELF, sessionPtr)  
490 -{  
491 - try  
492 - {  
493 - string str = ((session *) sessionPtr)->get_copy();  
494 - return context->String((CSTRING) str.c_str());  
495 -  
496 - }  
497 - catch(std::exception &e)  
498 - {  
499 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
500 - }  
501 -  
502 - return context->String("");  
503 -}  
504 -  
505 -RexxMethod2(int, rx3270_method_set_selection, CSELF, sessionPtr, CSTRING, text)  
506 -{  
507 - try  
508 - {  
509 - return ((session *) sessionPtr)->set_copy(text);  
510 - }  
511 - catch(std::exception &e)  
512 - {  
513 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
514 - }  
515 -  
516 - return -1;  
517 -}  
518 -  
519 -RexxMethod1(RexxStringObject, rx3270_method_get_clipboard, CSELF, sessionPtr)  
520 -{  
521 - session * hSession = (session *) sessionPtr;  
522 -  
523 - if(hSession)  
524 - {  
525 - string str = hSession->get_clipboard();  
526 - return context->String((CSTRING) str.c_str());  
527 - }  
528 -  
529 - trace("%s","rx3270_method_get_clipboard: Clipboard is empty");  
530 - return context->String("");  
531 -}  
532 -  
533 -RexxMethod2(int, rx3270_method_set_clipboard, CSELF, sessionPtr, CSTRING, text)  
534 -{  
535 - return ((session *) sessionPtr)->set_clipboard(text);  
536 -}  
537 -  
538 -RexxMethod5(int, rx3270_method_popup, CSELF, sessionPtr, CSTRING, s_id, CSTRING, title, CSTRING, message, OPTIONAL_CSTRING, det)  
539 -{  
540 - LIB3270_NOTIFY id = LIB3270_NOTIFY_INFO;  
541 - session * hSession = (session *) sessionPtr;  
542 -  
543 - if(!hSession)  
544 - return -1;  
545 -  
546 - if(*s_id)  
547 - {  
548 - static const struct _descr  
549 - {  
550 - char str;  
551 - LIB3270_NOTIFY id;  
552 - } descr[] =  
553 - {  
554 - { 'I', LIB3270_NOTIFY_INFO },  
555 - { 'W', LIB3270_NOTIFY_WARNING },  
556 - { 'E', LIB3270_NOTIFY_ERROR },  
557 - { 'C', LIB3270_NOTIFY_CRITICAL },  
558 - };  
559 -  
560 - for(int f=0;f<4;f++)  
561 - {  
562 - if(toupper(*s_id) == descr[f].str)  
563 - {  
564 - id = descr[f].id;  
565 - trace("Using mode %c (%d)",toupper(*s_id),(int) id);  
566 - }  
567 - }  
568 - }  
569 -  
570 - return hSession->popup_dialog(id, title, message, "%s", det ? det : "");  
571 -}  
572 -  
573 -RexxMethod5(RexxStringObject, rx3270_method_get_filename, CSELF, sessionPtr, CSTRING, action_name, CSTRING, title, OPTIONAL_CSTRING, extension, OPTIONAL_CSTRING, filename)  
574 -{  
575 - static const struct _action  
576 - {  
577 - const gchar * action_name;  
578 - GtkFileChooserAction id;  
579 - } action[] =  
580 - {  
581 - { "open", GTK_FILE_CHOOSER_ACTION_OPEN },  
582 - { "save", GTK_FILE_CHOOSER_ACTION_SAVE },  
583 - { "folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER },  
584 - { "select_folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER },  
585 - { "create_folder", GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER }  
586 - };  
587 -  
588 - GtkFileChooserAction id = GTK_FILE_CHOOSER_ACTION_OPEN;  
589 - string ret;  
590 -  
591 - for(int f=0;f<5;f++)  
592 - {  
593 - if(!strcasecmp(action_name,action[f].action_name))  
594 - {  
595 - id = action[f].id;  
596 - break;  
597 - }  
598 - }  
599 -  
600 - debug("%s(%s)","rx3270_method_get_filename",action_name);  
601 - ret = ((session *) sessionPtr)->file_chooser_dialog(id, title, extension,filename);  
602 - debug("%s(%s)","rx3270_method_get_filename",action_name);  
603 -  
604 - return context->String(ret.c_str());  
605 -}  
606 -  
607 -RexxMethod2(int, rx3270_method_set_host_charset, CSELF, sessionPtr, CSTRING, text)  
608 -{  
609 - return ((session *) sessionPtr)->set_host_charset(text);  
610 -}  
611 -  
612 -RexxMethod1(RexxStringObject, rx3270_method_get_host_charset, CSELF, sessionPtr)  
613 -{  
614 - string ret = ((session *) sessionPtr)->get_host_charset();  
615 - return context->String(ret.c_str());  
616 -}  
617 -  
618 -RexxMethod1(RexxStringObject, rx3270_method_get_display_charset, CSELF, sessionPtr)  
619 -{  
620 - string ret = ((session *) sessionPtr)->get_display_charset();  
621 - return context->String(ret.c_str());  
622 -}  
623 -  
624 -RexxMethod2(int, rx3270_method_set_display_charset, CSELF, sessionPtr, CSTRING, text)  
625 -{  
626 - ((session *) sessionPtr)->set_display_charset(NULL,text);  
627 - return 0;  
628 -}  
629 -  
630 -RexxMethod2(int, rx3270_method_set_unlock_delay, CSELF, sessionPtr, int, delay)  
631 -{  
632 - session *hSession = (session *) sessionPtr;  
633 -  
634 - if(!hSession)  
635 - return -1;  
636 -  
637 - try  
638 - {  
639 - hSession->set_unlock_delay((unsigned short) delay);  
640 - }  
641 - catch(std::exception &e)  
642 - {  
643 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
644 - }  
645 -  
646 - return 0;  
647 -}  
src/plugins/rx3270/rx3270.cc
@@ -1,218 +0,0 @@ @@ -1,218 +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 rx3270.cc e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 - /*  
31 - *  
32 - * Reference:  
33 - *  
34 - * http://www.oorexx.org/docs/rexxpg/x2950.htm  
35 - *  
36 - */  
37 -  
38 - #include "rx3270.h"  
39 - #include <time.h>  
40 - #include <lib3270/actions.h>  
41 -  
42 -#ifdef HAVE_SYSLOG  
43 - #include <syslog.h>  
44 -#endif // HAVE_SYSLOG  
45 -  
46 - #include <string.h>  
47 - #include <stdarg.h>  
48 -  
49 - static rx3270 * factory_default(const char *type);  
50 -  
51 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
52 -  
53 - static rx3270 * defSession = NULL;  
54 - static rx3270 * (*factory)(const char *type) = factory_default;  
55 -  
56 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
57 -  
58 -rx3270::rx3270(const char *local, const char *remote)  
59 -{  
60 -#ifdef HAVE_ICONV  
61 -  
62 - if(strcmp(local,remote))  
63 - {  
64 - // Local and remote charsets aren't the same, setup conversion  
65 - this->conv2Local = iconv_open(local, remote);  
66 - this->conv2Host = iconv_open(remote,local);  
67 - }  
68 - else  
69 - {  
70 - this->conv2Local = this->conv2Host = (iconv_t)(-1);  
71 - }  
72 -#endif  
73 -  
74 - if(!defSession)  
75 - defSession = this;  
76 -}  
77 -  
78 -rx3270::~rx3270()  
79 -{  
80 -#ifdef HAVE_ICONV  
81 -  
82 - if(conv2Local != (iconv_t) (-1))  
83 - iconv_close(conv2Local);  
84 -  
85 - if(conv2Host != (iconv_t) (-1))  
86 - iconv_close(conv2Host);  
87 -#endif  
88 -  
89 -  
90 - if(defSession == this)  
91 - defSession = NULL;  
92 -  
93 - trace("%s",__FUNCTION__);  
94 -}  
95 -  
96 -static rx3270 * factory_default(const char *type)  
97 -{  
98 - trace("%s",__FUNCTION__);  
99 - if(type && *type)  
100 - return rx3270::create_remote(type);  
101 - return rx3270::create_local();  
102 -}  
103 -  
104 -rx3270 * rx3270::create(const char *type)  
105 -{  
106 - return factory(type);  
107 -}  
108 -  
109 -char * rx3270::get_version(void)  
110 -{  
111 - return strdup(PACKAGE_VERSION);  
112 -}  
113 -  
114 -char * rx3270::get_revision(void)  
115 -{  
116 - return strdup(PACKAGE_REVISION);  
117 -}  
118 -  
119 -rx3270 * rx3270::get_default()  
120 -{  
121 - if(defSession)  
122 - return defSession;  
123 - return create_local();  
124 -}  
125 -  
126 -void rx3270::log(const char *fmt, ...)  
127 -{  
128 - va_list arg_ptr;  
129 - va_start(arg_ptr, fmt);  
130 - this->logva(fmt,arg_ptr);  
131 - va_end(arg_ptr);  
132 -}  
133 -  
134 -void rx3270::logva(const char *fmt, va_list args)  
135 -{  
136 -#ifdef HAVE_SYSLOG  
137 - openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER);  
138 - vsyslog(LOG_INFO,fmt,args);  
139 - closelog();  
140 -#else  
141 - vfprintf(stderr,fmt,args);  
142 -#endif  
143 -}  
144 -  
145 -int rx3270::wait_for_text_at(int row, int col, const char *key, int timeout)  
146 -{  
147 - time_t end = time(0)+timeout;  
148 -  
149 - while(time(0) < end)  
150 - {  
151 - if(!is_connected())  
152 - return ENOTCONN;  
153 -  
154 - if(!cmp_text_at(row,col,key))  
155 - return 0;  
156 -  
157 - iterate();  
158 - }  
159 -  
160 - return ETIMEDOUT;  
161 -}  
162 -  
163 -void rx3270::set_plugin(rx3270 * (*ptr)(const char *name))  
164 -{  
165 - trace("%s factory=%p",__FUNCTION__,ptr);  
166 -  
167 - if(ptr)  
168 - factory = ptr;  
169 - else  
170 - factory = factory_default;  
171 -  
172 -}  
173 -  
174 -int rx3270::set_copy(const char *text)  
175 -{  
176 - return EINVAL;  
177 -}  
178 -  
179 -char * rx3270::get_copy(void)  
180 -{  
181 - errno = EINVAL;  
182 - return NULL;  
183 -}  
184 -  
185 -char * rx3270::get_clipboard(void)  
186 -{  
187 - errno = EINVAL;  
188 - return NULL;  
189 -}  
190 -  
191 -int rx3270::set_clipboard(const char *text)  
192 -{  
193 - return EINVAL;  
194 -}  
195 -  
196 -extern "C"  
197 -{  
198 - static void memfree(void *ptr)  
199 - {  
200 - free(ptr);  
201 - }  
202 -}  
203 -  
204 -void rx3270::free(void *ptr)  
205 -{  
206 - memfree(ptr);  
207 -}  
208 -  
209 -int rx3270::popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...)  
210 -{  
211 - return -1;  
212 -}  
213 -  
214 -char * rx3270::file_chooser_dialog(GtkFileChooserAction action, const char *title, const char *extension, const char *filename)  
215 -{  
216 - return NULL;  
217 -}  
218 -  
src/plugins/rx3270/rx3270.cls
@@ -1,148 +0,0 @@ @@ -1,148 +0,0 @@
1 -/*-- REXX -----------------------------------------------------------------------*/  
2 -/* */  
3 -/* "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 */  
4 -/* (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a */  
5 -/* aplicativos mainframe. Registro no INPI sob o nome G3270. */  
6 -/* */  
7 -/* Copyright (C) <2008> <Banco do Brasil S.A.> */  
8 -/* */  
9 -/* Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob */  
10 -/* os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela */  
11 -/* Free Software Foundation. */  
12 -/* */  
13 -/* Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER */  
14 -/* GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO */  
15 -/* A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para */  
16 -/* obter mais detalhes. */  
17 -/* */  
18 -/* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este */  
19 -/* programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple */  
20 -/* Place, Suite 330, Boston, MA, 02111-1307, USA */  
21 -/* */  
22 -/* Contatos: */  
23 -/* */  
24 -/* perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) */  
25 -/* erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) */  
26 -/* licinio@bb.com.br (Licínio Luis Branco) */  
27 -/* */  
28 -/*-------------------------------------------------------------------------------*/  
29 -  
30 -::requires "rx3270" LIBRARY  
31 -  
32 -/*-------------------------------------------------------------------------------*/  
33 -/* 3270 class */  
34 -/*-------------------------------------------------------------------------------*/  
35 -  
36 -::class rx3270 public subclass object  
37 -  
38 -::METHOD INIT EXTERNAL "LIBRARY rx3270 rx3270_method_init"  
39 -::METHOD UNINIT EXTERNAL "LIBRARY rx3270 rx3270_method_uninit"  
40 -  
41 -::METHOD VERSION EXTERNAL "LIBRARY rx3270 rx3270_method_version"  
42 -::METHOD REVISION EXTERNAL "LIBRARY rx3270 rx3270_method_revision"  
43 -  
44 -::METHOD CONNECT EXTERNAL "LIBRARY rx3270 rx3270_method_connect"  
45 -::METHOD DISCONNECT EXTERNAL "LIBRARY rx3270 rx3270_method_disconnect"  
46 -  
47 -::METHOD SLEEP EXTERNAL "LIBRARY rx3270 rx3270_method_sleep"  
48 -  
49 -::METHOD CONNECTED EXTERNAL "LIBRARY rx3270 rx3270_method_is_connected"  
50 -::METHOD READY EXTERNAL "LIBRARY rx3270 rx3270_method_is_ready"  
51 -  
52 -::METHOD WAITFORREADY EXTERNAL "LIBRARY rx3270 rx3270_method_wait_for_ready"  
53 -  
54 -::METHOD SETCURSOR EXTERNAL "LIBRARY rx3270 rx3270_method_set_cursor"  
55 -::METHOD GETCURSORADDR EXTERNAL "LIBRARY rx3270 rx3270_method_get_cursor_addr"  
56 -::METHOD SETCURSORADDR EXTERNAL "LIBRARY rx3270 rx3270_method_set_cursor_addr"  
57 -  
58 -::METHOD ENTER EXTERNAL "LIBRARY rx3270 rx3270_method_enter"  
59 -::METHOD PFKEY EXTERNAL "LIBRARY rx3270 rx3270_method_pfkey"  
60 -::METHOD PAKEY EXTERNAL "LIBRARY rx3270 rx3270_method_pakey"  
61 -  
62 -::METHOD ERASE EXTERNAL "LIBRARY rx3270 rx3270_method_erase"  
63 -::METHOD ERASEEOF EXTERNAL "LIBRARY rx3270 rx3270_method_erase_eof"  
64 -::METHOD ERASEEOL EXTERNAL "LIBRARY rx3270 rx3270_method_erase_eol"  
65 -::METHOD ERASEINPUT EXTERNAL "LIBRARY rx3270 rx3270_method_erase_input"  
66 -  
67 -::METHOD OPTION EXTERNAL "LIBRARY rx3270 rx3270_method_set_option"  
68 -::METHOD EVENTTRACE EXTERNAL "LIBRARY rx3270 rx3270_method_event_trace"  
69 -::METHOD SCREENTRACE EXTERNAL "LIBRARY rx3270 rx3270_method_screen_trace"  
70 -::METHOD DSTRACE EXTERNAL "LIBRARY rx3270 rx3270_method_ds_trace"  
71 -  
72 -::METHOD GETTEXTAT EXTERNAL "LIBRARY rx3270 rx3270_method_get_text_at"  
73 -::METHOD SETTEXTAT EXTERNAL "LIBRARY rx3270 rx3270_method_set_text_at"  
74 -::METHOD CMPTEXTAT EXTERNAL "LIBRARY rx3270 rx3270_method_cmp_text_at"  
75 -  
76 -::METHOD GET EXTERNAL "LIBRARY rx3270 rx3270_method_get_text"  
77 -::METHOD INPUT EXTERNAL "LIBRARY rx3270 rx3270_method_input_text"  
78 -  
79 -::METHOD WAITFORTEXTAT EXTERNAL "LIBRARY rx3270 rx3270_method_wait_for_text_at"  
80 -::METHOD TEST EXTERNAL "LIBRARY rx3270 rx3270_method_test"  
81 -  
82 -::METHOD GETFIELDSTART EXTERNAL "LIBRARY rx3270 rx3270_method_get_field_start"  
83 -::METHOD GETFIELDLEN EXTERNAL "LIBRARY rx3270 rx3270_method_get_field_len"  
84 -::METHOD GETNEXTUNPROTECTED EXTERNAL "LIBRARY rx3270 rx3270_method_get_next_unprotected"  
85 -::METHOD GETISPROTECTED EXTERNAL "LIBRARY rx3270 rx3270_method_get_is_protected"  
86 -::METHOD GETISPROTECTEDAT EXTERNAL "LIBRARY rx3270 rx3270_method_get_is_protected_at"  
87 -  
88 -::METHOD GETSELECTION EXTERNAL "LIBRARY rx3270 rx3270_method_get_selection"  
89 -::METHOD SETSELECTION EXTERNAL "LIBRARY rx3270 rx3270_method_set_selection"  
90 -  
91 -::METHOD GETCLIPBOARD EXTERNAL "LIBRARY rx3270 rx3270_method_get_clipboard"  
92 -::METHOD SETCLIPBOARD EXTERNAL "LIBRARY rx3270 rx3270_method_set_clipboard"  
93 -  
94 -::METHOD POPUP EXTERNAL "LIBRARY rx3270 rx3270_method_popup"  
95 -::METHOD GETFILENAME EXTERNAL "LIBRARY rx3270 rx3270_method_get_filename"  
96 -  
97 -::METHOD GETDISPLAYCHARSET EXTERNAL "LIBRARY rx3270 rx3270_method_get_display_charset"  
98 -::METHOD SETDISPLAYCHARSET EXTERNAL "LIBRARY rx3270 rx3270_method_set_display_charset"  
99 -  
100 -::METHOD GETHOSTCHARSET EXTERNAL "LIBRARY rx3270 rx3270_method_get_host_charset"  
101 -::METHOD SETHOSTCHARSET EXTERNAL "LIBRARY rx3270 rx3270_method_set_host_charset"  
102 -  
103 -::METHOD SETUNLOCKDELAY EXTERNAL "LIBRARY rx3270 rx3270_method_set_unlock_delay"  
104 -  
105 -::method waitForStringAt  
106 - use arg row, col, key, timeout  
107 - if datatype(timeout) <> "NUM"  
108 - then timeout = 60  
109 -return self~WaitForTextAt(row,col,key,timeout)  
110 -  
111 -::method getScreenContent  
112 -return self~get()  
113 -  
114 -::method queryStringAt  
115 - use arg row, col, key  
116 -return self~GetTextAt(row,col,length(key)) == key  
117 -  
118 -::method waitForTerminalReady  
119 - use arg timeout  
120 -return self~WaitForReady(timeout)  
121 -  
122 -::method isTerminalReady  
123 -return self~ready()  
124 -  
125 -::method setStringAt  
126 - use arg row, col, str  
127 -return self~SetTextAt(row,col,str)  
128 -  
129 -::method getStringAt  
130 - use arg row, col, size  
131 -return self~GetTextAt(row,col,size)  
132 -  
133 -::method sendEnterKey  
134 -return self~enter()  
135 -  
136 -::method sendPFKey  
137 - use arg key  
138 -return self~pfKey(key)  
139 -  
140 -::method setCursorPosition  
141 - use arg row, col  
142 -return self~SetCursor(row,col)  
143 -  
144 -::method getScreenContentAt  
145 - use arg row, col, size  
146 -return self~GetTextAt(row,col,size)  
147 -  
148 -  
src/plugins/rx3270/rx3270.h
@@ -1,160 +0,0 @@ @@ -1,160 +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 pluginmain.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 -#ifndef RX3270_H_INCLUDED  
31 -  
32 - #define RX3270_H_INCLUDED 1  
33 -  
34 - #include <lib3270/config.h>  
35 - #include <stdint.h>  
36 -  
37 - #include <errno.h>  
38 - #include <stdio.h>  
39 - #include <lib3270.h>  
40 - #include <lib3270/log.h>  
41 - #include <lib3270/popup.h>  
42 - #include <stdarg.h>  
43 - #include <gtk/gtk.h>  
44 - #include <pw3270/class.h>  
45 -  
46 -#ifndef ETIMEDOUT  
47 - #define ETIMEDOUT -1  
48 -#endif // !ETIMEOUT  
49 -  
50 -#ifdef HAVE_ICONV  
51 - #include <iconv.h>  
52 -#endif // HAVE_ICONV  
53 -  
54 -#ifdef WIN32  
55 - #define REXX_DEFAULT_CHARSET "CP1252"  
56 - #define int8_t REXX_INT8_T  
57 - #define ssize_t REXX_SSIZE_T  
58 -#else  
59 - #define REXX_DEFAULT_CHARSET "UTF-8"  
60 -#endif // WIN32  
61 -  
62 -#include <oorexxapi.h>  
63 -  
64 -/*---[ Rexx entry points ]-----------------------------------------------------------------------------------*/  
65 -  
66 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270version);  
67 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270QueryCState);  
68 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Disconnect);  
69 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Connect);  
70 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270isConnected);  
71 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270WaitForEvents);  
72 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Sleep);  
73 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270SendENTERKey);  
74 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270SendPFKey);  
75 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270SendPAKey);  
76 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270WaitForTerminalReady);  
77 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270WaitForStringAt);  
78 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270GetStringAt);  
79 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270IsTerminalReady);  
80 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270queryStringAt);  
81 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270SetStringAt);  
82 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270CloseApplication);  
83 - REXX_TYPED_ROUTINE_PROTOTYPE(ebc2asc);  
84 - REXX_TYPED_ROUTINE_PROTOTYPE(asc2ebc);  
85 -  
86 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Erase);  
87 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseEOF);  
88 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseEOL);  
89 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270EraseInput);  
90 -  
91 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270IsProtected);  
92 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270IsProtectedAt);  
93 - REXX_TYPED_ROUTINE_PROTOTYPE(rx3270SetUnlockDelay);  
94 -  
95 - REXX_METHOD_PROTOTYPE(rx3270_method_version);  
96 - REXX_METHOD_PROTOTYPE(rx3270_method_revision);  
97 - REXX_METHOD_PROTOTYPE(rx3270_method_init);  
98 - REXX_METHOD_PROTOTYPE(rx3270_method_uninit);  
99 - REXX_METHOD_PROTOTYPE(rx3270_method_connect);  
100 - REXX_METHOD_PROTOTYPE(rx3270_method_disconnect);  
101 - REXX_METHOD_PROTOTYPE(rx3270_method_sleep);  
102 - REXX_METHOD_PROTOTYPE(rx3270_method_is_connected);  
103 - REXX_METHOD_PROTOTYPE(rx3270_method_is_ready);  
104 - REXX_METHOD_PROTOTYPE(rx3270_method_wait_for_ready);  
105 - REXX_METHOD_PROTOTYPE(rx3270_method_set_cursor);  
106 - REXX_METHOD_PROTOTYPE(rx3270_method_get_cursor_addr);  
107 - REXX_METHOD_PROTOTYPE(rx3270_method_set_cursor_addr);  
108 - REXX_METHOD_PROTOTYPE(rx3270_method_enter);  
109 - REXX_METHOD_PROTOTYPE(rx3270_method_erase);  
110 - REXX_METHOD_PROTOTYPE(rx3270_method_erase_eof);  
111 - REXX_METHOD_PROTOTYPE(rx3270_method_erase_eol);  
112 - REXX_METHOD_PROTOTYPE(rx3270_method_erase_input);  
113 - REXX_METHOD_PROTOTYPE(rx3270_method_pfkey);  
114 - REXX_METHOD_PROTOTYPE(rx3270_method_pakey);  
115 - REXX_METHOD_PROTOTYPE(rx3270_method_get_text);  
116 - REXX_METHOD_PROTOTYPE(rx3270_method_get_text_at);  
117 - REXX_METHOD_PROTOTYPE(rx3270_method_set_text_at);  
118 - REXX_METHOD_PROTOTYPE(rx3270_method_cmp_text_at);  
119 - REXX_METHOD_PROTOTYPE(rx3270_method_event_trace);  
120 - REXX_METHOD_PROTOTYPE(rx3270_method_screen_trace);  
121 - REXX_METHOD_PROTOTYPE(rx3270_method_ds_trace);  
122 - REXX_METHOD_PROTOTYPE(rx3270_method_set_option);  
123 - REXX_METHOD_PROTOTYPE(rx3270_method_test);  
124 - REXX_METHOD_PROTOTYPE(rx3270_method_wait_for_text_at);  
125 - REXX_METHOD_PROTOTYPE(rx3270_method_get_field_len);  
126 - REXX_METHOD_PROTOTYPE(rx3270_method_get_field_start);  
127 - REXX_METHOD_PROTOTYPE(rx3270_method_get_next_unprotected);  
128 - REXX_METHOD_PROTOTYPE(rx3270_method_get_is_protected);  
129 - REXX_METHOD_PROTOTYPE(rx3270_method_get_is_protected_at);  
130 - REXX_METHOD_PROTOTYPE(rx3270_method_get_selection);  
131 - REXX_METHOD_PROTOTYPE(rx3270_method_set_selection);  
132 - REXX_METHOD_PROTOTYPE(rx3270_method_get_clipboard);  
133 - REXX_METHOD_PROTOTYPE(rx3270_method_set_clipboard);  
134 - REXX_METHOD_PROTOTYPE(rx3270_method_popup);  
135 - REXX_METHOD_PROTOTYPE(rx3270_method_get_filename);  
136 - REXX_METHOD_PROTOTYPE(rx3270_method_get_cursor_addr);  
137 - REXX_METHOD_PROTOTYPE(rx3270_method_set_cursor_addr);  
138 - REXX_METHOD_PROTOTYPE(rx3270_method_input_text);  
139 - REXX_METHOD_PROTOTYPE(rx3270_method_get_display_charset);  
140 - REXX_METHOD_PROTOTYPE(rx3270_method_set_display_charset);  
141 - REXX_METHOD_PROTOTYPE(rx3270_method_get_host_charset);  
142 - REXX_METHOD_PROTOTYPE(rx3270_method_set_host_charset);  
143 - REXX_METHOD_PROTOTYPE(rx3270_method_set_unlock_delay);  
144 -  
145 -/*---[ Globals ]---------------------------------------------------------------------------------------------*/  
146 -  
147 -/*--[ 3270 Session ]-----------------------------------------------------------------------------------------*/  
148 -  
149 -#ifdef __cplusplus  
150 - extern "C" {  
151 -#endif  
152 -  
153 - LIB3270_EXPORT void rx3270_set_package_option(RexxOption *option);  
154 - LIB3270_EXPORT void rx3270_set_session(H3270 *hSession);  
155 -  
156 -#ifdef __cplusplus  
157 - }  
158 -#endif  
159 -  
160 -#endif // RX3270_H_INCLUDED  
src/plugins/rx3270/rxapimain.cc
@@ -1,208 +0,0 @@ @@ -1,208 +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 rxapimain.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 - /*  
31 - *  
32 - * Reference:  
33 - *  
34 - * http://www.oorexx.org/docs/rexxpg/x2950.htm  
35 - *  
36 - */  
37 -  
38 - #include "rx3270.h"  
39 - #include <time.h>  
40 - #include <lib3270/actions.h>  
41 -  
42 -#ifdef HAVE_SYSLOG  
43 - #include <syslog.h>  
44 -#endif // HAVE_SYSLOG  
45 -  
46 - #include <string.h>  
47 -  
48 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
49 -  
50 - static H3270 * default_session = NULL;  
51 -  
52 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
53 -  
54 -static PW3270_NAMESPACE::session * factory(const char *name)  
55 -{  
56 - if(!default_session)  
57 - return PW3270_NAMESPACE::session::create_local();  
58 -  
59 - return PW3270_NAMESPACE::session::create_local(default_session);  
60 -}  
61 -  
62 -void rx3270_set_session(H3270 *session)  
63 -{  
64 - default_session = session;  
65 - PW3270_NAMESPACE::session::set_plugin(factory);  
66 -}  
67 -  
68 -// now build the actual entry list  
69 -RexxRoutineEntry rx3270_functions[] =  
70 -{  
71 - REXX_TYPED_ROUTINE(rx3270version, rx3270version),  
72 - REXX_TYPED_ROUTINE(rx3270QueryCState, rx3270QueryCState),  
73 - REXX_TYPED_ROUTINE(rx3270Disconnect, rx3270Disconnect),  
74 - REXX_TYPED_ROUTINE(rx3270Connect, rx3270Connect),  
75 - REXX_TYPED_ROUTINE(rx3270isConnected, rx3270isConnected),  
76 - REXX_TYPED_ROUTINE(rx3270WaitForEvents, rx3270WaitForEvents),  
77 - REXX_TYPED_ROUTINE(rx3270Sleep, rx3270Sleep),  
78 - REXX_TYPED_ROUTINE(rx3270SendENTERKey, rx3270SendENTERKey),  
79 - REXX_TYPED_ROUTINE(rx3270SendPFKey, rx3270SendPFKey),  
80 - REXX_TYPED_ROUTINE(rx3270SendPAKey, rx3270SendPAKey),  
81 - REXX_TYPED_ROUTINE(rx3270WaitForTerminalReady, rx3270WaitForTerminalReady),  
82 - REXX_TYPED_ROUTINE(rx3270WaitForStringAt, rx3270WaitForStringAt),  
83 - REXX_TYPED_ROUTINE(rx3270GetStringAt, rx3270GetStringAt),  
84 - REXX_TYPED_ROUTINE(rx3270IsTerminalReady, rx3270IsTerminalReady),  
85 - REXX_TYPED_ROUTINE(rx3270queryStringAt, rx3270queryStringAt),  
86 - REXX_TYPED_ROUTINE(rx3270SetStringAt, rx3270SetStringAt),  
87 - REXX_TYPED_ROUTINE(rx3270CloseApplication, rx3270CloseApplication),  
88 -  
89 - REXX_TYPED_ROUTINE(rx3270Erase, rx3270Erase),  
90 - REXX_TYPED_ROUTINE(rx3270EraseEOF, rx3270EraseEOF),  
91 - REXX_TYPED_ROUTINE(rx3270EraseEOL, rx3270EraseEOL),  
92 - REXX_TYPED_ROUTINE(rx3270EraseInput, rx3270EraseInput),  
93 -  
94 - REXX_TYPED_ROUTINE(rx3270IsProtected, rx3270IsProtected),  
95 - REXX_TYPED_ROUTINE(rx3270IsProtectedAt, rx3270IsProtectedAt),  
96 - REXX_TYPED_ROUTINE(rx3270SetUnlockDelay, rx3270SetUnlockDelay),  
97 -  
98 - REXX_TYPED_ROUTINE(ebc2asc, ebc2asc),  
99 - REXX_TYPED_ROUTINE(asc2ebc, asc2ebc),  
100 -  
101 -  
102 - // rx3270Popup  
103 - REXX_LAST_METHOD()  
104 -};  
105 -  
106 -RexxMethodEntry rx3270_methods[] =  
107 -{  
108 - REXX_METHOD(rx3270_method_version, rx3270_method_version ),  
109 - REXX_METHOD(rx3270_method_revision, rx3270_method_revision ),  
110 - REXX_METHOD(rx3270_method_init, rx3270_method_init ),  
111 - REXX_METHOD(rx3270_method_uninit, rx3270_method_uninit ),  
112 - REXX_METHOD(rx3270_method_connect, rx3270_method_connect ),  
113 - REXX_METHOD(rx3270_method_disconnect, rx3270_method_disconnect ),  
114 - REXX_METHOD(rx3270_method_sleep, rx3270_method_sleep ),  
115 - REXX_METHOD(rx3270_method_is_connected, rx3270_method_is_connected ),  
116 - REXX_METHOD(rx3270_method_is_ready, rx3270_method_is_ready ),  
117 - REXX_METHOD(rx3270_method_wait_for_ready, rx3270_method_wait_for_ready ),  
118 - REXX_METHOD(rx3270_method_set_cursor, rx3270_method_set_cursor ),  
119 - REXX_METHOD(rx3270_method_set_cursor, rx3270_method_get_cursor_addr ),  
120 - REXX_METHOD(rx3270_method_set_cursor, rx3270_method_set_cursor_addr ),  
121 - REXX_METHOD(rx3270_method_enter, rx3270_method_enter ),  
122 - REXX_METHOD(rx3270_method_enter, rx3270_method_erase ),  
123 - REXX_METHOD(rx3270_method_enter, rx3270_method_erase_eof ),  
124 - REXX_METHOD(rx3270_method_enter, rx3270_method_erase_eol ),  
125 - REXX_METHOD(rx3270_method_enter, rx3270_method_erase_input ),  
126 - REXX_METHOD(rx3270_method_pfkey, rx3270_method_pfkey ),  
127 - REXX_METHOD(rx3270_method_pakey, rx3270_method_pakey ),  
128 - REXX_METHOD(rx3270_method_get_text, rx3270_method_get_text ),  
129 - REXX_METHOD(rx3270_method_get_text_at, rx3270_method_get_text_at ),  
130 - REXX_METHOD(rx3270_method_set_text_at, rx3270_method_set_text_at ),  
131 - REXX_METHOD(rx3270_method_cmp_text_at, rx3270_method_cmp_text_at ),  
132 - REXX_METHOD(rx3270_method_event_trace, rx3270_method_event_trace ),  
133 - REXX_METHOD(rx3270_method_screen_trace, rx3270_method_screen_trace ),  
134 - REXX_METHOD(rx3270_method_ds_trace, rx3270_method_ds_trace ),  
135 - REXX_METHOD(rx3270_method_set_option, rx3270_method_set_option ),  
136 - REXX_METHOD(rx3270_method_test, rx3270_method_test ),  
137 - REXX_METHOD(rx3270_method_wait_for_text_at, rx3270_method_wait_for_text_at ),  
138 -  
139 - REXX_METHOD(rx3270_method_get_field_len, rx3270_method_get_field_len ),  
140 - REXX_METHOD(rx3270_method_get_field_start, rx3270_method_get_field_start ),  
141 - REXX_METHOD(rx3270_method_get_next_unprotected, rx3270_method_get_next_unprotected ),  
142 -  
143 - REXX_METHOD(rx3270_method_get_is_protected, rx3270_method_get_is_protected ),  
144 - REXX_METHOD(rx3270_method_get_is_protected_at, rx3270_method_get_is_protected_at ),  
145 -  
146 - REXX_METHOD(rx3270_method_get_selection, rx3270_method_get_selection ),  
147 - REXX_METHOD(rx3270_method_set_selection, rx3270_method_set_selection ),  
148 - REXX_METHOD(rx3270_method_get_clipboard, rx3270_method_get_clipboard ),  
149 - REXX_METHOD(rx3270_method_set_clipboard, rx3270_method_set_clipboard ),  
150 -  
151 - REXX_METHOD(rx3270_method_erase, rx3270_method_erase ),  
152 - REXX_METHOD(rx3270_method_erase_eof, rx3270_method_erase_eof ),  
153 - REXX_METHOD(rx3270_method_erase_eol, rx3270_method_erase_eol ),  
154 - REXX_METHOD(rx3270_method_erase_input, rx3270_method_erase_input ),  
155 -  
156 - REXX_METHOD(rx3270_method_popup, rx3270_method_popup ),  
157 - REXX_METHOD(rx3270_method_get_filename, rx3270_method_get_filename ),  
158 -  
159 - REXX_METHOD(rx3270_method_get_cursor_addr, rx3270_method_get_cursor_addr ),  
160 - REXX_METHOD(rx3270_method_set_cursor_addr, rx3270_method_set_cursor_addr ),  
161 - REXX_METHOD(rx3270_method_input_text, rx3270_method_input_text ),  
162 -  
163 - REXX_METHOD(rx3270_method_get_display_charset, rx3270_method_get_display_charset ),  
164 - REXX_METHOD(rx3270_method_set_display_charset, rx3270_method_set_display_charset ),  
165 -  
166 - REXX_METHOD(rx3270_method_get_host_charset, rx3270_method_get_host_charset ),  
167 - REXX_METHOD(rx3270_method_set_host_charset, rx3270_method_set_host_charset ),  
168 -  
169 - REXX_METHOD(rx3270_method_set_unlock_delay, rx3270_method_set_unlock_delay ),  
170 -  
171 - REXX_LAST_METHOD()  
172 -};  
173 -  
174 -RexxPackageEntry rx3270_package_entry =  
175 -{  
176 - STANDARD_PACKAGE_HEADER  
177 - REXX_CURRENT_INTERPRETER_VERSION, // anything after 4.0.0 will work  
178 - "rx3270", // name of the package  
179 - PACKAGE_VERSION, // package information  
180 - NULL, // no load/unload functions  
181 - NULL,  
182 - rx3270_functions, // the exported functions  
183 - rx3270_methods // no methods in rx3270.  
184 -};  
185 -  
186 -// package loading stub.  
187 -/*  
188 -OOREXX_GET_PACKAGE(rx3270);  
189 -*/  
190 -  
191 -BEGIN_EXTERN_C()  
192 -  
193 -LIB3270_EXPORT void rx3270_set_package_option(RexxOption *option)  
194 -{  
195 - static const RexxLibraryPackage package = { "rx3270", &rx3270_package_entry };  
196 -  
197 - option->optionName = REGISTER_LIBRARY;  
198 - option->option = (void *) &package;  
199 -  
200 -}  
201 -  
202 -LIB3270_EXPORT RexxPackageEntry * RexxEntry RexxGetPackage(void)  
203 -{  
204 - return &rx3270_package_entry;  
205 -}  
206 -END_EXTERN_C()  
207 -  
208 -  
src/plugins/rx3270/sample/asc2ebc.rex
@@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
1 -/*  
2 - * Sample code for ASC -> EBCDIC conversion  
3 - *  
4 - */  
5 -  
6 - STRING = "ASCII STRING"  
7 -  
8 - say c2x(asc2ebc(STRING))  
9 -  
10 -return 0  
11 -  
12 -  
13 -::requires "rx3270.cls"  
src/plugins/rx3270/sample/charset.rex
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -/*  
2 - * Sample rexx code to get host charset  
3 - */  
4 -  
5 - host = .rx3270~new("")  
6 -  
7 - say "Display charset: "||host~getDisplayCharset()  
8 - say "Host charset: "||host~getHostCharset()  
9 -  
10 - return 0  
11 -  
12 -::requires "rx3270.cls"  
src/plugins/rx3270/sample/clipboard.rex
@@ -1,119 +0,0 @@ @@ -1,119 +0,0 @@
1 -/*  
2 - * Sample rexx code to justified paste the clipboard contents.  
3 - *  
4 - * Autor: Perry Werneck <perry.werneck@gmail.com>  
5 - *  
6 - */  
7 -  
8 -trace "?R"  
9 -  
10 - host = .rx3270~new("pw3270:a")  
11 -  
12 - if host~connected() = 0 then  
13 - do  
14 - host~popup("error","Can't start script","Disconnected from host")  
15 - return 0  
16 - end  
17 -  
18 - text = strip(host~GetClipboard())  
19 - if text = "" then  
20 - do  
21 - say "Clipboard is empty"  
22 - return 0  
23 - end  
24 -  
25 - if host~WaitForReady(60) <> 0 then  
26 - do  
27 - host~popup("error","Failed","Timeout waiting for host response")  
28 - return 0  
29 - end  
30 -  
31 - cursor = host~GetCursorAddr()  
32 - next = cursor  
33 -  
34 - do while text <> ""  
35 - addr = host~GetFieldStart(next)  
36 - next = host~GetNextUnprotected(addr)  
37 -  
38 - host~SetCursorAddr(addr)  
39 -  
40 - field_len = host~GetFieldLen()  
41 -  
42 - s = strip(left(text,field_len))  
43 - p = lastpos(" ",s)  
44 - n = pos(d2c(10),s)  
45 -  
46 - select  
47 - when n <> 0 then  
48 - do  
49 - s = strip(left(text,n-1))  
50 - text = strip(substr(text,n+1))  
51 - end  
52 -  
53 - when length(text) < field_len then  
54 - do  
55 - s = justify(strip(text),field_len)  
56 - text = ""  
57 - end  
58 -  
59 - when p = 0 then  
60 - do  
61 - s = strip(left(text,field_len))  
62 - text = substr(text,field_len+1)  
63 - end  
64 -  
65 - otherwise  
66 - s = strip(left(text,p))  
67 - text = strip(substr(text,p+1))  
68 - end  
69 -  
70 - /* Insert new string */  
71 - host~input(s)  
72 -  
73 - if next <= cursor then  
74 - do  
75 - /* Next field is before the original position */  
76 - host~SetClipboard(text)  
77 - return 0  
78 - end  
79 -  
80 - end  
81 -  
82 -return 0  
83 -  
84 -justify: procedure  
85 -  
86 - use arg text, len  
87 -  
88 - wlen = words(text)  
89 - if wlen < 3  
90 - then return text  
91 -  
92 - ln = .array~new()  
93 - sz = 0  
94 -  
95 - do f = 1 to wlen  
96 - ln[f] = word(text,f)||" "  
97 - sz = sz + length(ln[f])  
98 - end  
99 -  
100 - do while sz < len  
101 - do f = wlen-1 to 1 by -1  
102 - ln[f] = ln[f]||"."  
103 - sz = sz+1  
104 - if sz >= len  
105 - then leave  
106 - end  
107 - end  
108 -  
109 - str = ""  
110 - do f = 1 to wlen  
111 - str = str||ln[f]  
112 - end  
113 -  
114 -return strip(str)  
115 -  
116 -::requires "rx3270.cls"  
117 -  
118 -  
119 -  
src/plugins/rx3270/sample/ebc2asc.rex
@@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
1 -/*  
2 - * Sample code for EBCDIC -> ASC conversion  
3 - *  
4 - */  
5 -  
6 - STRING = x2c("C1E2C3C9C940E2E3D9C9D5C7")  
7 -  
8 - say length(string)  
9 - say ebc2asc(STRING)  
10 -  
11 -return 0  
12 -  
13 -  
14 -::requires "rx3270.cls"  
src/plugins/rx3270/sample/getversion.rex
@@ -1,8 +0,0 @@ @@ -1,8 +0,0 @@
1 -  
2 -  
3 -say rx3270version()  
4 -  
5 -return 0  
6 -  
7 -::requires "rx3270" library  
8 -  
src/plugins/rx3270/sample/object.rex
@@ -1,44 +0,0 @@ @@ -1,44 +0,0 @@
1 -  
2 -use arg uri  
3 -  
4 -if arg(1) <> "" then  
5 -do  
6 -  
7 - /* Has a host URI, create a new session and connect to the host */  
8 -  
9 - host = .rx3270~new("")  
10 -  
11 - if host~connect(uri,1) <> 0 then  
12 - do  
13 - say "Error connecting to "||uri  
14 - return -1  
15 - end  
16 -end  
17 -else  
18 -do  
19 - /* No host URI, use the first session */  
20 - host = .rx3270~new("pw3270:A")  
21 -  
22 -end  
23 -  
24 -if host~WaitForReady(60) <> 0 then  
25 -do  
26 - say "Timeout waiting for terminal ready"  
27 -end  
28 -  
29 -say "Text(2,2,23)=["||host~GetTextAt(2,2,23)||"]"  
30 -say "Text(3,2,27)=["||host~GetTextAt(3,2,27)||"]"  
31 -  
32 -host~enter()  
33 -if host~WaitForReady(60) <> 0 then  
34 -do  
35 - say "Timeout waiting for terminal ready"  
36 -end  
37 -  
38 -host~disconnect()  
39 -  
40 -return 0  
41 -  
42 -  
43 -::requires "rx3270.cls"  
44 -  
src/plugins/rx3270/sample/protected.rex
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -/*  
2 - * Sample rexx code to get host charset  
3 - */  
4 -  
5 - host = .rx3270~new("")  
6 -  
7 - say "Posição 19,39: "||host~getIsProtectedAt(19,39)  
8 - say "Posição 20,39: "||host~getIsProtectedAt(20,39)  
9 -  
10 - return 0  
11 -  
12 -::requires "rx3270.cls"  
src/plugins/rx3270/sample/remote.rex
@@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
1 -  
2 -use arg uri  
3 -  
4 -trace "?R"  
5 -  
6 -host = .rx3270~new("pw3270:a")  
7 -  
8 -say "PW3270 revision is "||host~revision()  
9 -say "Connection state is "||host~connected()  
10 -say "Ready state is "||host~ready()  
11 -  
12 -if uri <> "URI"  
13 - then say "Connect rc="||host~connect(uri)  
14 -  
15 -say "Wait for ready is "||host~WaitForReady(60)  
16 -  
17 -say "Text[3,2,27]="||host~GetTextAt(3,2,27)  
18 -  
19 -say "ENTER exits with rc="||host~enter()  
20 -  
21 -say "Wait for ready is "||host~WaitForReady(60)  
22 -  
23 -return 0  
24 -  
25 -::requires "rx3270.cls"  
26 -  
src/plugins/rx3270/typed_routines.cc
@@ -1,323 +0,0 @@ @@ -1,323 +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 typed_routines.cc e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 - #include "rx3270.h"  
31 - #include <time.h>  
32 - #include <string.h>  
33 - #include <exception>  
34 - #include <pw3270/class.h>  
35 -  
36 - using namespace std;  
37 - using namespace PW3270_NAMESPACE;  
38 -  
39 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
40 -  
41 -RexxRoutine0(CSTRING, rx3270version)  
42 -{  
43 - try  
44 - {  
45 - return session::get_default()->get_version().c_str();  
46 - }  
47 - catch(std::exception& e)  
48 - {  
49 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
50 - }  
51 -  
52 - return NULL;  
53 -}  
54 -  
55 -RexxRoutine0(CSTRING, rx3270QueryCState)  
56 -{  
57 - #define DECLARE_XLAT_STATE( x ) { x, #x }  
58 -  
59 - static const struct _xlat_state  
60 - {  
61 - LIB3270_CSTATE state;  
62 - const char * ret;  
63 - } xlat_state[] =  
64 - {  
65 - { LIB3270_NOT_CONNECTED, "NOT_CONNECTED" },  
66 - { LIB3270_RESOLVING, "RESOLVING" },  
67 - { LIB3270_PENDING, "PENDING" },  
68 - { LIB3270_CONNECTED_INITIAL, "CONNECTED_INITIAL" },  
69 - { LIB3270_CONNECTED_ANSI, "CONNECTED_ANSI" },  
70 - { LIB3270_CONNECTED_3270, "CONNECTED_3270" },  
71 - { LIB3270_CONNECTED_INITIAL_E, "CONNECTED_INITIAL_E" },  
72 - { LIB3270_CONNECTED_NVT, "CONNECTED_NVT" },  
73 - { LIB3270_CONNECTED_SSCP, "CONNECTED_SSCP" },  
74 - { LIB3270_CONNECTED_TN3270E, "CONNECTED_TN3270E" },  
75 - };  
76 -  
77 - size_t f;  
78 - LIB3270_CSTATE state = session::get_default()->get_cstate();  
79 -  
80 - for(f=0;f < (sizeof(xlat_state)/sizeof(struct _xlat_state)); f++)  
81 - {  
82 - if(state == xlat_state[f].state)  
83 - return xlat_state[f].ret;  
84 - }  
85 -  
86 - return "UNEXPECTED";  
87 -}  
88 -  
89 -RexxRoutine0(int, rx3270Disconnect)  
90 -{  
91 - return session::get_default()->disconnect();  
92 -}  
93 -  
94 -RexxRoutine2(int, rx3270Connect, CSTRING, hostname, int, wait)  
95 -{  
96 - return session::get_default()->connect(hostname,wait);  
97 -}  
98 -  
99 -RexxRoutine0(int, rx3270isConnected)  
100 -{  
101 - return session::get_default()->is_connected();  
102 -}  
103 -  
104 -RexxRoutine0(int, rx3270WaitForEvents)  
105 -{  
106 - return session::get_default()->iterate();  
107 -}  
108 -  
109 -RexxRoutine1(int, rx3270Sleep, int, seconds)  
110 -{  
111 - return session::get_default()->wait(seconds);  
112 -}  
113 -  
114 -RexxRoutine0(int, rx3270SendENTERKey)  
115 -{  
116 - return session::get_default()->enter();  
117 -}  
118 -  
119 -RexxRoutine0(int, rx3270Erase)  
120 -{  
121 - return session::get_default()->erase();  
122 -}  
123 -  
124 -RexxRoutine0(int, rx3270EraseEOF)  
125 -{  
126 - return session::get_default()->erase_eof();  
127 -}  
128 -  
129 -RexxRoutine0(int, rx3270EraseEOL)  
130 -{  
131 - return session::get_default()->erase_eol();  
132 -}  
133 -  
134 -RexxRoutine0(int, rx3270EraseInput)  
135 -{  
136 - return session::get_default()->erase_input();  
137 -}  
138 -  
139 -RexxRoutine1(int, rx3270SendPFKey, int, key)  
140 -{  
141 - return session::get_default()->pfkey(key);  
142 -}  
143 -  
144 -RexxRoutine1(int, rx3270SendPAKey, int, key)  
145 -{  
146 - return session::get_default()->pakey(key);  
147 -}  
148 -  
149 -RexxRoutine1(int, rx3270WaitForTerminalReady, int, seconds)  
150 -{  
151 - return session::get_default()->wait_for_ready(seconds);  
152 -}  
153 -  
154 -RexxRoutine4(int, rx3270WaitForStringAt, int, row, int, col, CSTRING, key, int, timeout)  
155 -{  
156 - try  
157 - {  
158 - return session::get_default()->wait_for_string_at(row,col,key,timeout);  
159 - }  
160 - catch(std::exception &e)  
161 - {  
162 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
163 - }  
164 -  
165 - return ETIMEDOUT;  
166 -  
167 -}  
168 -  
169 -RexxRoutine3(RexxStringObject, rx3270GetStringAt, int, row, int, col, int, sz)  
170 -{  
171 - try  
172 - {  
173 - string str = session::get_default()->get_string_at(row,col,(int) sz);  
174 - return context->String((CSTRING) str.c_str());  
175 - }  
176 - catch(std::exception &e)  
177 - {  
178 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
179 - }  
180 -  
181 - return context->String("");  
182 -}  
183 -  
184 -RexxRoutine0(int, rx3270IsTerminalReady)  
185 -{  
186 - return session::get_default()->is_ready();  
187 -}  
188 -  
189 -RexxRoutine3(int, rx3270queryStringAt, int, row, int, col, CSTRING, key)  
190 -{  
191 - try  
192 - {  
193 - return session::get_default()->cmp_string_at(row,col,key);  
194 - }  
195 - catch(std::exception &e)  
196 - {  
197 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
198 - }  
199 -  
200 - return -1;  
201 -}  
202 -  
203 -RexxRoutine2(int, rx3270SetCursorPosition, int, row, int, col)  
204 -{  
205 - try  
206 - {  
207 - return session::get_default()->set_cursor_position(row,col);  
208 - }  
209 - catch(std::exception &e)  
210 - {  
211 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
212 - }  
213 -  
214 - return -1;  
215 -}  
216 -  
217 -RexxRoutine3(int, rx3270SetStringAt, int, row, int, col, CSTRING, text)  
218 -{  
219 - try  
220 - {  
221 - return session::get_default()->set_string_at(row,col,text);  
222 - }  
223 - catch(std::exception &e)  
224 - {  
225 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
226 - }  
227 - return -1;  
228 -}  
229 -  
230 -RexxRoutine0(int, rx3270CloseApplication)  
231 -{  
232 - return session::get_default()->quit();  
233 -}  
234 -  
235 -  
236 -RexxRoutine2(RexxStringObject, asc2ebc, CSTRING, str, OPTIONAL_int, sz)  
237 -{  
238 - try  
239 - {  
240 - if(sz < 1)  
241 - sz = strlen(str);  
242 -  
243 - if(sz)  
244 - {  
245 - char buffer[sz+1];  
246 - memcpy(buffer,str,sz);  
247 - buffer[sz] = 0;  
248 - return context->String((CSTRING) session::get_default()->asc2ebc((unsigned char *)buffer,sz));  
249 - }  
250 - }  
251 - catch(std::exception &e)  
252 - {  
253 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
254 - }  
255 -  
256 - return context->String("");  
257 -}  
258 -  
259 -RexxRoutine2(RexxStringObject, ebc2asc, CSTRING, str, OPTIONAL_int, sz)  
260 -{  
261 - try  
262 - {  
263 - if(sz < 1)  
264 - sz = strlen(str);  
265 -  
266 - if(sz)  
267 - {  
268 - char buffer[sz+1];  
269 - memcpy(buffer,str,sz);  
270 - buffer[sz] = 0;  
271 - return context->String((CSTRING) session::get_default()->ebc2asc((unsigned char *)buffer,sz));  
272 - }  
273 - }  
274 - catch(std::exception &e)  
275 - {  
276 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
277 - }  
278 -  
279 - return context->String("");  
280 -}  
281 -  
282 -RexxRoutine1(int, rx3270IsProtected, int, baddr)  
283 -{  
284 - try  
285 - {  
286 - return session::get_default()->get_is_protected(baddr);  
287 - }  
288 - catch(std::exception &e)  
289 - {  
290 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
291 - }  
292 -  
293 - return -1;  
294 -}  
295 -  
296 -RexxRoutine2(int, rx3270IsProtectedAt, int, row, int, col)  
297 -{  
298 - try  
299 - {  
300 - return session::get_default()->get_is_protected_at(row,col);  
301 - }  
302 - catch(std::exception &e)  
303 - {  
304 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
305 - }  
306 -  
307 - return -1;  
308 -}  
309 -  
310 -RexxRoutine1(int, rx3270SetUnlockDelay, int, delay)  
311 -{  
312 - try  
313 - {  
314 - session::get_default()->set_unlock_delay((unsigned short) delay);  
315 - }  
316 - catch(std::exception &e)  
317 - {  
318 - context->RaiseException1(Rexx_Error_Application_error,context->NewStringFromAsciiz(e.what()));  
319 - }  
320 -  
321 - return 0;  
322 -}  
323 -