Commit cff9cde558df936a9cd02b798621f69f32b2b918

Authored by Perry Werneck
Committed by GitHub
2 parents 0158d397 012779ca
Exists in master

Merge pull request #1 from PerryWerneck/develop

Updating to version 5.2
.gitignore
... ... @@ -24,4 +24,4 @@ RPMS
24 24 SOURCES
25 25 SPECS
26 26 SRPMS
27   -
  27 +*.rc
... ...
Makefile.in
... ... @@ -24,8 +24,8 @@
24 24 # erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
25 25 #
26 26  
27   -GLUELIB=lib3270-mono@DLLEXT@
28   -LIBNAME=pw3270-sharp.dll
  27 +GLUELIB=@NATIVE_SONAME@
  28 +LIBNAME=tn3270-sharp.dll
29 29 TESTPROGRAM?=sample
30 30  
31 31 #---[ Configuration values ]-------------------------------------------------------------
... ... @@ -67,181 +67,73 @@ RPMBUILD=@RPMBUILD@
67 67 #---[ Rules ]----------------------------------------------------------------------------
68 68  
69 69 $(BINDBG)/%.exe: \
70   - testprograms/%.cs \
  70 + src/testprograms/%.cs \
71 71 $(BINDBG)/$(LIBNAME)
72 72  
73 73 @$(MCS) -reference:$(BINDBG)/$(LIBNAME) -debug -out:$@ $<
74 74  
75 75 $(BINDBG)/%.exe: \
76   - testprograms/%.vb \
  76 + src/testprograms/%.vb \
77 77 $(BINDBG)/$(LIBNAME)
78 78  
79 79 @$(VBNC) -reference:$(BINDBG)/$(LIBNAME) -debug -out:$@ $<
80 80  
81   -$(BINRLS)/%.exe: \
82   - testprograms/%.cs
83   -
84   - @$(MCS) -reference:$(BINRLS)/$(LIBNAME) -out:$@ $<
85   -
86   -%.tar.bz2: \
87   - %.tar
88   -
89   - @echo $< ...
90   - @bzip2 --compress -9 --stdout $< > $@
91   - @chmod 0644 $@
92   -
93   -%.tar.gz: \
94   - %.tar
95   -
96   - @echo $< ...
97   - @gzip -9 --stdout $< > $@
98   - @chmod 0644 $@
99   -
100 81 install-%: \
101 82 src/%/Makefile \
102 83 all
103 84  
104 85 @make -C `dirname $<` DESTDIR=$(DESTDIR) install
105 86  
106   -#---[ Targets ]--------------------------------------------------------------------------
  87 +#---[ Release Targets ]------------------------------------------------------------------
107 88  
108 89 all: \
109   - $(BINRLS)/$(GLUELIB) \
110 90 $(BINRLS)/$(LIBNAME)
111 91  
112   -install: \
113   - install-native \
114   - install-pw3270-sharp
115   -
116   -
117 92 Release: \
118   - $(BINRLS)/$(GLUELIB) \
119 93 $(BINRLS)/$(LIBNAME)
120 94  
121   -zip: \
122   - @ZIPNAME@-@PACKAGE_VERSION@.@host@.zip
123   -
124   -@ZIPNAME@-@PACKAGE_VERSION@.@host@.zip: \
125   - $(BINRLS)/$(GLUELIB) \
126   - $(BINRLS)/$(LIBNAME) \
127   - $(BINRLS)/sample.exe
128   -
129   - @zip -9 -j $@ \
130   - $(BINRLS)/$(GLUELIB) \
131   - $(BINRLS)/$(LIBNAME) \
132   - $(BINRLS)/*.xml \
133   - testprograms/sample.cs \
134   - testprograms/vbsample.vb \
135   - src/pw3270-sharp/pw3270-sharp.cs \
136   - $(BINRLS)/sample.exe
137   -
138   -rpm: \
139   - $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2
140   -
141   -ifneq ($(RPMBUILD),no)
142   - @$(MKDIR) $(BASEDIR)/rpm
143   - @$(MKDIR) $(BASEDIR)/rpm/SPECS
144   - @$(MKDIR) $(BASEDIR)/rpm/SOURCES
145   - @$(MKDIR) $(BASEDIR)/rpm/SRPMS
146   - @$(MKDIR) $(BASEDIR)/rpm/RPMS
147   - @$(MKDIR) $(BASEDIR)/rpm/BUILD
148   - @$(MKDIR) $(BASEDIR)/rpm/BUILDROOT
149   - @umask 002 ; $(RPMBUILD) \
150   - --define="_topdir $(BASEDIR)/rpm" \
151   - --define="_packager $(USER)@$(HOSTNAME)" \
152   - --clean \
153   - -ta $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2
154   -endif
155   -
156   -bz2: \
157   - $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2
158   -
159   -$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar: \
160   - $(SRCDIR)
161   -
162   - @$(AMTAR) \
163   - --verbose \
164   - --format=ustar \
165   - --create \
166   - --exclude-vcs \
167   - --directory $(BASEDIR)/.src \
168   - --owner=root \
169   - --group=root \
170   - --file=$@ \
171   - $(PACKAGE_TARNAME)-@PACKAGE_VERSION@
172   -
173   -
174   -$(SRCDIR): \
175   - clean
176   -
177   - @$(MKDIR) $(SRCDIR)
178   - @cp *.ac $(SRCDIR)
179   - @cp *.in $(SRCDIR)
180   - @cp *.cbp $(SRCDIR)
181   - @cp *.sh $(SRCDIR)
182   - @cp rpm/*.spec $(SRCDIR)
183   - @cp README.md $(SRCDIR)
184   - @cp LICENCA $(SRCDIR)
185   - @cp LICENSE $(SRCDIR)
186   - @cp AUTHORS $(SRCDIR)
187   -
188   - @$(MKDIR) $(SRCDIR)/testprograms
189   - @cp testprograms/* $(SRCDIR)/testprograms
190   -
191   - @$(MKDIR) $(SRCDIR)/scripts
192   - @cp scripts/* $(SRCDIR)/scripts
193   -
194   - @$(MKDIR) $(SRCDIR)/src/include
195   - @cp src/include/*.in $(SRCDIR)/src/include
196   -
197   - @$(MKDIR) $(SRCDIR)/src/native
198   - @cp src/native/*.in $(SRCDIR)/src/native
199   - @cp src/native/*.cc $(SRCDIR)/src/native
200   - @cp src/native/*.h $(SRCDIR)/src/native
201   -
202   - @$(MKDIR) $(SRCDIR)/src/pw3270-sharp
203   - @cp src/pw3270-sharp/*.in $(SRCDIR)/src/pw3270-sharp
204   - @cp src/pw3270-sharp/*.cs $(SRCDIR)/src/pw3270-sharp
205   -
206 95  
207 96 $(BINRLS)/$(GLUELIB): \
208   - src/native/*.cc \
209   - src/native/*.h \
210   - src/include/*.h
  97 + src/native/* \
  98 + src/native/core/*
211 99  
212 100 @make -C src/native $@
213 101  
214 102 $(BINRLS)/$(LIBNAME): \
215   - src/pw3270-sharp/*.cs \
216   - src/include/*.h
  103 + $(BINRLS)/$(GLUELIB) \
  104 + src/core/*
217 105  
218   - @make -C src/pw3270-sharp $@
  106 + @make -C src/core $@
219 107  
220   -Debug: \
221   - $(BINDBG)/$(GLUELIB) \
222   - $(BINDBG)/$(LIBNAME) \
223   - $(BINDBG)/sample.exe
  108 +install: \
  109 + install-native \
  110 + install-core
224 111  
  112 +#---[ Debug Targets ]--------------------------------------------------------------------
225 113  
226   -run: \
227   - $(BINDBG)/$(GLUELIB) \
228   - $(BINDBG)/$(LIBNAME) \
229   - $(BINDBG)/$(TESTPROGRAM).exe
  114 +Debug: \
  115 + $(BINDBG)/$(LIBNAME)
230 116  
231   - @$(MONO) $(BINDBG)/$(TESTPROGRAM).exe
232 117  
233 118 $(BINDBG)/$(GLUELIB): \
234   - src/native/*.cc \
235   - src/native/*.h \
236   - src/include/*.h
  119 + src/native/* \
  120 + src/native/core/*
237 121  
238 122 @make -C src/native $@
239 123  
240 124 $(BINDBG)/$(LIBNAME): \
241   - src/pw3270-sharp/*.cs \
242   - src/include/*.h
  125 + $(BINDBG)/$(GLUELIB) \
  126 + src/core/*
  127 +
  128 + @make -C src/core $@
  129 +
  130 +#---[ Test targets ]---------------------------------------------------------------------
  131 +
  132 +ipc-test: \
  133 + $(BINDBG)/ipc.exe
  134 +
243 135  
244   - @make -C src/pw3270-sharp $@
  136 +#---[ Clean Targets ]--------------------------------------------------------------------
245 137  
246 138 cleanDebug: \
247 139 clean
... ...
configure.ac
  1 +dnl
  2 +dnl Software pw3270, desenvolvido com base nos códigos fontes do C3270 e X3270
  3 +dnl (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 +dnl aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 +dnl
  6 +dnl Copyright (C) <2008> <Banco do Brasil S.A.>
  7 +dnl
  8 +dnl Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 +dnl os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 +dnl Free Software Foundation.
  11 +dnl
  12 +dnl Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 +dnl GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 +dnl A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 +dnl obter mais detalhes.
  16 +dnl
  17 +dnl Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 +dnl programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 +dnl Place, Suite 330, Boston, MA, 02111-1307, USA
  20 +dnl
  21 +dnl Contatos:
  22 +dnl
  23 +dnl perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  24 +dnl erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
  25 +dnl
1 26  
2 27 dnl Process this file with autoconf to produce a configure script.
3 28  
4 29 dnl The minimum version of autoconf required.
5   -AC_PREREQ(2.59)
  30 +AC_PREREQ(2.61)
6 31  
7 32 dnl Initialise automake with the package name, version and
8 33 dnl bug-reporting address.
9   -AC_INIT([lib3270-mono-bindings], [5.1], [perry.werneck@gmail.com])
  34 +AC_INIT([lib3270-mono-bindings], [5.2], [perry.werneck@gmail.com])
10 35  
11 36 dnl Place auxilliary scripts here.
12 37 AC_CONFIG_AUX_DIR([scripts])
... ... @@ -24,8 +49,8 @@ dnl Check for iconv
24 49 AM_ICONV
25 50  
26 51 dnl Checks for programs.
27   -AC_PROG_CXX
28 52 AC_PROG_CC
  53 +AC_PROG_CXX
29 54 AC_PROG_SED
30 55 AC_PROG_LN_S
31 56  
... ... @@ -34,173 +59,123 @@ AC_LANG([C++])
34 59 dnl ---------------------------------------------------------------------------
35 60 dnl Initialize defaults
36 61 dnl ---------------------------------------------------------------------------
37   -DLLFLAGS="-shared -Wl,-soname,\$(@F)"
38   -LDSTATIC=""
39   -DBG_CFLAGS="-DDEBUG=1"
  62 +
  63 +DBG_CFLAGS="-g -fstack-check -DDEBUG=1"
40 64 RLS_CFLAGS="-DNDEBUG=1"
  65 +PLUGINS=""
  66 +APP_RESOURCES=""
  67 +APP_LDFLAGS=""
  68 +DLL_LDFLAGS="-shared -Wl,-soname,\$(@F)"
41 69  
42 70 dnl ---------------------------------------------------------------------------
43 71 dnl Check for OS specifics
44 72 dnl ---------------------------------------------------------------------------
45 73  
46 74 case "$host" in
47   - *-mingw32)
48   - RLS_LDFLAGS="-Wl,--strip-all"
49   - DBG_LDFLAGS=""
50   - APP_LDFLAGS=""
51   -
52   - DBG_DATADIR=""
53   - RLS_DATADIR=""
  75 + *-mingw32|*-pc-msys)
  76 + app_cv_osname="windows"
54 77  
55   - EXEEXT=".exe"
56   -
57   - DLLPREFIX=""
  78 + CFLAGS="$CFLAGS -pthread -D_WIN32_WINNT=0x0600"
  79 + LIBS="$LIBS -lws2_32 -lwtsapi32 -lcomdlg32"
58 80 DLLEXT=".dll"
59 81  
60   - CFLAGS="$CFLAGS -Wall -Werror -D_WIN32_WINNT=0x0600"
61   - LDFLAGS="-static-libgcc -static-libstdc++ $LDFLAGS"
62   - LDSTATIC="-Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic"
63   - LIBS="$LIBS -lws2_32 -lntdll -lwtsapi32"
  82 + app_win32_revision=$(date +%-y.%-m.%-d.%-H)
  83 + AC_SUBST(WIN32_VERSION,$app_win32_revision)
64 84  
65   - LOGDIR=.
66   - ;;
  85 + app_win32_file_version=$(date +%-y,%-m,%-d,%-H)
  86 + AC_SUBST(WIN32_FILE_VERSION,$app_win32_file_version)
67 87  
68   - *)
69   - RLS_LDFLAGS=""
70   - DBG_LDFLAGS=""
71   - APP_LDFLAGS=""
  88 + AC_CONFIG_FILES(src/native/windows/resources.rc)
72 89  
73   - DBG_DATADIR="-DDATADIR=."
74   - DBG_CFLAGS="-fstack-check $DBG_CFLAGS"
75   -
76   - RLS_DATADIR="-DDATADIR=\$(datarootdir)/\$(PACKAGE_NAME)"
77   -
78   - EXEEXT=""
79   -
80   - DLLPREFIX="lib"
81   - DLLEXT=".so"
82   -
83   - CFLAGS="$CFLAGS -Wall -Werror"
  90 + if test "$host_cpu" = "x86_64"; then
  91 + app_cv_programfiles="PROGRAMFILES64"
  92 + app_cv_winarch="64"
  93 + else
  94 + app_cv_programfiles="PROGRAMFILES"
  95 + app_cv_winarch="32"
  96 + fi
84 97  
85   - # LIBS="-Wl,--no-allow-shlib-undefined,--as-needed,--no-undefined -pthread $LIBS"
86   - LIBS="-pthread $LIBS"
  98 + AC_SUBST(PROGRAMFILES,$app_cv_programfiles)
  99 + AC_SUBST(WINARCH,$app_cv_winarch)
  100 + ;;
87 101  
  102 + *)
  103 + CFLAGS="$CFLAGS -pthread"
  104 + LDFLAGS="$LDFLAGS -pthread"
  105 + app_cv_datadir="/usr/share"
  106 + app_cv_confdir="/etc"
  107 + app_cv_osname="linux"
88 108 LOGDIR="/var/log"
89   -
  109 + DLLEXT=".so"
90 110  
91 111 esac
92 112  
  113 +AC_SUBST(DATADIR,$app_cv_datadir)
  114 +AC_SUBST(CONFDIR,$app_cv_confdir)
  115 +AC_SUBST(OSNAME,$app_cv_osname)
93 116 AC_SUBST(LIBS)
94   -
95   -AC_SUBST(DBG_DATADIR)
96   -AC_SUBST(DBG_CFLAGS)
97   -
98   -AC_SUBST(RLS_DATADIR)
99   -AC_SUBST(RLS_CFLAGS)
100   -
101   -AC_SUBST(DBG_LDFLAGS)
102   -AC_SUBST(RLS_LDFLAGS)
103   -AC_SUBST(APP_LDFLAGS)
104   -
105   -AC_SUBST(EXEEXT)
  117 +AC_SUBST(LOGDIR)
106 118 AC_SUBST(DLLEXT)
107 119 AC_SUBST(DLLPREFIX)
108   -
109   -AC_SUBST(LOGDIR)
110   -AC_SUBST(LDSTATIC)
  120 +AC_SUBST(LDFLAGS)
  121 +AC_SUBST(DLL_LDFLAGS)
111 122  
112 123 dnl ---------------------------------------------------------------------------
113 124 dnl Check for other programs
114 125 dnl ---------------------------------------------------------------------------
115   -AC_PATH_TOOL([STRIP], [strip])
116   -AC_PATH_TOOL([RPMBUILD], [rpmbuild], [no])
117   -AC_PATH_TOOL([MAKENSIS], [makensis], [no])
118   -AC_PATH_TOOL([VALGRIND], [valgrind], [no])
  126 +
  127 +AC_PATH_TOOL([AR], [ar], [ar])
119 128 AC_PATH_TOOL([WINDRES], [windres], [no])
120   -AC_PATH_TOOL([ZIP], [zip], [zip])
121   -AC_PATH_TOOL([MCS], [mcs], [mcs])
122   -AC_PATH_TOOL([VBNC], [vbnc2], [vbnc2])
123   -AC_PATH_TOOL([GACUTIL], [gacutil], [gacutil])
124   -AC_PATH_TOOL([SN], [sn], [sn])
125   -AC_PATH_PROG([MONO], [mono], [no])
  129 +AC_PATH_TOOL([VALGRIND], [valgrind], [no])
  130 +AC_PATH_TOOL([MCS], [mcs], [no])
  131 +AC_PATH_TOOL([GACUTIL], [gacutil], [no])
  132 +AC_PATH_TOOL([SN], [sn], [no])
  133 +AC_PATH_TOOL([VBNC], [vbnc], [no])
  134 +
  135 +PKG_CHECK_EXISTS
126 136  
127 137 dnl ---------------------------------------------------------------------------
128 138 dnl Version info
129 139 dnl ---------------------------------------------------------------------------
130 140  
131   -AC_DEFINE(PACKAGE_RELEASE,APP_LEVEL)
132   -AC_SUBST(PACKAGE_RELEASE, APP_LEVEL)
  141 +AC_SUBST(PACKAGE_DESCRIPTION,".NET Bindings for lib3270/pw3270")
  142 +app_cv_zipname=$PACKAGE
133 143  
134 144 app_vrs_major=$(echo $VERSION | cut -d. -f1)
135 145 app_vrs_minor=$(echo $VERSION | cut -d. -f2)
136 146  
137   -AC_SUBST(PACKAGE_MAJOR_VERSION,$app_vrs_major)
138   -AC_SUBST(PACKAGE_MINOR_VERSION,$app_vrs_minor)
139   -
140 147 AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_VERSION, $app_vrs_major)
141 148 AC_DEFINE_UNQUOTED(PACKAGE_MINOR_VERSION, $app_vrs_minor)
142 149  
143 150 AC_SUBST(PACKAGE_MAJOR_VERSION,$app_vrs_major)
144 151 AC_SUBST(PACKAGE_MINOR_VERSION,$app_vrs_minor)
145 152  
146   -app_cv_description="C# Bindings for lib3270/pw3270"
147   -app_cv_zipname=$PACKAGE
148   -
149   -AC_DEFINE_UNQUOTED(PACKAGE_DESCRIPTION,"$app_cv_description")
150   -AC_SUBST(PACKAGE_DESCRIPTION,"$app_cv_description")
151   -
152   -dnl ---------------------------------------------------------------------------
153   -dnl Check for integer types & library functions
154   -dnl ---------------------------------------------------------------------------
  153 +AC_ARG_WITH([release], [AS_HELP_STRING([--with-release], [Set release])], [ app_cv_release="$withval" ],[ app_cv_release="`date +%-y`.`date +%-m`.`date +%-d`" ])
155 154  
156   -AC_CHECK_TYPES([pid_t, uint8_t, uint16_t, uint32_t, int32_t, uint64_t, int64_t])
157   -
158   -dnl ---------------------------------------------------------------------------
159   -dnl Check for libintl
160   -dnl ---------------------------------------------------------------------------
161   -
162   -AC_PATH_TOOL([XGETTEXT], [xgettext], [no])
163   -AC_PATH_TOOL([MSGCAT], [msgcat], [no])
164   -AC_PATH_TOOL([MSGINIT], [msginit], [no])
165   -AC_PATH_TOOL([MSGMERGE], [msgmerge], [no])
166   -AC_PATH_TOOL([MSGFMT], [msgfmt], [no])
167   -
168   -AC_CHECK_HEADER(libintl.h, [
169   - AC_DEFINE(HAVE_LIBINTL, 1)
170   -])
  155 +app_rls_major=$(echo $app_cv_release.0.0 | cut -d. -f1)
  156 +app_rls_minor=$(echo $app_cv_release.0.0 | cut -d. -f2)
171 157  
172   -dnl --------------------------------------------------
173   -dnl test for clock_gettime
174   -dnl --------------------------------------------------
  158 +AC_DEFINE_UNQUOTED(PACKAGE_RELEASE, $app_cv_release)
  159 +AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_RELEASE, $app_rls_major)
  160 +AC_DEFINE_UNQUOTED(PACKAGE_MINOR_RELEASE, $app_rls_minor)
175 161  
176   -AC_CHECK_FUNCS(clock_gettime, [], [
177   - AC_CHECK_LIB(rt, clock_gettime, [
178   - AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
179   - LIBS="$LIBS -lrt"
180   - ])
181   -])
  162 +AC_SUBST(PACKAGE_RELEASE,$app_cv_release)
  163 +AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major)
  164 +AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor)
182 165  
183   -dnl --------------------------------------------------
184   -dnl test for in_addr_t
185   -dnl --------------------------------------------------
186   -AC_MSG_CHECKING(for in_addr_t in netinet/in.h)
187   -AC_EGREP_HEADER(in_addr_t, netinet/in.h,
188   - [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],
189   - AC_MSG_RESULT(no))
  166 +case "$host" in
  167 + *-mingw32|*-pc-msys)
  168 + AC_SUBST(NATIVE_SONAME,lib3270-mono.dll)
  169 + ;;
190 170  
191   -dnl ---------------------------------------------------------------------------
192   -dnl test for reentrant time routines
193   -dnl ---------------------------------------------------------------------------
  171 + s390x-*)
  172 + AC_SUBST(NATIVE_SONAME,lib3270-mono.so)
  173 + ;;
194 174  
195   -AC_MSG_CHECKING(for localtime_r in time.h)
196   -AC_EGREP_HEADER(localtime_r, time.h,
197   - [ AC_DEFINE([HAVE_LOCALTIME_R], [1], [Define to 1 if localtime_r is available.]) AC_MSG_RESULT(yes) ],
198   - AC_MSG_RESULT(no))
  175 + *)
  176 + AC_SUBST(NATIVE_SONAME,lib3270-mono.so.$app_vrs_major.$app_vrs_minor)
199 177  
200   -AC_MSG_CHECKING(for gmtime_r in time.h)
201   -AC_EGREP_HEADER(gmtime_r, time.h,
202   - [ AC_DEFINE([HAVE_GMTIME_R], [1], [Define to 1 if gmtime_r is available.]) AC_MSG_RESULT(yes) ],
203   - AC_MSG_RESULT(no))
  178 +esac
204 179  
205 180 dnl ---------------------------------------------------------------------------
206 181 dnl Check for C++ 2011 support
... ... @@ -224,126 +199,82 @@ AS_VAR_POPDEF([CACHEVAR])dnl
224 199 AX_CHECK_COMPILE_FLAG([-std=gnu++11], [CFLAGS="$CFLAGS -std=gnu++11"])
225 200  
226 201 dnl ---------------------------------------------------------------------------
227   -dnl Check for ELF symbol visibility support
  202 +dnl Check for libintl
228 203 dnl ---------------------------------------------------------------------------
229   -m4_define([GLIB_CHECK_COMPILE_WARNINGS],
230   -[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl
231   -rm -f conftest.$ac_objext
232   -glib_ac_compile_save="$ac_compile"
233   -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext'
234   -AS_IF([_AC_EVAL_STDERR($ac_compile) &&
235   - AC_TRY_COMMAND([(if test -s conftest.err; then false ; else true; fi)])],
236   - [$2],
237   - [echo "$as_me: failed program was:" >&AS_MESSAGE_LOG_FD
238   -cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
239   -m4_ifvaln([$3],[$3])dnl])
240   -ac_compile="$glib_ac_compile_save"
241   -rm -f conftest.$ac_objext conftest.err m4_ifval([$1], [conftest.$ac_ext])[]dnl
242   -])# GLIB_CHECK_COMPILE_WARNINGS
243   -
244   -AC_MSG_CHECKING(for GNUC visibility attribute)
245   -GLIB_CHECK_COMPILE_WARNINGS([
246   -void
247   -__attribute__ ((visibility ("hidden")))
248   - f_hidden (void)
249   -{
250   -}
251   -void
252   -__attribute__ ((visibility ("internal")))
253   - f_internal (void)
254   -{
255   -}
256   -void
257   -__attribute__ ((visibility ("protected")))
258   - f_protected (void)
259   -{
260   -}
261   -void
262   -__attribute__ ((visibility ("default")))
263   - f_default (void)
264   -{
265   -}
266   -int main (int argc, char **argv)
267   -{
268   - f_hidden();
269   - f_internal();
270   - f_protected();
271   - f_default();
272   - return 0;
273   -}
274   -],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
275   -AC_MSG_RESULT($g_have_gnuc_visibility)
276   -if test x$g_have_gnuc_visibility = xyes; then
277   - AC_DEFINE(HAVE_GNUC_VISIBILITY, 1, [supports GCC visibility attributes])
278   -fi
  204 +
  205 +INTL_LIBS=""
  206 +
  207 +AC_PATH_TOOL([XGETTEXT], [xgettext], [no])
  208 +AC_PATH_TOOL([MSGCAT], [msgcat], [no])
  209 +AC_PATH_TOOL([MSGINIT], [msginit], [no])
  210 +AC_PATH_TOOL([MSGMERGE], [msgmerge], [no])
  211 +AC_PATH_TOOL([MSGFMT], [msgfmt], [no])
  212 +
  213 +AC_SUBST(INTL_LIBS)
279 214  
280 215 dnl ---------------------------------------------------------------------------
281   -dnl Check for compiler visibility flag
  216 +dnl Check for IPC3270
282 217 dnl ---------------------------------------------------------------------------
283   -AC_MSG_CHECKING(whether $CC accepts -fvisibility=hidden)
284   -
285   -SAVED_CFLAGS="${CFLAGS}"
286   -CFLAGS="-fvisibility=hidden"
287   -GLIB_CHECK_COMPILE_WARNINGS([
288   -int main (int argc, char **argv)
289   -{
290   - return 0;
291   -}
292   -],app_cv_fvisibility_ok=yes,app_cv_fvisibility_ok=no)
293   -AC_MSG_RESULT($app_cv_fvisibility_ok)
294   -
295   -CFLAGS="${SAVED_CFLAGS}"
296   -
297   -dnl AC_CACHE_VAL(app_cv_fvisibility_ok,
298   -dnl [ac_save_cc="$CC"
299   -dnl CC="$CC -fvisibility=hidden"
300   -dnl AC_TRY_RUN([int main() { return 0; }],
301   -dnl app_cv_fvisibility_ok=yes,
302   -dnl app_cv_fvisibility_ok=no,
303   -dnl app_cv_fvisibility_ok=no)
304   -dnl CC="$ac_save_cc"])
305   -dnl AC_MSG_RESULT($app_cv_fvisibility_ok)
306   -if test $app_cv_fvisibility_ok = yes; then
307   - CFLAGS="$CFLAGS -fvisibility=hidden"
  218 +
  219 +AC_ARG_WITH([static-ipc3270],
  220 + [AS_HELP_STRING([--with-static-ipc3270], [Uses static version of ipc3270])],
  221 +[
  222 + app_cv_static_ipc3270=$withval
  223 +],[
  224 + app_cv_static_ipc3270="auto"
  225 +])
  226 +
  227 +if test "$app_cv_static_ipc3270" == "auto"; then
  228 + case "$host" in
  229 + *-mingw32|*-pc-msys)
  230 + app_cv_static_ipc3270="yes"
  231 + ;;
  232 +
  233 + *)
  234 + app_cv_static_ipc3270="no"
  235 +
  236 + esac
  237 +
308 238 fi
309 239  
310   -dnl ---------------------------------------------------------------------------
311   -dnl Check for D-Bus
312   -dnl ---------------------------------------------------------------------------
  240 +if test "$app_cv_static_ipc3270" == "yes"; then
  241 + LDFLAGS="-static -static-libgcc -static-libstdc++ $LDFLAGS"
  242 + PKG_CHECK_MODULES( [IPC3270], [ipc3270-static], AC_DEFINE(USING_STATIC_IPC3270), AC_MSG_ERROR([IPC3270 not present.]))
  243 +else
  244 + PKG_CHECK_MODULES( [IPC3270], [ipc3270], AC_DEFINE(USING_SHARED_IPC3270), AC_MSG_ERROR([IPC3270 not present.]))
  245 +fi
313 246  
314   -PKG_CHECK_MODULES( [DBUS], [dbus-1], AC_DEFINE(HAVE_DBUS), AC_MSG_NOTICE([ No DBUS support.]) )
315   -AC_SUBST(DBUS_LIBS)
316   -AC_SUBST(DBUS_CFLAGS)
  247 +AC_SUBST(IPC3270_LIBS)
  248 +AC_SUBST(IPC3270_CFLAGS)
317 249  
318 250 dnl ---------------------------------------------------------------------------
319 251 dnl Check for pic
320 252 dnl ---------------------------------------------------------------------------
  253 +
321 254 AC_ARG_ENABLE([pic],
322 255 [AS_HELP_STRING([--disable-pic], [disable support for PIC libraries (required to compile on 64bits)])],
323 256 [
324 257 app_cv_pic="$enableval"
325 258 ],[
326 259  
327   - case "$host" in
328   - *-mingw32)
329   - app_cv_pic="no"
  260 + case "$host_cpu" in
  261 + x86_64)
  262 + app_cv_pic="yes"
330 263 ;;
331 264  
332   - s390x-*)
333   - app_cv_pic="yes"
  265 + aarch64)
  266 + app_cv_pic="yes"
334 267 ;;
335 268  
336 269 *)
337   - if test "$host_cpu" = "x86_64"; then
338   - app_cv_pic="yes"
339   - else
340   - app_cv_pic="no"
341   - fi
  270 + app_cv_pic="no"
342 271 esac
  272 +
343 273 ])
344 274  
345 275 if test "$app_cv_pic" == "yes"; then
346 276 CFLAGS="$CFLAGS -fPIC"
  277 + CXXFLAGS="$CXXFLAGS -fPIC"
347 278 fi
348 279  
349 280 dnl ---------------------------------------------------------------------------
... ... @@ -357,27 +288,22 @@ if test &quot;$app_cv_trace&quot; == &quot;yes&quot;; then
357 288 fi
358 289  
359 290 dnl ---------------------------------------------------------------------------
360   -dnl Output config
361   -dnl ---------------------------------------------------------------------------
362   -
363   -AC_SUBST(DLLFLAGS)
364   -AC_SUBST(BASEDIR,$ac_pwd)
365   -
366   -AC_DEFINE_UNQUOTED(ZIPNAME, $app_cv_zipname)
367   -AC_SUBST(ZIPNAME,$app_cv_zipname)
368   -
369   -
370   -dnl ---------------------------------------------------------------------------
371 291 dnl Configure which files to generate.
372 292 dnl ---------------------------------------------------------------------------
373 293  
374 294 AC_CONFIG_FILES(Makefile)
375 295 AC_CONFIG_FILES(src/native/Makefile)
376   -AC_CONFIG_FILES(src/pw3270-sharp/Makefile)
377   -AC_CONFIG_FILES(src/pw3270-sharp/pw3270-sharp.pc)
  296 +AC_CONFIG_FILES(src/core/Makefile)
  297 +AC_CONFIG_FILES(src/core/tn3270-sharp.pc)
378 298  
379 299 dnl ---------------------------------------------------------------------------
380 300 dnl Output the generated config.status script.
381 301 dnl ---------------------------------------------------------------------------
  302 +AC_DEFINE_UNQUOTED(ZIPNAME, $app_cv_zipname)
  303 +AC_SUBST(ZIPNAME,$app_cv_zipname)
  304 +
  305 +AC_SUBST(BASEDIR,$ac_pwd)
  306 +
382 307 AC_OUTPUT
383 308  
  309 +
... ...
pw3270-sharp.cbp
... ... @@ -2,7 +2,7 @@
2 2 <CodeBlocks_project_file>
3 3 <FileVersion major="1" minor="6" />
4 4 <Project>
5   - <Option title="Mono Bindings for lib3270" />
  5 + <Option title=".NET Bindings for lib3270/pw3270" />
6 6 <Option makefile_is_custom="1" />
7 7 <Option pch_mode="2" />
8 8 <Option compiler="gcc" />
... ...
src/core/Makefile.in 0 → 100644
... ... @@ -0,0 +1,108 @@
  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 +MODULE_NAME=tn3270-sharp
  28 +
  29 +SOURCES=$(MODULE_NAME).cs
  30 +LIBNAME=$(MODULE_NAME).dll
  31 +
  32 +#---[ Configuration values ]-------------------------------------------------------------
  33 +
  34 +PACKAGE_NAME=@PACKAGE_NAME@
  35 +PACKAGE_VERSION=@PACKAGE_VERSION@
  36 +PACKAGE_TARNAME=@PACKAGE_TARNAME@
  37 +
  38 +prefix=@prefix@
  39 +exec_prefix=@exec_prefix@
  40 +bindir=@bindir@
  41 +sbindir=@sbindir@
  42 +libdir=@libdir@
  43 +
  44 +BASEDIR=@BASEDIR@
  45 +SRCDIR=$(BASEDIR)/.src/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
  46 +
  47 +OBJDIR=$(BASEDIR)/.obj
  48 +OBJDBG=$(OBJDIR)/Debug
  49 +OBJRLS=$(OBJDIR)/Release
  50 +
  51 +BINDIR=$(BASEDIR)/.bin
  52 +BINDBG=$(BINDIR)/Debug
  53 +BINRLS=$(BINDIR)/Release
  54 +
  55 +INSTALL=@INSTALL@
  56 +INSTALL_DATA=@INSTALL_DATA@
  57 +INSTALL_PROGRAM=@INSTALL_PROGRAM@
  58 +
  59 +LN_S=@LN_S@
  60 +
  61 +MCS=@MCS@
  62 +MKDIR=@MKDIR_P@
  63 +GACUTIL=@GACUTIL@
  64 +SN=@SN@
  65 +
  66 +#---[ Targets ]--------------------------------------------------------------------------
  67 +
  68 +all: \
  69 + $(BINRLS)/$(LIBNAME)
  70 +
  71 +Release: \
  72 + $(BINRLS)/$(LIBNAME)
  73 +
  74 +install: \
  75 + $(BINRLS)/$(LIBNAME)
  76 +
  77 + @$(GACUTIL) -i $(BINRLS)/$(LIBNAME) -root $(DESTDIR)/usr/lib
  78 +
  79 + @$(MKDIR) $(DESTDIR)/usr/share/gapi-2.0/$(MODULE_NAME)
  80 + @$(INSTALL_DATA) $(BINRLS)/$(MODULE_NAME).xml $(DESTDIR)/usr/share/gapi-2.0/$(MODULE_NAME)
  81 +
  82 + @$(MKDIR) $(DESTDIR)/usr/lib/mono/$(MODULE_NAME)-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  83 + @$(INSTALL_PROGRAM) $(BINRLS)/$(LIBNAME) $(DESTDIR)/usr/lib/mono/$(MODULE_NAME)-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  84 +
  85 + @$(MKDIR) $(DESTDIR)/$(libdir)/pkgconfig
  86 + @$(INSTALL_DATA) $(MODULE_NAME).pc $(DESTDIR)/$(libdir)/pkgconfig
  87 +
  88 +Debug: \
  89 + $(BINDBG)/$(LIBNAME)
  90 +
  91 +$(BINRLS)/$(MODULE_NAME).key:
  92 +
  93 + @$(SN) -k $@
  94 +
  95 +$(BINDBG)/$(LIBNAME): \
  96 + $(SOURCES)
  97 +
  98 + @$(MKDIR) `dirname $@`
  99 + @$(MCS) -debug -target:library -out:$@ $<
  100 +
  101 +$(BINRLS)/$(LIBNAME): \
  102 + $(SOURCES) \
  103 + $(BINRLS)/$(MODULE_NAME).key
  104 +
  105 + @$(MKDIR) `dirname $@`
  106 + @$(MCS) -doc:$(BINRLS)/$(MODULE_NAME).xml -keyfile:$(BINRLS)/$(MODULE_NAME).key -target:library -out:$@ $(SOURCES)
  107 +
  108 +
... ...
src/core/tn3270-sharp.cs 0 → 100644
... ... @@ -0,0 +1,618 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como tn3270-sharp.cs 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 + * Referências:
  29 + *
  30 + * https://msdn.microsoft.com/en-us/library/5ast78ax.aspx
  31 + *
  32 + */
  33 +
  34 +using System;
  35 +using System.Text;
  36 +using System.Runtime.InteropServices;
  37 +
  38 +namespace pw3270 {
  39 +
  40 + /// <summary>
  41 + /// Session with 3270 HOST.
  42 + /// </summary>
  43 + public class Session {
  44 +
  45 + /// <summary>
  46 + /// lib3270 session handle
  47 + /// </summary>
  48 + private IntPtr hSession;
  49 +
  50 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  51 + extern static IntPtr tn3270_create_session(string name);
  52 +
  53 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  54 + extern static int tn3270_destroy_session(IntPtr session);
  55 +
  56 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  57 + extern static int tn3270_get_version(IntPtr session, StringBuilder str, int strlen);
  58 +
  59 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  60 + extern static int tn3270_get_revision(IntPtr session, StringBuilder str, int strlen);
  61 +
  62 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  63 + extern static int tn3270_connect(IntPtr Session, string host, int wait);
  64 +
  65 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  66 + extern static int tn3270_is_connected(IntPtr Session);
  67 +
  68 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  69 + extern static int tn3270_is_ready(IntPtr Session);
  70 +
  71 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  72 + extern static int tn3270_disconnect(IntPtr Session);
  73 +
  74 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  75 + extern static int tn3270_wait_for_ready(IntPtr Session, int seconds);
  76 +
  77 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  78 + extern static int tn3270_wait(IntPtr Session, int seconds);
  79 +
  80 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  81 + extern static int tn3270_get_cstate(IntPtr Session);
  82 +
  83 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  84 + extern static int tn3270_get_program_message(IntPtr Session);
  85 +
  86 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  87 + extern static int tn3270_get_secure(IntPtr Session);
  88 +
  89 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  90 + extern static int tn3270_get_contents(IntPtr Session, StringBuilder str, int strlen);
  91 +
  92 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  93 + extern static int tn3270_get_string(IntPtr Session, int addr, StringBuilder str, int strlen);
  94 +
  95 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  96 + extern static int tn3270_get_string_at(IntPtr Session, int row, int col, StringBuilder str, int strlen);
  97 +
  98 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  99 + extern static int tn3270_set_string_at(IntPtr Session, int row, int col, string str);
  100 +
  101 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  102 + extern static int tn3270_wait_for_string_at(IntPtr Session, int row, int col, string key, int timeout);
  103 +
  104 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  105 + extern static int tn3270_cmp_string_at(IntPtr Session, int row, int col, string str);
  106 +
  107 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  108 + extern static int tn3270_set_unlock_delay(IntPtr Session, int ms);
  109 +
  110 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  111 + extern static int tn3270_set_cursor_position(IntPtr Session, int row, int col);
  112 +
  113 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  114 + extern static int tn3270_set_cursor_addr(IntPtr Session, int addr);
  115 +
  116 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  117 + extern static int tn3270_get_cursor_addr(IntPtr Session);
  118 +
  119 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  120 + extern static int tn3270_enter(IntPtr Session);
  121 +
  122 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  123 + extern static int tn3270_pfkey(IntPtr Session, int key);
  124 +
  125 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  126 + extern static int tn3270_pakey(IntPtr Session, int key);
  127 +
  128 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  129 + extern static int tn3270_get_width(IntPtr Session);
  130 +
  131 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  132 + extern static int tn3270_get_height(IntPtr Session);
  133 +
  134 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  135 + extern static int tn3270_get_length(IntPtr Session);
  136 +
  137 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  138 + extern static int tn3270_set_charset(IntPtr Session, string str);
  139 +
  140 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  141 + extern static int tn3270_set_url(IntPtr Session, string str);
  142 +
  143 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  144 + extern static int tn3270_get_url(IntPtr Session, StringBuilder str, int strlen);
  145 +
  146 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  147 + extern static int tn3270_set_error_message(IntPtr Session, string str);
  148 +
  149 + [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
  150 + extern static int tn3270_get_error_message(IntPtr Session, StringBuilder str, int strlen);
  151 +
  152 + /// <summary>
  153 + /// Create a new session with lib3270/pw3270
  154 + /// </summary>
  155 + ///
  156 + /// <param name="name">Session name or empty string for a hidden session</param>
  157 + ///
  158 + public Session(string name) {
  159 + hSession = tn3270_create_session(name);
  160 + tn3270_set_charset(hSession,"UTF-8");
  161 + }
  162 +
  163 + /// <summary>
  164 + /// Disconnect from host, destroy session.
  165 + /// </summary>
  166 + ///
  167 + ~Session() {
  168 + tn3270_destroy_session(hSession);
  169 + }
  170 +
  171 + /// <summary>
  172 + /// Get lib3270/pw3270 Version identifier
  173 + /// </summary>
  174 + ///
  175 + /// <returns>
  176 + /// The version of the active instance.
  177 + /// </returns>
  178 + ///
  179 + public string GetVersion() {
  180 + StringBuilder str = new StringBuilder(10);
  181 + tn3270_get_version(hSession, str, 10);
  182 + return str.ToString();
  183 + }
  184 +
  185 + /// <summary>
  186 + /// Lib3270 version.
  187 + /// </summary>
  188 + ///
  189 + /// <returns>
  190 + /// Lib3270 version string
  191 + /// </returns>
  192 + ///
  193 + public string Version {
  194 + get {
  195 + return GetVersion();
  196 + }
  197 + }
  198 +
  199 + /// <summary>
  200 + /// Get lib3270/pw3270 Revision number
  201 + /// </summary>
  202 + ///
  203 + /// <returns>
  204 + /// The revision of the active instance.
  205 + /// </returns>
  206 + ///
  207 + public string GetRevision() {
  208 + StringBuilder str = new StringBuilder(10);
  209 + tn3270_get_revision(hSession, str, 10);
  210 + return str.ToString();
  211 + }
  212 +
  213 + public string Revision {
  214 + get {
  215 + return GetRevision();
  216 + }
  217 + }
  218 +
  219 + /// <summary>
  220 + /// Connect to 3270 host.
  221 + /// </summary>
  222 + ///
  223 + /// <param name="host">URL of the target host (tn3270://hostname:port)</param>
  224 + /// <param name="wait">How many seconds should the call wait for the connection becomes ready</param>
  225 + ///
  226 + /// <returns>
  227 + /// </returns>
  228 + ///
  229 + public int Connect(string host, int wait) {
  230 + return tn3270_connect(hSession, host, wait);
  231 + }
  232 +
  233 + /// <summary>
  234 + /// Get connection state
  235 + /// </summary>
  236 + ///
  237 + /// <returns>
  238 + /// true if the session is connected to a remote host.
  239 + /// </returns>
  240 + ///
  241 + public bool IsConnected() {
  242 + return tn3270_is_connected(hSession) != 0;
  243 + }
  244 +
  245 + public bool Connected {
  246 + get {
  247 + return tn3270_is_connected(hSession) != 0;
  248 + }
  249 + }
  250 +
  251 + public bool IsReady() {
  252 + return tn3270_is_ready(hSession) != 0;
  253 + }
  254 +
  255 + public bool Ready {
  256 + get {
  257 + return tn3270_is_ready(hSession) != 0;
  258 + }
  259 + }
  260 +
  261 + /// <summary>
  262 + /// Disconnect from 3270 host.
  263 + /// </summary>
  264 + ///
  265 + public int Disconnect() {
  266 + return tn3270_disconnect(hSession);
  267 + }
  268 +
  269 + /// <summary>
  270 + /// Wait for network activity
  271 + /// </summary>
  272 + ///
  273 + /// <param name="seconds">Seconds to wait</param>
  274 + ///
  275 + /// <returns>
  276 + ///
  277 + /// </returns>
  278 + ///
  279 + public int WaitForReady(int seconds) {
  280 + return tn3270_wait_for_ready(hSession, seconds);
  281 + }
  282 +
  283 + /// <summary>
  284 + /// "Sleep" keeping the network activity.
  285 + /// </summary>
  286 + ///
  287 + /// <param name="seconds">Number of seconds to wait</param>
  288 + ///
  289 + /// <returns>
  290 + ///
  291 + /// </returns>
  292 + ///
  293 + public int Wait(int seconds) {
  294 + return tn3270_wait(hSession, seconds);
  295 + }
  296 +
  297 + /// <summary>
  298 + /// Get contents
  299 + /// </summary>
  300 + ///
  301 + /// <returns>
  302 + /// Contents from terminal screen.
  303 + /// </returns>
  304 + ///
  305 + public override string ToString() {
  306 + int strlen = (tn3270_get_width(hSession)+1) * (tn3270_get_height(hSession)+1);
  307 + StringBuilder str = new StringBuilder(strlen+1);
  308 + strlen = tn3270_get_contents(hSession, str, strlen);
  309 + return str.ToString();
  310 + }
  311 +
  312 +
  313 + /// <summary>
  314 + /// Get contents at address
  315 + /// </summary>
  316 + ///
  317 + /// <param name="addr">Address of text in the screen buffer</param>
  318 + /// <param name="strlen">Number of characters to get</param>
  319 + ///
  320 + /// <returns>
  321 + /// Contents from terminal screen.
  322 + /// </returns>
  323 + ///
  324 + public string GetString(int addr, int strlen) {
  325 + StringBuilder str = new StringBuilder(strlen+1);
  326 + tn3270_get_string(hSession, addr, str, strlen);
  327 + return str.ToString();
  328 + }
  329 +
  330 + /// <summary>
  331 + /// Get contents at position.
  332 + /// </summary>
  333 + ///
  334 + /// <param name="row">Start row</param>
  335 + /// <param name="col">Start col</param>
  336 + /// <param name="strlen">Number of characters to get</param>
  337 + ///
  338 + /// <returns>
  339 + /// Contents from terminal screen.
  340 + /// </returns>
  341 + ///
  342 + public string GetStringAt(int row, int col, int strlen) {
  343 + StringBuilder str = new StringBuilder(strlen+1);
  344 + tn3270_get_string_at(hSession, row, col, str, strlen);
  345 + return str.ToString();
  346 + }
  347 +
  348 + /// <summary>
  349 + /// Set contents at position
  350 + /// </summary>
  351 + ///
  352 + /// <param name="row">Start row</param>
  353 + /// <param name="col">Start col</param>
  354 + /// <param name="str">Text to set</param>
  355 + ///
  356 + public void SetStringAt(int row, int col, string str) {
  357 + tn3270_set_string_at(hSession, row, col, str);
  358 + }
  359 +
  360 + /// <summary>
  361 + /// Wait for text at position.
  362 + /// </summary>
  363 + ///
  364 + /// <param name="row">Start row</param>
  365 + /// <param name="col">Start col</param>
  366 + /// <param name="str">Text to wait</param>
  367 + /// <param name="timeout">Seconds to wait</param>
  368 + ///
  369 + /// <returns>
  370 + ///
  371 + /// </returns>
  372 + ///
  373 + public int WaitForStringAt(int row, int col, string str, int timeout) {
  374 + return tn3270_wait_for_string_at(hSession, row, col, str, timeout);
  375 + }
  376 +
  377 + /// <summary>
  378 + /// Compare contents at position
  379 + /// </summary>
  380 + ///
  381 + /// <param name="row">Start row</param>
  382 + /// <param name="col">Start col</param>
  383 + /// <param name="str">Text to compare</param>
  384 + ///
  385 + /// <returns>
  386 + /// Result (0 = The strings are the same).
  387 + /// </returns>
  388 + ///
  389 + public int CmpStringAt(int row, int col, string str) {
  390 + return tn3270_cmp_string_at(hSession, row, col, str);
  391 + }
  392 +
  393 + /// <summary>
  394 + /// Set cursor position.
  395 + /// </summary>
  396 + ///
  397 + /// <param name="row">New cursor row</param>
  398 + /// <param name="col">New cursor column</param>
  399 + ///
  400 + public void SetCursorPosition(int row, int col) {
  401 + tn3270_set_cursor_position(hSession, row, col);
  402 + }
  403 +
  404 + /// <summary>
  405 + /// Set cursor position based on address.
  406 + /// </summary>
  407 + ///
  408 + /// <param name="addr">Address of the new cursor position</param>
  409 + ///
  410 + public void SetCursorPosition(int addr) {
  411 + tn3270_set_cursor_addr(hSession, addr);
  412 + }
  413 +
  414 + /// <summary>
  415 + /// Get cursor address
  416 + /// </summary>
  417 + ///
  418 + public int GetCursorPosition() {
  419 + return tn3270_get_cursor_addr(hSession);
  420 + }
  421 +
  422 + /// <summary>
  423 + /// Cursor address
  424 + /// </summary>
  425 + ///
  426 + public int CursorPosition {
  427 + set {
  428 + tn3270_set_cursor_addr(hSession, value);
  429 + }
  430 + get {
  431 + return tn3270_get_cursor_addr(hSession);
  432 + }
  433 + }
  434 +
  435 + /// <summary>
  436 + /// Set the "screen ready" delay
  437 + /// </summary>
  438 + ///
  439 + public int SetUnlockDelay(int ms) {
  440 + return tn3270_set_unlock_delay(hSession, ms);
  441 + }
  442 +
  443 + /// <summary>
  444 + /// Set the "screen ready" delay
  445 + /// </summary>
  446 + ///
  447 + public int UnlockDelay {
  448 + set {
  449 + tn3270_set_unlock_delay(hSession, value);
  450 + }
  451 + }
  452 +
  453 +
  454 + /// <summary>
  455 + /// Send "Enter" key
  456 + /// </summary>
  457 + ///
  458 + /// <returns>
  459 + ///
  460 + /// </returns>
  461 + ///
  462 + public int Enter() {
  463 + return tn3270_enter(hSession);
  464 + }
  465 +
  466 + /// <summary>
  467 + /// Send "PF" key
  468 + /// </summary>
  469 + ///
  470 + /// <param name="key">Key identifier 1=PF1, 2=PF2, ...</param>
  471 + ///
  472 + /// <returns>
  473 + ///
  474 + /// </returns>
  475 + ///
  476 + public int PfKey(int key) {
  477 + return tn3270_pfkey(hSession, key);
  478 + }
  479 +
  480 + /// <summary>
  481 + /// Send "PA" key
  482 + /// </summary>
  483 + ///
  484 + /// <param name="key">Key identifier 1=PA1, 2=PA2, ...</param>
  485 + ///
  486 + /// <returns>
  487 + ///
  488 + /// </returns>
  489 + ///
  490 + public int PaKey(int key) {
  491 + return tn3270_pakey(hSession, key);
  492 + }
  493 +
  494 + /// <summary>
  495 + /// Get screen width
  496 + /// </summary>
  497 + ///
  498 + /// <returns>
  499 + /// Screen width in characters (negative on error)
  500 + /// </returns>
  501 + ///
  502 + public int GetWidth() {
  503 + return tn3270_get_width(hSession);
  504 + }
  505 +
  506 + /// <summary>
  507 + /// Screen width in characters
  508 + /// </summary>
  509 + ///
  510 + /// <returns>
  511 + /// Screen width in characters (negative on error)
  512 + /// </returns>
  513 + ///
  514 + public int Width {
  515 + get {
  516 + return tn3270_get_width(hSession);
  517 + }
  518 + }
  519 +
  520 + /// <summary>
  521 + /// Get screen height
  522 + /// </summary>
  523 + ///
  524 + /// <returns>
  525 + /// Screen width in characters (negative on error)
  526 + /// </returns>
  527 + ///
  528 + public int GetHeight() {
  529 + return tn3270_get_height(hSession);
  530 + }
  531 +
  532 + /// <summary>
  533 + /// Screen height in characters
  534 + /// </summary>
  535 + ///
  536 + /// <returns>
  537 + /// Screen height in characters (negative on error)
  538 + /// </returns>
  539 + ///
  540 + public int Height {
  541 + get {
  542 + return tn3270_get_height(hSession);
  543 + }
  544 + }
  545 +
  546 + /// <summary>
  547 + /// Get length of terminal buffer (width * height)
  548 + /// </summary>
  549 + ///
  550 + /// <returns>
  551 + /// Terminal length in characters (negative on error)
  552 + /// </returns>
  553 + ///
  554 + public int GetLength() {
  555 + return tn3270_get_length(hSession);
  556 + }
  557 +
  558 + /// <summary>
  559 + /// Length of terminal buffer (width * height)
  560 + /// </summary>
  561 + ///
  562 + /// <returns>
  563 + /// Terminal length in characters (negative on error)
  564 + /// </returns>
  565 + ///
  566 + public int Length {
  567 + get {
  568 + return tn3270_get_length(hSession);
  569 + }
  570 + }
  571 +
  572 + public string CharSet {
  573 + set {
  574 + tn3270_set_charset(hSession,value);
  575 + }
  576 + }
  577 +
  578 + /// <summary>
  579 + /// 3270 host URL
  580 + /// </summary>
  581 + ///
  582 + /// <returns>
  583 + /// 3270 host URL
  584 + /// </returns>
  585 + ///
  586 + public string Url {
  587 + set {
  588 + tn3270_set_url(hSession,value);
  589 + }
  590 + get {
  591 + StringBuilder str = new StringBuilder(1025);
  592 + tn3270_get_url(hSession, str, 1024);
  593 + return str.ToString();
  594 + }
  595 + }
  596 +
  597 + /// <summary>
  598 + /// Last lib3270 error message
  599 + /// </summary>
  600 + ///
  601 + /// <returns>
  602 + /// Last lib3270 error message
  603 + /// </returns>
  604 + ///
  605 + public string Error {
  606 + set {
  607 + tn3270_set_error_message(hSession,value);
  608 + }
  609 + get {
  610 + StringBuilder str = new StringBuilder(1025);
  611 + tn3270_get_error_message(hSession, str, 1024);
  612 + return str.ToString();
  613 + }
  614 + }
  615 +
  616 + }
  617 +
  618 +}
... ...
src/core/tn3270-sharp.pc.in 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +prefix=${pcfiledir}/../..
  2 +exec_prefix=${prefix}
  3 +libdir=${exec_prefix}/lib
  4 +gapidir=${prefix}/share/tn3270-sharp-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  5 +
  6 +
  7 +Name: tn3270-sharp
  8 +Description: .NET Bindings for pw3270
  9 +Version: @PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  10 +Cflags: -I:${gapidir}/tn3270-sharp.xml
  11 +Libs: -r:${libdir}/mono/tn3270-sharp-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@/tn3270-sharp.dll
... ...
src/include/config.h.in
  1 +/*
  2 + * "Software G3270, 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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como config.h 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 de Mendonça)
  27 + *
  28 + */
  29 +
1 30 /**
2 31 * @file config.h
3 32 *
... ... @@ -28,20 +57,7 @@
28 57 * @brief Revisão svn quando o pacote foi configurado.
29 58 *
30 59 */
31   - #undef PACKAGE_REVISION
32   -
33   - /**
34   - * @brief Indica se o compilador atual possui suporte a "visibility"
35   - *
36   - * Quando disponível indica que o compilador atual permite tornar
37   - * visíveis numa biblioteca apenas as funções declaradas para isso
38   - * evitando que todos os símbolos fiquem visíveis.
39   - *
40   - * Isso permite um melhor controle sobre quais funções podem ser usados
41   - * pelo programa principal.
42   - *
43   - */
44   - #undef HAVE_GNUC_VISIBILITY
  60 + #undef PACKAGE_RELEASE
45 61  
46 62 /**
47 63 * @brief Ativa trace em um arquivo texto.
... ... @@ -50,5 +66,4 @@
50 66 #undef ENABLE_TRACE_TO_FILE
51 67  
52 68  
53   -
54 69 #endif // CONFIG_H_INCLUDED
... ...
src/include/native.h 0 → 100644
... ... @@ -0,0 +1,165 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como private.h 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 + * Referências:
  29 + *
  30 + * http://www.mono-project.com/docs/advanced/pinvoke/
  31 + * http://tirania.org/blog/archive/2011/Dec-19.html
  32 + *
  33 + */
  34 +
  35 +/**
  36 + * @file private.h
  37 + *
  38 + * @brief Internal definitions for the .NET Native module.
  39 + *
  40 + * @author Perry Werneck <perry.werneck@gmail.com>
  41 + *
  42 + */
  43 +
  44 +#ifndef PRIVATE_H_INCLUDED
  45 +
  46 + #define PRIVATE_H_INCLUDED
  47 +
  48 + #include <config.h>
  49 +
  50 + #if defined(_WIN32)
  51 +
  52 + #include <windows.h>
  53 +
  54 + #define DLL_PRIVATE extern
  55 + #define DLL_PUBLIC extern __declspec (dllexport) __attribute__((cdecl))
  56 +
  57 + #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
  58 +
  59 + #define DLL_PRIVATE __hidden extern
  60 + #define DLL_PUBLIC extern
  61 +
  62 + #else
  63 +
  64 + #define DLL_PRIVATE __attribute__((visibility("hidden"))) extern
  65 + #define DLL_PUBLIC __attribute__((visibility("default"))) extern
  66 +
  67 + #endif
  68 +
  69 + #include <cstdio>
  70 + #include <string>
  71 +
  72 + #ifdef DEBUG
  73 + #define debug( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n" , __FILE__, (int) __LINE__, __VA_ARGS__ ); fflush(stderr);
  74 + #else
  75 + #define debug( fmt, ... ) /* */
  76 + #endif // DEBUG
  77 +
  78 + /*
  79 + #ifdef ENABLE_TRACE_TO_FILE
  80 + DLL_PRIVATE void write_trace(const char *fmt, ...);
  81 + #define trace( ... ) write_trace(__VA_ARGS__)
  82 + #else
  83 + #define trace( ... )
  84 + #endif // ENABLE_TRACE_TO_FILE
  85 + */
  86 +
  87 + #include <lib3270/ipc.h>
  88 + #include <cerrno>
  89 + #include <cstring>
  90 + #include <functional>
  91 +
  92 + using std::string;
  93 + using std::exception;
  94 +
  95 + DLL_PRIVATE string tn3270_lasterror;
  96 + DLL_PRIVATE int call(TN3270::Host *ses, std::function<int(TN3270::Host &ses)> worker) noexcept;
  97 + DLL_PRIVATE int call(TN3270::Host *ses, char* str, int length, std::function<string(TN3270::Host &ses, int length)> worker);
  98 +
  99 + DLL_PRIVATE int tn3270_set_error(TN3270::Host *ses, const char *msg) noexcept;
  100 + DLL_PRIVATE int tn3270_set_error(TN3270::Host *ses, const std::exception &e) noexcept;
  101 +
  102 + extern "C" {
  103 +
  104 + DLL_PUBLIC TN3270::Host * tn3270_create_session(const char *name);
  105 +
  106 + DLL_PUBLIC int tn3270_destroy_session(TN3270::Host *ses);
  107 +
  108 + DLL_PUBLIC int tn3270_get_version(TN3270::Host *ses, char* str, int strlen);
  109 + DLL_PUBLIC int tn3270_get_revision(TN3270::Host *ses, char* str, int strlen);
  110 +
  111 + DLL_PUBLIC int tn3270_connect(TN3270::Host *ses, const char *host, time_t wait);
  112 + DLL_PUBLIC int tn3270_disconnect(TN3270::Host *ses);
  113 + DLL_PUBLIC int tn3270_is_connected(TN3270::Host *ses);
  114 + DLL_PUBLIC int tn3270_is_ready(TN3270::Host *ses);
  115 +
  116 + DLL_PUBLIC int tn3270_set_url(TN3270::Host *ses, const char *url);
  117 + DLL_PUBLIC int tn3270_get_url(TN3270::Host *ses, char* str, int strlen);
  118 +
  119 + DLL_PUBLIC int tn3270_get_luname(TN3270::Host *ses, char * str, int strlen);
  120 +
  121 + DLL_PUBLIC int tn3270_get_error_message(TN3270::Host *ses, char* str, int strlen);
  122 +
  123 + DLL_PUBLIC int tn3270_set_cursor_position(TN3270::Host *ses, int row, int col);
  124 + DLL_PUBLIC int tn3270_set_cursor_addr(TN3270::Host *ses, int addr);
  125 + DLL_PUBLIC int tn3270_get_cursor_addr(TN3270::Host *ses);
  126 +
  127 + DLL_PUBLIC int tn3270_action(TN3270::Host *ses, const char *name);
  128 +
  129 + DLL_PUBLIC int tn3270_erase(TN3270::Host *ses);
  130 + DLL_PUBLIC int tn3270_erase_eof(TN3270::Host *ses);
  131 + DLL_PUBLIC int tn3270_erase_eol(TN3270::Host *ses);
  132 + DLL_PUBLIC int tn3270_erase_input(TN3270::Host *ses);
  133 +
  134 + DLL_PUBLIC int tn3270_wait_for_ready(TN3270::Host *ses, int seconds);
  135 + DLL_PUBLIC int tn3270_wait(TN3270::Host *ses, int seconds);
  136 +
  137 + DLL_PUBLIC int tn3270_get_cstate(TN3270::Host *ses);
  138 + DLL_PUBLIC int tn3270_get_program_message(TN3270::Host *ses);
  139 + DLL_PUBLIC int tn3270_get_secure(TN3270::Host *ses);
  140 +
  141 + DLL_PUBLIC int tn3270_get_contents(TN3270::Host *ses, char* str, int strlen);
  142 + DLL_PUBLIC int tn3270_get_string(TN3270::Host *ses, int addr, char* str, int strlen);
  143 + DLL_PUBLIC int tn3270_get_string_at(TN3270::Host *ses, int row, int col, char* str, int strlen);
  144 +
  145 + DLL_PUBLIC int tn3270_set_string_at(TN3270::Host *ses, int row, int col, const char* str);
  146 +
  147 + DLL_PUBLIC int tn3270_wait_for_string_at(TN3270::Host *ses, int row, int col, const char *key, int timeout);
  148 + DLL_PUBLIC int tn3270_cmp_string_at(TN3270::Host *ses, int row, int col, const char* str);
  149 +
  150 + DLL_PUBLIC int tn3270_set_unlock_delay(TN3270::Host *ses, int ms);
  151 +
  152 + DLL_PUBLIC int tn3270_enter(TN3270::Host *ses);
  153 + DLL_PUBLIC int tn3270_pfkey(TN3270::Host *ses, int key);
  154 + DLL_PUBLIC int tn3270_pakey(TN3270::Host *ses, int key);
  155 +
  156 + DLL_PUBLIC int tn3270_get_width(TN3270::Host *ses);
  157 + DLL_PUBLIC int tn3270_get_height(TN3270::Host *ses);
  158 + DLL_PUBLIC int tn3270_get_length(TN3270::Host *ses);
  159 +
  160 + DLL_PUBLIC int tn3270_set_charset(TN3270::Host *ses, const char* str);
  161 +
  162 + }
  163 +
  164 +
  165 +#endif // PRIVATE_H_INCLUDED
... ...
src/native/Makefile.in
... ... @@ -24,25 +24,54 @@
24 24 # erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
25 25 #
26 26  
27   -SOURCES=actions.cc get.cc init.cc screen.cc set.cc network.cc
28   -LIBNAME=lib3270-mono@DLLEXT@
  27 +#---[ Library configuration ]------------------------------------------------------------
29 28  
30   -#---[ Configuration values ]-------------------------------------------------------------
  29 +LIBNAME=lib3270-mono
  30 +SONAME=@NATIVE_SONAME@
31 31  
32   -PACKAGE_NAME=@PACKAGE_NAME@
33   -PACKAGE_VERSION=@PACKAGE_VERSION@
34   -PACKAGE_TARNAME=@PACKAGE_TARNAME@
  32 +SOURCES= \
  33 + $(wildcard core/*.cc) \
  34 + $(wildcard @OSNAME@/*.rc) \
  35 + $(wildcard @OSNAME@/*.cc)
  36 +
  37 +TEST_SOURCES= \
  38 + $(wildcard testprogram/*.cc)
  39 +
  40 +#---[ Tools ]----------------------------------------------------------------------------
  41 +
  42 +CXX=@CXX@
  43 +LD=@CXX@
  44 +LN_S=@LN_S@
  45 +MKDIR=@MKDIR_P@
  46 +INSTALL=@INSTALL@
  47 +INSTALL_DATA=@INSTALL_DATA@
  48 +INSTALL_PROGRAM=@INSTALL_PROGRAM@
  49 +XGETTEXT=@XGETTEXT@
  50 +MSGCAT=@MSGCAT@
  51 +WINDRES=@WINDRES@
  52 +AR=@AR@
  53 +VALGRIND=@VALGRIND@
  54 +GENMARSHAL=@GENMARSHAL@
  55 +CONVERT=@CONVERT@
  56 +OPTIPNG=@OPTIPNG@
  57 +ZIP=@ZIP@
  58 +
  59 +#---[ Paths ]----------------------------------------------------------------------------
35 60  
36 61 prefix=@prefix@
37 62 exec_prefix=@exec_prefix@
38 63 bindir=@bindir@
39 64 sbindir=@sbindir@
40 65 libdir=@libdir@
  66 +includedir=@includedir@
  67 +datarootdir=@datarootdir@
  68 +localedir=@localedir@
  69 +docdir=@docdir@
  70 +sysconfdir=@sysconfdir@
41 71  
42 72 BASEDIR=@BASEDIR@
43   -SRCDIR=$(BASEDIR)/.src/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
44 73  
45   -OBJDIR=$(BASEDIR)/.obj
  74 +OBJDIR=$(BASEDIR)/.obj/$(LIBNAME)
46 75 OBJDBG=$(OBJDIR)/Debug
47 76 OBJRLS=$(OBJDIR)/Release
48 77  
... ... @@ -50,116 +79,180 @@ BINDIR=$(BASEDIR)/.bin
50 79 BINDBG=$(BINDIR)/Debug
51 80 BINRLS=$(BINDIR)/Release
52 81  
53   -INSTALL=@INSTALL@
54   -INSTALL_DATA=@INSTALL_DATA@
55   -INSTALL_PROGRAM=@INSTALL_PROGRAM@
  82 +#---[ Rules ]----------------------------------------------------------------------------
56 83  
57   -LN_S=@LN_S@
  84 +DEPENDS= \
  85 + Makefile \
  86 + $(BASEDIR)/src/include/*.h
58 87  
59   -VALGRIND=@VALGRIND@
60   -AMTAR=@AMTAR@
61   -SHELL=@SHELL@
62   -STRIP=@STRIP@
63   -MKDIR=@MKDIR_P@
64 88  
65   -CXX=@CXX@
66   -CC=@CC@
67   -LD=@CXX@
  89 +CFLAGS= \
  90 + @CFLAGS@ \
  91 + -g \
  92 + -I$(BASEDIR)/src/include \
  93 + -DBUILD_DATE=`date +%Y%m%d` \
  94 + @IPC3270_CFLAGS@
68 95  
69   -LIBS=-lpw3270cpp @LIBS@ @LIBICONV@ @DBUS_LIBS@
70   -CFLAGS=-I../include @CFLAGS@ @DBUS_CFLAGS@
71   -LDFLAGS=@LDFLAGS@
72   -LDSTATIC=@LDSTATIC@
  96 +LDFLAGS=\
  97 + @LDFLAGS@
73 98  
74   -#---[ Rules ]----------------------------------------------------------------------------
  99 +LIBS= \
  100 + @LIBS@ \
  101 + @IPC3270_LIBS@
75 102  
76   -DEPENDS=*.h Makefile
  103 +#---[ Debug Rules ]----------------------------------------------------------------------
77 104  
78 105 $(OBJDBG)/%.o: \
79 106 %.cc \
80 107 $(DEPENDS)
81 108  
82 109 @echo $< ...
83   - @$(MKDIR) `dirname $@`
84   - @$(CXX) $(CFLAGS) -fstack-check -DDEBUG=1 \
85   - -DBUILD_DATE=`date +"0x%Y%m%d"`\
86   - -g -o $@ -c $<
  110 + @$(MKDIR) $(dir $@)
  111 +
  112 + @$(CXX) \
  113 + $(CFLAGS) \
  114 + -Wall -Wextra -fstack-check \
  115 + -DDEBUG=1 \
  116 + -o $@ \
  117 + -c $<
  118 +
  119 +$(OBJDBG)/%.o: \
  120 + %.rc
  121 +
  122 + @echo $< ...
  123 + @$(MKDIR) $(dir $@)
  124 + @$(WINDRES) $< -O coff -o $@
  125 +
  126 +#---[ Release Rules ]--------------------------------------------------------------------
87 127  
88 128 $(OBJRLS)/%.o: \
89 129 %.cc \
90 130 $(DEPENDS)
91 131  
92 132 @echo $< ...
93   - @$(MKDIR) `dirname $@`
94   - @$(CXX) $(CFLAGS) -DNDEBUG=1 \
95   - -DBUILD_DATE=`date +"0x%Y%m%d"` \
96   - -o $@ -c $<
  133 + @$(MKDIR) $(dir $@)
  134 + @$(CXX) \
  135 + $(CFLAGS) \
  136 + -DNDEBUG=1 \
  137 + -o $@ \
  138 + -c $<
  139 +
  140 +$(OBJRLS)/%.o: \
  141 + %.rc
  142 +
  143 + @echo $< ...
  144 + @$(MKDIR) $(dir $@)
  145 + @$(WINDRES) $< -O coff -o $@
97 146  
98 147 #---[ Release Targets ]------------------------------------------------------------------
99 148  
100 149 all: \
101   - $(BINRLS)/$(LIBNAME)
  150 + $(BINRLS)/$(SONAME)
102 151  
103 152 Release: \
104   - $(BINRLS)/$(LIBNAME)
  153 + $(BINRLS)/$(SONAME)
  154 +
  155 +$(BINRLS)/$(SONAME): \
  156 + $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)
  157 +
  158 + @$(MKDIR) $(dir $@)
  159 + @echo $< ...
  160 + @$(LD) \
  161 + @DLL_LDFLAGS@ \
  162 + -o $@ \
  163 + $(LDFLAGS) \
  164 + $^ \
  165 + $(LIBS)
  166 +
  167 +#---[ Install Targets ]------------------------------------------------------------------
105 168  
106 169 install: \
107   - $(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  170 + $(BINRLS)/$(SONAME)
108 171  
109   - @$(MKDIR) $(DESTDIR)/$(libdir)
110   - @$(INSTALL_PROGRAM) $(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ $(DESTDIR)/$(libdir)
  172 + # Install library
  173 + @$(MKDIR) $(DESTDIR)$(libdir)
111 174  
112   - @rm -f $(DESTDIR)/$(libdir)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@
113   - @rm -f $(DESTDIR)/$(libdir)/$(LIBNAME)
  175 + @$(INSTALL_PROGRAM) \
  176 + $(BINRLS)/$(SONAME) \
  177 + $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
114 178  
115   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ $(DESTDIR)/$(libdir)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@
116   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@ $(DESTDIR)/$(libdir)/$(LIBNAME)
  179 + @$(LN_S) \
  180 + $(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \
  181 + $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@
117 182  
118   -$(BINRLS)/$(LIBNAME): \
119   - $(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@
  183 + @$(LN_S) \
  184 + $(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@ \
  185 + $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@
120 186  
121   - @rm -f $@
122   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@ $@
123 187  
  188 +#---[ Debug Targets ]--------------------------------------------------------------------
124 189  
125   -$(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@: \
126   - $(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
  190 +Debug: \
  191 + $(BINDBG)/$(LIBNAME)@EXEEXT@
127 192  
128   - @rm -f $@
129   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ $@
  193 +$(BINDBG)/$(LIBNAME)@EXEEXT@: \
  194 + $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
  195 + $(BINDBG)/$(SONAME)
130 196  
  197 + @$(MKDIR) $(dir $@)
  198 + @echo $< ...
  199 + @$(LD) \
  200 + -o $@ \
  201 + $^ \
  202 + -L$(BINDBG) \
  203 + -Wl,-rpath,$(BINDBG) \
  204 + $(LDFLAGS) \
  205 + $(LIBS)
  206 +
  207 +run: \
  208 + $(BINDBG)/$(LIBNAME)@EXEEXT@
131 209  
132   -$(BINRLS)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@: \
133   - $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)
  210 +ifeq ($(VALGRIND),no)
134 211  
135   - @echo $(basename $@) ...
136   - @$(MKDIR) `dirname $@`
137   - @$(LD) -shared -Wl,-soname,$(LIBNAME) $(LDFLAGS) -o $@ $^ $(LIBS) $(LDSTATIC)
  212 + @LD_LIBRARY_PATH=$(BINDBG) \
  213 + $(BINDBG)/$(LIBNAME)@EXEEXT@
138 214  
139   -#---[ Debug Targets ]--------------------------------------------------------------------
  215 +else
  216 + @touch valgrind.suppression
140 217  
141   -Debug: \
142   - $(BINDBG)/$(LIBNAME)
  218 + @LD_LIBRARY_PATH=$(BINDBG) \
  219 + $(VALGRIND) --leak-check=full --track-origins=yes --gen-suppressions=all --suppressions=valgrind.suppression \
  220 + $(BINDBG)/$(LIBNAME)@EXEEXT@
  221 +endif
143 222  
144   -$(BINDBG)/$(LIBNAME): \
145   - $(BINDBG)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@
146 223  
147   - @rm -f $@
148   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@ $@
  224 +$(BINDBG)/$(SONAME): \
  225 + $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o)
149 226  
  227 + @$(MKDIR) $(dir $@)
  228 + @echo $< ...
  229 + @$(LD) \
  230 + -shared -Wl,-soname,$(@F) \
  231 + -o $@ \
  232 + -L$(BINDBG) \
  233 + $(LDFLAGS) \
  234 + $^ \
  235 + $(LIBS)
150 236  
151   -$(BINDBG)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@: \
152   - $(BINDBG)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
153 237  
154   - @rm -f $@
155   - @$(LN_S) $(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ $@
  238 +#---[ Clean Targets ]--------------------------------------------------------------------
156 239  
  240 +clean: \
  241 + cleanDebug \
  242 + cleanRelease
157 243  
158   -$(BINDBG)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@: \
159   - $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o)
  244 +cleanDebug:
  245 +
  246 + @rm -fr $(OBJDBG)
  247 + @rm -fr $(BINDBG)
  248 +
  249 +cleanRelease:
  250 +
  251 + @rm -fr $(OBJRLS)
  252 + @rm -fr $(BINRLS)
160 253  
161   - @echo $(basename $@) ...
162   - @$(MKDIR) `dirname $@`
163   - @$(LD) -shared -Wl,-soname,$(LIBNAME) $(LDFLAGS) -o $@ $^ $(LIBS) $(LDSTATIC)
  254 +clean: \
  255 + cleanDebug \
  256 + cleanRelease
164 257  
165 258  
... ...
src/native/actions.cc
... ... @@ -1,105 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como actions.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 "private.h"
31   -
32   -/*---[ Implement ]----------------------------------------------------------------------------------*/
33   -
34   -int tn3270_enter(h3270::session *ses) {
35   - try {
36   - return ses->enter();
37   - } catch(std::exception &e) {
38   - tn3270_lasterror = e.what();
39   - return -1;
40   - }
41   -}
42   -
43   -int tn3270_pfkey(h3270::session *ses, int key) {
44   - try {
45   - return ses->pfkey(key);
46   - } catch(std::exception &e) {
47   - tn3270_lasterror = e.what();
48   - return -1;
49   - }
50   -}
51   -
52   -int tn3270_pakey(h3270::session *ses, int key) {
53   - try {
54   - return ses->pakey(key);
55   - } catch(std::exception &e) {
56   - tn3270_lasterror = e.what();
57   - return -1;
58   - }
59   -}
60   -
61   -int tn3270_action(h3270::session *ses, const char *name) {
62   - try {
63   - return ses->action(name);
64   - } catch(std::exception &e) {
65   - tn3270_lasterror = e.what();
66   - return -1;
67   - }
68   -}
69   -
70   -int tn3270_erase(h3270::session *ses) {
71   - try {
72   - return ses->erase();
73   - } catch(std::exception &e) {
74   - tn3270_lasterror = e.what();
75   - return -1;
76   - }
77   -}
78   -
79   -int tn3270_erase_eof(h3270::session *ses) {
80   - try {
81   - return ses->erase_eof();
82   - } catch(std::exception &e) {
83   - tn3270_lasterror = e.what();
84   - return -1;
85   - }
86   -}
87   -
88   -int tn3270_erase_eol(h3270::session *ses) {
89   - try {
90   - return ses->erase_eol();
91   - } catch(std::exception &e) {
92   - tn3270_lasterror = e.what();
93   - return -1;
94   - }
95   -}
96   -
97   -int tn3270_erase_input(h3270::session *ses) {
98   - try {
99   - return ses->erase_input();
100   - } catch(std::exception &e) {
101   - tn3270_lasterror = e.what();
102   - return -1;
103   - }
104   -}
105   -
src/native/core/actions.cc 0 → 100644
... ... @@ -0,0 +1,124 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como actions.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 + * @file actions.cc
  32 + *
  33 + * @brief Actions wrapper.
  34 + *
  35 + * @author Perry Werneck <perry.werneck@gmail.com>
  36 + *
  37 + */
  38 +
  39 + #include <native.h>
  40 +
  41 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  42 +
  43 + static int action(TN3270::Host *ses, std::function<void(TN3270::Host &ses)> worker) noexcept {
  44 +
  45 + try {
  46 +
  47 + if(!ses->isConnected()) {
  48 + tn3270_lasterror = "Not connected";
  49 + }
  50 +
  51 + worker(*ses);
  52 + return 0;
  53 +
  54 + } catch(const std::system_error &e) {
  55 +
  56 + tn3270_set_error(ses,e);
  57 +
  58 + } catch(const std::exception &e) {
  59 +
  60 + tn3270_set_error(ses,e);
  61 +
  62 + } catch(...) {
  63 +
  64 + tn3270_set_error(ses,"Unexpected error");
  65 +
  66 + }
  67 +
  68 + return -1;
  69 +
  70 + }
  71 +
  72 +
  73 +static int action(TN3270::Host *ses, TN3270::Action id) noexcept {
  74 +
  75 + return action(ses, [id](TN3270::Host &ses) {
  76 + ses.push(id);
  77 + });
  78 +
  79 +}
  80 +
  81 +int tn3270_pfkey(TN3270::Host *ses, int key) {
  82 +
  83 + return action(ses, [key](TN3270::Host &ses) {
  84 + ses.pfkey(key);
  85 + });
  86 +
  87 +}
  88 +
  89 +int tn3270_pakey(TN3270::Host *ses, int key) {
  90 +
  91 + return action(ses, [key](TN3270::Host &ses) {
  92 + ses.pakey(key);
  93 + });
  94 +
  95 +}
  96 +
  97 +int tn3270_action(TN3270::Host *ses, const char *name) {
  98 +
  99 + return action(ses, [name](TN3270::Host &ses) {
  100 + ses.action(name);
  101 + });
  102 +
  103 +}
  104 +
  105 +int tn3270_enter(TN3270::Host *ses) {
  106 + return action(ses,TN3270::ENTER);
  107 +}
  108 +
  109 +int tn3270_erase(TN3270::Host *ses) {
  110 + return action(ses,TN3270::ERASE);
  111 +}
  112 +
  113 +int tn3270_erase_eof(TN3270::Host *ses) {
  114 + return action(ses,TN3270::ERASE_EOF);
  115 +}
  116 +
  117 +int tn3270_erase_eol(TN3270::Host *ses) {
  118 + return action(ses,TN3270::ERASE_EOL);
  119 +}
  120 +
  121 +int tn3270_erase_input(TN3270::Host *ses) {
  122 + return action(ses,TN3270::ERASE_INPUT);
  123 +}
  124 +
... ...
src/native/core/get.cc 0 → 100644
... ... @@ -0,0 +1,166 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como get.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 <native.h>
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 + /**
  35 + * @brief Obtém a versão da biblioteca.
  36 + *
  37 + */
  38 +DLL_PUBLIC int tn3270_get_version(TN3270::Host *ses, char * str, int strlen) {
  39 +
  40 + if(!(str && strlen))
  41 + return -1;
  42 +
  43 + return call(ses,[str,strlen](TN3270::Host &ses){
  44 +
  45 + strncpy(str,ses.getVersion().c_str(),strlen);
  46 + return 0;
  47 +
  48 + });
  49 +
  50 + }
  51 +
  52 + /**
  53 + * @brief Obtém a revisão da biblioteca.
  54 + *
  55 + */
  56 + int tn3270_get_revision(TN3270::Host *ses, char* str, int strlen) {
  57 +
  58 + if(!(str && strlen))
  59 + return -1;
  60 +
  61 + return call(ses,[str,strlen](TN3270::Host &ses){
  62 +
  63 + strncpy(str,ses.getRevision().c_str(),strlen);
  64 + return 0;
  65 +
  66 + });
  67 +
  68 + }
  69 +
  70 + int tn3270_get_cstate(TN3270::Host *ses) {
  71 +
  72 + return call(ses,[](TN3270::Host &ses){
  73 +
  74 + return (int) ses.getConnectionState();
  75 +
  76 + });
  77 +
  78 + }
  79 +
  80 + int tn3270_get_program_message(TN3270::Host *ses) {
  81 +
  82 + return call(ses,[](TN3270::Host &ses){
  83 +
  84 + return (int) ses.getProgramMessage();
  85 +
  86 + });
  87 +
  88 + }
  89 +
  90 + int tn3270_get_secure(TN3270::Host *ses) {
  91 +
  92 +
  93 + return call(ses,[](TN3270::Host &ses){
  94 +
  95 + return (int) ses.getSSLState();
  96 +
  97 + });
  98 +
  99 + }
  100 +
  101 + int tn3270_get_width(TN3270::Host *ses) {
  102 +
  103 + return call(ses,[](TN3270::Host &ses){
  104 +
  105 + return (int) ses.getScreenWidth();
  106 +
  107 + });
  108 +
  109 + }
  110 +
  111 + int tn3270_get_height(TN3270::Host *ses) {
  112 +
  113 + return call(ses,[](TN3270::Host &ses){
  114 +
  115 + return (int) ses.getScreenHeight();
  116 +
  117 + });
  118 +
  119 + }
  120 +
  121 + int tn3270_get_length(TN3270::Host *ses) {
  122 +
  123 + return call(ses,[](TN3270::Host &ses){
  124 +
  125 + return (int) ses.getScreenLength();
  126 +
  127 + });
  128 +
  129 + }
  130 +
  131 + int tn3270_get_cursor_addr(TN3270::Host *ses) {
  132 +
  133 + return call(ses,[](TN3270::Host &ses){
  134 +
  135 + return (int) ses.getCursorAddress();
  136 +
  137 + });
  138 +
  139 + }
  140 +
  141 + int tn3270_get_url(TN3270::Host *ses, char* str, int length) {
  142 +
  143 + return call(ses, str, length, [](TN3270::Host &ses, int length) {
  144 +
  145 + return ses.getHostURL();
  146 +
  147 + });
  148 +
  149 + }
  150 +
  151 + DLL_PUBLIC int tn3270_get_luname(TN3270::Host *ses, char * str, int length) {
  152 +
  153 + return call(ses, str, length, [](TN3270::Host &ses, int length) {
  154 +
  155 + return ses.getLUName();
  156 +
  157 + });
  158 +
  159 + }
  160 +
  161 + int tn3270_get_error_message(TN3270::Host *ses, char* str, int length) {
  162 +
  163 + strncpy(str,tn3270_lasterror.c_str(),length);
  164 + return 0;
  165 +
  166 + }
... ...
src/native/core/init.cc 0 → 100644
... ... @@ -0,0 +1,86 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como init.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 <native.h>
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 + std::string tn3270_lasterror = "";
  35 +
  36 +/**
  37 + * @brief Cria uma sessão tn3270.
  38 + *
  39 + * @param name Nome da janela ou "" para criar uma sessão oculta.
  40 + *
  41 + * @return Identificador da sessão criada.
  42 + *
  43 + */
  44 + TN3270::Host * tn3270_create_session(const char *name) {
  45 +
  46 + try {
  47 +
  48 + return new TN3270::Host(name);
  49 +
  50 + } catch(const exception &e) {
  51 +
  52 + tn3270_lasterror = e.what();
  53 +
  54 + } catch(...) {
  55 +
  56 + tn3270_lasterror = "Unexpected error";
  57 +
  58 + }
  59 +
  60 + return nullptr;
  61 + }
  62 +
  63 + /**
  64 + * @brief Destrói uma sessão.
  65 + *
  66 + */
  67 + int tn3270_destroy_session(TN3270::Host *ses) {
  68 +
  69 + try {
  70 +
  71 + delete ses;
  72 + return 0;
  73 +
  74 + } catch(const exception &e) {
  75 +
  76 + tn3270_lasterror = e.what();
  77 +
  78 + } catch(...) {
  79 +
  80 + tn3270_lasterror = "Unexpected error";
  81 +
  82 + }
  83 +
  84 + return -1;
  85 + }
  86 +
... ...
src/native/core/network.cc 0 → 100644
... ... @@ -0,0 +1,102 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como network.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 <native.h>
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 +int tn3270_connect(TN3270::Host *ses, const char *url, time_t timeout) {
  35 +
  36 + return call(ses,[url,timeout](TN3270::Host &ses){
  37 +
  38 + ses.connect(url);
  39 +
  40 + if(timeout) {
  41 + ses.waitForReady(timeout);
  42 + }
  43 +
  44 + return 0;
  45 +
  46 + });
  47 +
  48 +}
  49 +
  50 +int tn3270_disconnect(TN3270::Host *ses) {
  51 +
  52 + return call(ses,[](TN3270::Host &ses){
  53 +
  54 + ses.disconnect();
  55 + return 0;
  56 +
  57 + });
  58 +
  59 +}
  60 +
  61 +int tn3270_is_connected(TN3270::Host *ses) {
  62 +
  63 + return call(ses,[](TN3270::Host &ses){
  64 +
  65 + return (ses.isConnected() ? 1 : 0);
  66 +
  67 + });
  68 +
  69 +}
  70 +
  71 +int tn3270_is_ready(TN3270::Host *ses) {
  72 +
  73 + return call(ses,[](TN3270::Host &ses){
  74 +
  75 + return (int) (ses.isReady() ? 1 : 0);
  76 +
  77 + });
  78 +
  79 +}
  80 +
  81 +int tn3270_wait_for_ready(TN3270::Host *ses, int seconds) {
  82 +
  83 + return call(ses,[seconds](TN3270::Host &ses){
  84 +
  85 + ses.waitForReady(seconds);
  86 + return 0;
  87 +
  88 + });
  89 +
  90 +}
  91 +
  92 +int tn3270_wait(TN3270::Host *ses, int seconds) {
  93 +
  94 + return call(ses,[seconds](TN3270::Host &ses){
  95 +
  96 + ses.wait(seconds);
  97 + return 0;
  98 +
  99 + });
  100 +
  101 +}
  102 +
... ...
src/native/core/screen.cc 0 → 100644
... ... @@ -0,0 +1,96 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como screen.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 <native.h>
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 +int tn3270_get_contents(TN3270::Host *ses, char* str, int length) {
  35 +
  36 + return call(ses,str,length,[](TN3270::Host &ses, int length){
  37 +
  38 + return ses.toString(0,length);
  39 +
  40 + });
  41 +
  42 +}
  43 +
  44 +int tn3270_get_string(TN3270::Host *ses, int addr, char* str, int length) {
  45 +
  46 + return call(ses,str,length,[addr](TN3270::Host &ses, int length){
  47 +
  48 + return ses.toString(addr,length);
  49 +
  50 + });
  51 +
  52 +
  53 +}
  54 +
  55 +int tn3270_get_string_at(TN3270::Host *ses, int row, int col, char* str, int length) {
  56 +
  57 + return call(ses,str,length,[row,col](TN3270::Host &ses, int length){
  58 +
  59 + return ses.toString((unsigned int) row, (unsigned int) col, length);
  60 +
  61 + });
  62 +
  63 +}
  64 +
  65 +int tn3270_set_string_at(TN3270::Host *ses, int row, int col, const char* str) {
  66 +
  67 + return call(ses,[row,col,str](TN3270::Host &ses){
  68 +
  69 + ses.push((unsigned int) row, (unsigned int) col, str);
  70 + return 0;
  71 +
  72 + });
  73 +
  74 +
  75 +}
  76 +
  77 +int tn3270_wait_for_string_at(TN3270::Host *ses, int row, int col, const char *key, int timeout) {
  78 +
  79 + return call(ses,[row,col,key,timeout](TN3270::Host &ses){
  80 +
  81 + ses.wait((unsigned int) row, (unsigned int) col, key, timeout);
  82 + return 0;
  83 +
  84 + });
  85 +
  86 +}
  87 +
  88 +int tn3270_cmp_string_at(TN3270::Host *ses, int row, int col, const char* str) {
  89 +
  90 + return call(ses,[row,col,str](TN3270::Host &ses){
  91 +
  92 + return ses.compare((unsigned int) row, (unsigned int) col, str);
  93 +
  94 + });
  95 +
  96 +}
... ...
src/native/core/set.cc 0 → 100644
... ... @@ -0,0 +1,88 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como set.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 <native.h>
  31 +
  32 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  33 +
  34 +int tn3270_set_unlock_delay(TN3270::Host *ses, int ms) {
  35 +
  36 + return call(ses,[ms](TN3270::Host &ses) {
  37 +
  38 + ses.setUnlockDelay(ms);
  39 + return 0;
  40 +
  41 + });
  42 +
  43 +}
  44 +
  45 +int tn3270_set_cursor_position(TN3270::Host *ses, int row, int col) {
  46 +
  47 + return call(ses,[row,col](TN3270::Host &ses) {
  48 +
  49 + ses.setCursor((unsigned short) row, (unsigned short) row);
  50 + return 0;
  51 +
  52 + });
  53 +
  54 +
  55 +}
  56 +
  57 +int tn3270_set_cursor_addr(TN3270::Host *ses, int addr) {
  58 +
  59 + return call(ses,[addr](TN3270::Host &ses) {
  60 +
  61 + ses.setCursor(addr);
  62 + return 0;
  63 +
  64 + });
  65 +
  66 +}
  67 +
  68 +int tn3270_set_charset(TN3270::Host *ses, const char* str) {
  69 +
  70 + return call(ses,[str](TN3270::Host &ses) {
  71 +
  72 + ses.setCharSet(str);
  73 + return 0;
  74 +
  75 + });
  76 +
  77 +}
  78 +
  79 +int tn3270_set_url(TN3270::Host *ses, const char *url) {
  80 +
  81 + return call(ses,[url](TN3270::Host &ses) {
  82 +
  83 + ses.setHostURL(url);
  84 + return 0;
  85 +
  86 + });
  87 +}
  88 +
... ...
src/native/core/tools.cc 0 → 100644
... ... @@ -0,0 +1,121 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como actions.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 + * @file
  32 + *
  33 + * @brief
  34 + *
  35 + * @author
  36 + *
  37 + */
  38 +
  39 + #include <native.h>
  40 +
  41 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  42 +
  43 +int call(TN3270::Host *ses, std::function<int(TN3270::Host &ses)> worker) noexcept {
  44 +
  45 + if(!ses) {
  46 +
  47 + return tn3270_set_error(ses, "Invalid session handle");
  48 +
  49 + }
  50 +
  51 + try {
  52 +
  53 + return worker(*ses);
  54 +
  55 + } catch(const exception &e) {
  56 +
  57 + tn3270_set_error(ses, e);
  58 +
  59 + } catch(...) {
  60 +
  61 + tn3270_set_error(ses, "Unexpected error");
  62 +
  63 + }
  64 +
  65 + return -1;
  66 +
  67 +}
  68 +
  69 +int call(TN3270::Host *ses, char* str, int length, std::function<string(TN3270::Host &ses, int length)> worker) {
  70 +
  71 + if(!(str && length)) {
  72 +
  73 + return tn3270_set_error(ses, "The output buffer is invalid");
  74 +
  75 + }
  76 +
  77 + if(!ses) {
  78 +
  79 + return tn3270_set_error(ses, "Invalid session handle");
  80 +
  81 + }
  82 +
  83 + try {
  84 +
  85 + std::string contents = worker(*ses, length);
  86 +
  87 + memset(str,0,length);
  88 + strncpy(str,contents.c_str(),length);
  89 + if(contents.size() < ((size_t) length)) {
  90 + str[contents.size()] = 0;
  91 + return contents.size();
  92 + }
  93 +
  94 + return length;
  95 +
  96 + } catch(const exception &e) {
  97 +
  98 + tn3270_set_error(ses, e);
  99 +
  100 + } catch(...) {
  101 +
  102 + tn3270_set_error(ses, "Unexpected error");
  103 +
  104 + }
  105 +
  106 + return -1;
  107 +
  108 +
  109 +}
  110 +
  111 +int tn3270_set_error(TN3270::Host *ses, const char *str) noexcept {
  112 + tn3270_lasterror = str;
  113 + return -1;
  114 +}
  115 +
  116 +int tn3270_set_error(TN3270::Host *ses, const std::exception &e) noexcept {
  117 + tn3270_lasterror = e.what();
  118 + return -1;
  119 +}
  120 +
  121 +
... ...
src/native/get.cc
... ... @@ -1,203 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como get.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 "private.h"
31   -
32   -
33   -/*---[ Implement ]----------------------------------------------------------------------------------*/
34   -
35   - /**
36   - * @brief Obtém a versão da biblioteca.
37   - *
38   - */
39   - int tn3270_get_version(h3270::session *ses, char* str, int strlen) {
40   -
41   - if(!ses) {
42   - return -1;
43   - }
44   -
45   - try {
46   - strncpy(str,ses->get_version().c_str(),strlen);
47   - } catch(std::exception &e) {
48   - tn3270_lasterror = e.what();
49   - return -1;
50   - }
51   - return 0;
52   - }
53   -
54   - /**
55   - * @brief Obtém a revisão da biblioteca.
56   - *
57   - */
58   - int tn3270_get_revision(h3270::session *ses, char* str, int strlen) {
59   -
60   - if(!ses) {
61   - return -1;
62   - }
63   -
64   - try {
65   - strncpy(str,ses->get_revision().c_str(),strlen);
66   - } catch(std::exception &e) {
67   - tn3270_lasterror = e.what();
68   - return -1;
69   - }
70   - return 0;
71   - }
72   -
73   - int tn3270_get_cstate(h3270::session *ses) {
74   -
75   - if(!ses) {
76   - return -1;
77   - }
78   -
79   - trace_to_file("%s: %d",__FUNCTION__,(int) ses->get_cstate());
80   -
81   - try {
82   - return (int) ses->get_cstate();
83   - } catch(std::exception &e) {
84   - tn3270_lasterror = e.what();
85   - }
86   - return -1;
87   -
88   - }
89   -
90   - int tn3270_get_program_message(h3270::session *ses) {
91   -
92   - if(!ses) {
93   - return -1;
94   - }
95   -
96   - try {
97   - return (int) ses->get_program_message();
98   - } catch(std::exception &e) {
99   - tn3270_lasterror = e.what();
100   - }
101   - return -1;
102   -
103   - }
104   -
105   - int tn3270_get_secure(h3270::session *ses) {
106   -
107   - if(!ses) {
108   - return -1;
109   - }
110   -
111   - try {
112   - return (int) ses->get_secure();
113   - } catch(std::exception &e) {
114   - tn3270_lasterror = e.what();
115   - }
116   - return -1;
117   -
118   - }
119   -
120   - int tn3270_get_width(h3270::session *ses) {
121   -
122   - if(!ses) {
123   - return 0;
124   - }
125   -
126   - try {
127   - return (int) ses->get_width();
128   - } catch(std::exception &e) {
129   - tn3270_lasterror = e.what();
130   - }
131   - return -1;
132   -
133   - }
134   -
135   - int tn3270_get_height(h3270::session *ses) {
136   -
137   - if(!ses) {
138   - return 0;
139   - }
140   -
141   - try {
142   - return (int) ses->get_height();
143   - } catch(std::exception &e) {
144   - tn3270_lasterror = e.what();
145   - }
146   - return -1;
147   -
148   - }
149   -
150   - int tn3270_get_length(h3270::session *ses) {
151   -
152   - if(!ses) {
153   - return 0;
154   - }
155   -
156   - try {
157   - return (int) ses->get_length();
158   - } catch(std::exception &e) {
159   - tn3270_lasterror = e.what();
160   - }
161   - return -1;
162   -
163   - }
164   -
165   - int tn3270_get_cursor_addr(h3270::session *ses) {
166   -
167   - if(ses) {
168   -
169   - try {
170   - return (int) ses->get_cursor_addr();
171   - } catch(std::exception &e) {
172   - tn3270_lasterror = e.what();
173   - }
174   -
175   - }
176   - return -1;
177   -
178   - }
179   -
180   - int tn3270_get_url(h3270::session *ses, char* str, int strlen) {
181   -
182   - if(ses) {
183   -
184   - try {
185   -
186   - strncpy(str,ses->get_url().c_str(),strlen);
187   - return 0;
188   -
189   - } catch(std::exception &e) {
190   - tn3270_lasterror = e.what();
191   - }
192   -
193   - }
194   - return -1;
195   -
196   - }
197   -
198   - int tn3270_get_error_message(h3270::session *ses, char* str, int strlen) {
199   -
200   - strncpy(str,tn3270_lasterror.c_str(),strlen);
201   - return 0;
202   -
203   - }
src/native/init.cc
... ... @@ -1,93 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como init.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 "private.h"
31   -
32   -/*---[ Implement ]----------------------------------------------------------------------------------*/
33   -
34   - std::string tn3270_lasterror = "";
35   -
36   -/**
37   - * @brief Cria uma sessão tn3270.
38   - *
39   - * @param name Nome da janela ou "" para criar uma sessão oculta.
40   - *
41   - * @return Identificador da sessão criada.
42   - *
43   - */
44   - h3270::session * tn3270_create_session(const char *name) {
45   -
46   - trace_to_file("%s(%s)",__FUNCTION__,name ? name : "");
47   -
48   - try {
49   - return h3270::session::create(name);
50   - } catch(std::exception &e) {
51   - tn3270_lasterror = e.what();
52   - trace_to_file("%s(%s)",__FUNCTION__,e.what());
53   - }
54   - return nullptr;
55   - }
56   -
57   - /**
58   - * @brief Destrói uma sessão.
59   - *
60   - */
61   - int tn3270_destroy_session(h3270::session *ses) {
62   -
63   - trace_to_file("%s",__FUNCTION__);
64   -
65   - try {
66   - delete ses;
67   - } catch(std::exception &e) {
68   - tn3270_lasterror = e.what();
69   - return -1;
70   - }
71   - return 0;
72   - }
73   -
74   -#ifdef ENABLE_TRACE_TO_FILE
75   - void write_trace(const char *fmt, ...) {
76   -
77   - FILE *trace = fopen(PACKAGE_NAME ".trace","a");
78   - if(trace) {
79   - va_list arg_ptr;
80   - va_start(arg_ptr, fmt);
81   - vfprintf(trace, fmt, arg_ptr);
82   - fprintf(trace,"\n");
83   - va_end(arg_ptr);
84   - fclose(trace);
85   - }
86   -#ifdef DEBUG
87   - else {
88   - perror(PACKAGE_NAME ".trace");
89   - }
90   -#endif // DEBUG
91   -
92   - }
93   -#endif // ENABLE_TRACE_TO_FILE
src/native/native.cbp 0 → 100644
... ... @@ -0,0 +1,52 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2 +<CodeBlocks_project_file>
  3 + <FileVersion major="1" minor="6" />
  4 + <Project>
  5 + <Option title="LIB3270 Native .NET Bindings" />
  6 + <Option makefile_is_custom="1" />
  7 + <Option pch_mode="2" />
  8 + <Option compiler="gcc" />
  9 + <Build>
  10 + <Target title="Debug">
  11 + <Option output=".bin/Debug/LIB3270 Native " prefix_auto="1" extension_auto="1" />
  12 + <Option object_output=".obj/Debug/" />
  13 + <Option type="1" />
  14 + <Option compiler="gcc" />
  15 + <Compiler>
  16 + <Add option="-g" />
  17 + </Compiler>
  18 + </Target>
  19 + <Target title="Release">
  20 + <Option output=".bin/Release/LIB3270 Native " prefix_auto="1" extension_auto="1" />
  21 + <Option object_output=".obj/Release/" />
  22 + <Option type="1" />
  23 + <Option compiler="gcc" />
  24 + <Compiler>
  25 + <Add option="-O2" />
  26 + </Compiler>
  27 + <Linker>
  28 + <Add option="-s" />
  29 + </Linker>
  30 + </Target>
  31 + </Build>
  32 + <Compiler>
  33 + <Add option="-Wall" />
  34 + </Compiler>
  35 + <Unit filename="../include/native.h" />
  36 + <Unit filename="core/actions.cc" />
  37 + <Unit filename="core/get.cc" />
  38 + <Unit filename="core/init.cc" />
  39 + <Unit filename="core/network.cc" />
  40 + <Unit filename="core/screen.cc" />
  41 + <Unit filename="core/set.cc" />
  42 + <Unit filename="core/tools.cc" />
  43 + <Unit filename="testprogram/testprogram.cc" />
  44 + <Unit filename="windows/resources.rc.in" />
  45 + <Extensions>
  46 + <code_completion />
  47 + <envvars />
  48 + <debugger />
  49 + <lib_finder disable_auto="1" />
  50 + </Extensions>
  51 + </Project>
  52 +</CodeBlocks_project_file>
... ...
src/native/network.cc
... ... @@ -1,123 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como network.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 "private.h"
31   -
32   -/*---[ Implement ]----------------------------------------------------------------------------------*/
33   -
34   -int tn3270_connect(h3270::session *ses, const char *host, time_t wait) {
35   -
36   - if(ses) {
37   -
38   - try {
39   - debug("%s(%s,%d)",__FUNCTION__,host,(int) wait);
40   - return ses->connect(host,wait);
41   - } catch(std::exception &e) {
42   - tn3270_lasterror = e.what();
43   - }
44   -
45   - }
46   -
47   - return -1;
48   -}
49   -
50   -int tn3270_disconnect(h3270::session *ses) {
51   -
52   - if(ses) {
53   -
54   - try {
55   - return ses->disconnect();
56   - } catch(std::exception &e) {
57   - tn3270_lasterror = e.what();
58   - }
59   -
60   - }
61   -
62   - return -1;
63   -}
64   -
65   -int tn3270_is_connected(h3270::session *ses) {
66   -
67   - if(ses) {
68   -
69   - try {
70   - return (int) ses->is_connected();
71   - } catch(std::exception &e) {
72   - tn3270_lasterror = e.what();
73   - }
74   -
75   - }
76   -
77   - return -1;
78   -}
79   -
80   -int tn3270_is_ready(h3270::session *ses) {
81   -
82   - if(ses) {
83   -
84   - try {
85   - return (int) ses->is_ready();
86   - } catch(std::exception &e) {
87   - tn3270_lasterror = e.what();
88   - }
89   -
90   - }
91   -
92   - return -1;
93   -}
94   -
95   -int tn3270_wait_for_ready(h3270::session *ses, int seconds) {
96   -
97   - if(ses) {
98   -
99   - try {
100   - return (int) ses->wait_for_ready(seconds);
101   - } catch(std::exception &e) {
102   - tn3270_lasterror = e.what();
103   - }
104   -
105   - }
106   - return -1;
107   -
108   -}
109   -
110   -int tn3270_wait(h3270::session *ses, int seconds) {
111   -
112   - if(ses) {
113   -
114   - try {
115   - return (int) ses->wait(seconds);
116   - } catch(std::exception &e) {
117   - tn3270_lasterror = e.what();
118   - }
119   -
120   - }
121   - return -1;
122   -}
123   -
src/native/private.h
... ... @@ -1,143 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como private.h 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   - * Referências:
29   - *
30   - * http://www.mono-project.com/docs/advanced/pinvoke/
31   - * http://tirania.org/blog/archive/2011/Dec-19.html
32   - *
33   - */
34   -#ifndef PRIVATE_H_INCLUDED
35   -
36   - #define PRIVATE_H_INCLUDED
37   -
38   - #include <config.h>
39   -
40   - #if defined(_WIN32)
41   -
42   - #include <windows.h>
43   -
44   - #define DLL_PRIVATE extern
45   - #define DLL_PUBLIC extern __declspec (dllexport) __attribute__((cdecl))
46   -
47   - #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
48   -
49   - #define DLL_PRIVATE __hidden extern
50   - #define DLL_PUBLIC extern
51   -
52   - #else
53   -
54   - #define DLL_PRIVATE __attribute__((visibility("hidden"))) extern
55   - #define DLL_PUBLIC __attribute__((visibility("default"))) extern
56   -
57   - #endif
58   -
59   - #include <cstdio>
60   - #include <string>
61   -
62   - #ifdef DEBUG
63   - #define debug( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n" , __FILE__, (int) __LINE__, __VA_ARGS__ ); fflush(stderr);
64   - #else
65   - #define debug( fmt, ... ) /* */
66   - #endif // DEBUG
67   -
68   - #ifdef ENABLE_TRACE_TO_FILE
69   - DLL_PRIVATE void write_trace(const char *fmt, ...);
70   - #define trace_to_file( ... ) write_trace(__VA_ARGS__)
71   - #else
72   - #define trace_to_file( ... ) /* */
73   - #endif // ENABLE_TRACE_TO_FILE
74   -
75   - #include <pw3270/pw3270cpp.h>
76   - #include <cerrno>
77   - #include <cstring>
78   -
79   - DLL_PRIVATE std::string tn3270_lasterror;
80   -
81   - extern "C" {
82   -
83   - DLL_PUBLIC h3270::session * tn3270_create_session(const char *name);
84   -
85   - DLL_PUBLIC int tn3270_destroy_session(h3270::session *ses);
86   -
87   - DLL_PUBLIC int tn3270_get_version(h3270::session *ses, char* str, int strlen);
88   - DLL_PUBLIC int tn3270_get_revision(h3270::session *ses, char* str, int strlen);
89   -
90   - DLL_PUBLIC int tn3270_connect(h3270::session *ses, const char *host, time_t wait);
91   - DLL_PUBLIC int tn3270_disconnect(h3270::session *ses);
92   - DLL_PUBLIC int tn3270_is_connected(h3270::session *ses);
93   - DLL_PUBLIC int tn3270_is_ready(h3270::session *ses);
94   -
95   - DLL_PUBLIC int tn3270_set_url(h3270::session *ses, const char *url);
96   - DLL_PUBLIC int tn3270_get_url(h3270::session *ses, char* str, int strlen);
97   -
98   - DLL_PUBLIC int tn3270_set_error_message(h3270::session *ses, const char *url);
99   - DLL_PUBLIC int tn3270_get_error_message(h3270::session *ses, char* str, int strlen);
100   -
101   - DLL_PUBLIC int tn3270_set_cursor_addr(h3270::session *ses, int addr);
102   - DLL_PUBLIC int tn3270_get_cursor_addr(h3270::session *ses);
103   -
104   - DLL_PUBLIC int tn3270_action(h3270::session *ses, const char *name);
105   -
106   - DLL_PUBLIC int tn3270_erase(h3270::session *ses);
107   - DLL_PUBLIC int tn3270_erase_eof(h3270::session *ses);
108   - DLL_PUBLIC int tn3270_erase_eol(h3270::session *ses);
109   - DLL_PUBLIC int tn3270_erase_input(h3270::session *ses);
110   -
111   - DLL_PUBLIC int tn3270_wait_for_ready(h3270::session *ses, int seconds);
112   - DLL_PUBLIC int tn3270_wait(h3270::session *ses, int seconds);
113   -
114   - DLL_PUBLIC int tn3270_get_cstate(h3270::session *ses);
115   - DLL_PUBLIC int tn3270_get_program_message(h3270::session *ses);
116   - DLL_PUBLIC int tn3270_get_secure(h3270::session *ses);
117   -
118   - DLL_PUBLIC int tn3270_get_contents(h3270::session *ses, char* str, int strlen);
119   - DLL_PUBLIC int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen);
120   - DLL_PUBLIC int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int strlen);
121   -
122   - DLL_PUBLIC int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str);
123   -
124   - DLL_PUBLIC int tn3270_wait_for_string_at(h3270::session *ses, int row, int col, const char *key, int timeout);
125   - DLL_PUBLIC int tn3270_cmp_string_at(h3270::session *ses, int row, int col, const char* str);
126   -
127   - DLL_PUBLIC int tn3270_set_unlock_delay(h3270::session *ses, int ms);
128   - DLL_PUBLIC int tn3270_set_cursor_position(h3270::session *ses, int row, int col);
129   -
130   - DLL_PUBLIC int tn3270_enter(h3270::session *ses);
131   - DLL_PUBLIC int tn3270_pfkey(h3270::session *ses, int key);
132   - DLL_PUBLIC int tn3270_pakey(h3270::session *ses, int key);
133   -
134   - DLL_PUBLIC int tn3270_get_width(h3270::session *ses);
135   - DLL_PUBLIC int tn3270_get_height(h3270::session *ses);
136   - DLL_PUBLIC int tn3270_get_length(h3270::session *ses);
137   -
138   - DLL_PUBLIC int tn3270_set_charset(h3270::session *ses, const char* str);
139   -
140   - }
141   -
142   -
143   -#endif // PRIVATE_H_INCLUDED
src/native/screen.cc
... ... @@ -1,140 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como screen.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 "private.h"
31   -
32   -/*---[ Implement ]----------------------------------------------------------------------------------*/
33   -
34   -int tn3270_get_contents(h3270::session *ses, char* str, int sz) {
35   -
36   - if(!ses) {
37   - return -1;
38   - }
39   -
40   - try {
41   -
42   - std::string contents = ses->get_contents();
43   -
44   - memset(str,0,sz);
45   - strncpy(str,contents.c_str(),sz);
46   - if(contents.size() < ((size_t) sz)) {
47   - str[contents.size()] = 0;
48   - return contents.size();
49   - }
50   -
51   - } catch(std::exception &e) {
52   - tn3270_lasterror = e.what();
53   - return -1;
54   - }
55   -
56   - return sz;
57   -
58   -}
59   -
60   -int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) {
61   -
62   - if(!ses) {
63   - return -1;
64   - }
65   -
66   - try {
67   - memset(str,0,strlen);
68   - strncpy(str,ses->get_string(addr,strlen).c_str(),strlen);
69   - } catch(std::exception &e) {
70   - tn3270_lasterror = e.what();
71   - return -1;
72   - }
73   -
74   - return 0;
75   -}
76   -
77   -int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int sz) {
78   -
79   - if(!ses) {
80   - return -1;
81   - }
82   -
83   - try {
84   - memset(str,0,sz+1);
85   - strncpy(str,ses->get_string_at(row,col,sz).c_str(),sz);
86   - trace_to_file("%s(%d,%d,%d):\n%s\n",__FUNCTION__,row,col,sz,str);
87   - } catch(std::exception &e) {
88   - tn3270_lasterror = e.what();
89   - return -1;
90   - }
91   - return (int) strlen(str);
92   -}
93   -
94   -int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str) {
95   -
96   - if(!ses) {
97   - return -1;
98   - }
99   -
100   - try {
101   - trace_to_file("%s(%d,%d):\n%s\n",__FUNCTION__,row,col,str);
102   - debug("%s(%d,%d,\"%s\")",__FUNCTION__,row,col,str);
103   - ses->set_string_at(row,col,str);
104   - } catch(std::exception &e) {
105   - tn3270_lasterror = e.what();
106   - return -1;
107   - }
108   - return 0;
109   -}
110   -
111   -int tn3270_wait_for_string_at(h3270::session *ses, int row, int col, const char *key, int timeout) {
112   -
113   - if(ses) {
114   -
115   - try {
116   - return ses->wait_for_string_at(row,col,key,timeout);
117   - } catch(std::exception &e) {
118   - tn3270_lasterror = e.what();
119   - }
120   -
121   - }
122   -
123   - return -1;
124   -
125   -}
126   -
127   -int tn3270_cmp_string_at(h3270::session *ses, int row, int col, const char* str) {
128   -
129   - if(ses) {
130   -
131   - try {
132   - return ses->cmp_string_at(row,col,str);
133   - } catch(std::exception &e) {
134   - tn3270_lasterror = e.what();
135   - }
136   -
137   - }
138   -
139   - return -1;
140   -}
src/native/set.cc
... ... @@ -1,94 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como set.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 "private.h"
31   -
32   -/*---[ Implement ]----------------------------------------------------------------------------------*/
33   -
34   -int tn3270_set_unlock_delay(h3270::session *ses, int ms) {
35   - try {
36   - ses->set_unlock_delay((unsigned short) ms);
37   - } catch(std::exception &e) {
38   - tn3270_lasterror = e.what();
39   - return -1;
40   - }
41   - return 0;
42   -}
43   -
44   -int tn3270_set_cursor_position(h3270::session *ses, int row, int col) {
45   - try {
46   - ses->set_cursor_position(row,col);
47   - } catch(std::exception &e) {
48   - tn3270_lasterror = e.what();
49   - return -1;
50   - }
51   - return 0;
52   -}
53   -
54   -int tn3270_set_cursor_addr(h3270::session *ses, int addr) {
55   - try {
56   - ses->set_cursor_addr(addr);
57   - } catch(std::exception &e) {
58   - tn3270_lasterror = e.what();
59   - return -1;
60   - }
61   - return 0;
62   -}
63   -
64   -int tn3270_set_charset(h3270::session *ses, const char* str) {
65   -
66   - if(!ses) {
67   - return EINVAL;
68   - }
69   -
70   - try {
71   - trace_to_file("%s: \"%s\" -> \"%s\"",__FUNCTION__,ses->get_display_charset().c_str(),str);
72   - ses->set_display_charset(NULL, str);
73   - } catch(std::exception &e) {
74   - tn3270_lasterror = e.what();
75   - return -1;
76   - }
77   - return 0;
78   -}
79   -
80   -int tn3270_set_url(h3270::session *ses, const char *url) {
81   - try {
82   - debug("%s(%s)",__FUNCTION__,url);
83   - ses->set_url(url);
84   - } catch(std::exception &e) {
85   - tn3270_lasterror = e.what();
86   - return -1;
87   - }
88   - return 0;
89   -}
90   -
91   -int tn3270_set_error_message(h3270::session *ses, const char *str) {
92   - tn3270_lasterror = str;
93   - return 0;
94   -}
src/native/testprogram/testprogram.cc 0 → 100644
... ... @@ -0,0 +1,167 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como - 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 + * @file
  32 + *
  33 + * @brief
  34 + *
  35 + * @author perry.werneck@gmail.com
  36 + *
  37 + */
  38 +
  39 + #include <getopt.h>
  40 + #include <cstdlib>
  41 + #include <native.h>
  42 +
  43 + using namespace std;
  44 +
  45 +/*---[ Implement ]----------------------------------------------------------------------------------*/
  46 +
  47 +
  48 +/*
  49 + // test host object
  50 + static void testHost(const char *session) {
  51 +
  52 + TN3270::Host host{session,nullptr,10};
  53 +
  54 + try {
  55 +
  56 + cout
  57 + << "Version: " << host.getVersion()
  58 + << "\tRevision: " << host.getRevision()
  59 + << std::endl;
  60 +
  61 + host.connect(nullptr);
  62 +
  63 + cout
  64 + << "Wait for unlock returns " << host.getKeyboardLockState() << std::endl
  65 + << "Connection state is " << toCharString(host.getConnectionState()) << std::endl
  66 + << "Program message is " << toCharString(host.getProgramMessage()) << std::endl
  67 + << "Luname is " << host.getLUName() << std::endl
  68 + << std::endl;
  69 +
  70 + if(host) {
  71 + cout << host << endl;
  72 + }
  73 +
  74 + host.setCursor(10,10);
  75 +
  76 + host.wait(10);
  77 +
  78 + // host.input("test@0another line");
  79 +
  80 + host.push(TN3270::ENTER);
  81 +
  82 + cout << endl << "[" << host.toString((unsigned int) 1, (unsigned int) 3,7) << "]" << endl;
  83 + cout << endl << "[" << host.toString((int) 15, (int) 10) << "]" << endl;
  84 +
  85 + host.pfkey(3);
  86 +
  87 + host.wait(10);
  88 +
  89 + host.disconnect();
  90 +
  91 + } catch(const std::exception &e) {
  92 +
  93 + cerr << std::endl << e.what() << std::endl << std::endl;
  94 +
  95 + }
  96 +
  97 + }
  98 + */
  99 +
  100 + int main(int argc, char **argv) {
  101 +
  102 + const char * session = ""; // "pw3270:a";
  103 + char buffer[4096];
  104 +
  105 + #pragma GCC diagnostic push
  106 + #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
  107 + static struct option options[] = {
  108 + { "session", required_argument, 0, 's' },
  109 + { 0, 0, 0, 0}
  110 +
  111 + };
  112 + #pragma GCC diagnostic pop
  113 +
  114 + int long_index =0;
  115 + int opt;
  116 + while((opt = getopt_long(argc, argv, "s:", options, &long_index )) != -1) {
  117 +
  118 + switch(opt) {
  119 + case 's':
  120 + session = optarg;
  121 + break;
  122 +
  123 + }
  124 +
  125 + }
  126 +
  127 + cout << "Session: " << session << endl;
  128 +
  129 + TN3270::Host * host = tn3270_create_session(session);
  130 +
  131 + tn3270_get_version(host,buffer,sizeof(buffer));
  132 + cout << "Version: " << buffer << endl;
  133 +
  134 + tn3270_get_revision(host,buffer,sizeof(buffer));
  135 + cout << "Revision: " << buffer << endl;
  136 +
  137 + tn3270_connect(host,nullptr,10);
  138 +
  139 + cout << "Connection state is " << tn3270_get_cstate(host) << std::endl
  140 + << "Program message is " << tn3270_get_program_message(host) << std::endl;
  141 +
  142 + tn3270_get_contents(host,buffer,sizeof(buffer));
  143 + cout << buffer << endl;
  144 +
  145 + tn3270_set_cursor_position(host,10,10);
  146 + tn3270_wait(host,10);
  147 +
  148 + tn3270_enter(host);
  149 + tn3270_wait_for_ready(host,10);
  150 +
  151 + tn3270_get_contents(host,buffer,sizeof(buffer));
  152 + cout << buffer << endl;
  153 +
  154 + tn3270_pfkey(host,3);
  155 + tn3270_wait_for_ready(host,10);
  156 +
  157 + tn3270_get_contents(host,buffer,sizeof(buffer));
  158 + cout << buffer << endl;
  159 +
  160 + tn3270_disconnect(host);
  161 +
  162 + tn3270_destroy_session(host);
  163 +
  164 + return 0;
  165 + }
  166 +
  167 +
... ...
src/native/valgrind.suppression 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +{
  2 + libcrypt_FIPS_selftest
  3 + Memcheck:Cond
  4 + ...
  5 + fun:FIPS_selftest
  6 +}
  7 +
  8 +{
  9 + libcrypt_FIPS_mode_set
  10 + Memcheck:Cond
  11 + ...
  12 + fun:FIPS_mode_set
  13 +}
  14 +
... ...
src/native/windows/resources.rc.in 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +#include <windows.h>
  2 +
  3 +VS_VERSION_INFO VERSIONINFO
  4 +FILEVERSION @WIN32_FILE_VERSION@
  5 +PRODUCTVERSION @PACKAGE_MAJOR_VERSION@,@PACKAGE_MINOR_VERSION@,@PACKAGE_MAJOR_RELEASE@,@PACKAGE_MINOR_RELEASE@
  6 +
  7 +BEGIN
  8 +
  9 + BLOCK "StringFileInfo"
  10 + BEGIN
  11 + BLOCK "080904E4"
  12 + BEGIN
  13 + VALUE "FileDescription", "@PACKAGE_DESCRIPTION@\0"
  14 + VALUE "CompanyName", "Banco do Brasil S. A.\0"
  15 + VALUE "FileVersion", "@WIN32_VERSION@\0"
  16 + VALUE "LegalCopyright", "(C) 2019 Banco do Brasil S. A. All Rights Reserved\0"
  17 + VALUE "OriginalFilename", "lib3270-mono-bindings@DLLEXT@\0"
  18 + VALUE "ProductName", "pw3270\0"
  19 + VALUE "ProductVersion", "@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@\0"
  20 + END
  21 + END
  22 +
  23 + BLOCK "VarFileInfo"
  24 + BEGIN
  25 + VALUE "Translation", 0x809, 0x04E4
  26 + END
  27 +
  28 +END
  29 +
... ...
src/pw3270-sharp/Makefile.in
... ... @@ -1,108 +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   -MODULE_NAME=pw3270-sharp
28   -
29   -SOURCES=$(MODULE_NAME).cs
30   -LIBNAME=$(MODULE_NAME).dll
31   -
32   -#---[ Configuration values ]-------------------------------------------------------------
33   -
34   -PACKAGE_NAME=@PACKAGE_NAME@
35   -PACKAGE_VERSION=@PACKAGE_VERSION@
36   -PACKAGE_TARNAME=@PACKAGE_TARNAME@
37   -
38   -prefix=@prefix@
39   -exec_prefix=@exec_prefix@
40   -bindir=@bindir@
41   -sbindir=@sbindir@
42   -libdir=@libdir@
43   -
44   -BASEDIR=@BASEDIR@
45   -SRCDIR=$(BASEDIR)/.src/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
46   -
47   -OBJDIR=$(BASEDIR)/.obj
48   -OBJDBG=$(OBJDIR)/Debug
49   -OBJRLS=$(OBJDIR)/Release
50   -
51   -BINDIR=$(BASEDIR)/.bin
52   -BINDBG=$(BINDIR)/Debug
53   -BINRLS=$(BINDIR)/Release
54   -
55   -INSTALL=@INSTALL@
56   -INSTALL_DATA=@INSTALL_DATA@
57   -INSTALL_PROGRAM=@INSTALL_PROGRAM@
58   -
59   -LN_S=@LN_S@
60   -
61   -MCS=@MCS@
62   -MKDIR=@MKDIR_P@
63   -GACUTIL=@GACUTIL@
64   -SN=@SN@
65   -
66   -#---[ Targets ]--------------------------------------------------------------------------
67   -
68   -all: \
69   - $(BINRLS)/$(LIBNAME)
70   -
71   -Release: \
72   - $(BINRLS)/$(LIBNAME)
73   -
74   -install: \
75   - $(BINRLS)/$(LIBNAME)
76   -
77   - @$(GACUTIL) -i $(BINRLS)/$(LIBNAME) -root $(DESTDIR)/usr/lib
78   -
79   - @$(MKDIR) $(DESTDIR)/usr/share/gapi-2.0/$(MODULE_NAME)
80   - @$(INSTALL_DATA) $(BINRLS)/$(MODULE_NAME).xml $(DESTDIR)/usr/share/gapi-2.0/$(MODULE_NAME)
81   -
82   - @$(MKDIR) $(DESTDIR)/usr/lib/mono/$(MODULE_NAME)-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
83   - @$(INSTALL_PROGRAM) $(BINRLS)/$(LIBNAME) $(DESTDIR)/usr/lib/mono/$(MODULE_NAME)-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
84   -
85   - @$(MKDIR) $(DESTDIR)/$(libdir)/pkgconfig
86   - @$(INSTALL_DATA) $(MODULE_NAME).pc $(DESTDIR)/$(libdir)/pkgconfig
87   -
88   -Debug: \
89   - $(BINDBG)/$(LIBNAME)
90   -
91   -$(BINRLS)/$(MODULE_NAME).key:
92   -
93   - @$(SN) -k $@
94   -
95   -$(BINDBG)/$(LIBNAME): \
96   - $(SOURCES)
97   -
98   - @$(MKDIR) `dirname $@`
99   - @$(MCS) -debug -target:library -out:$@ $<
100   -
101   -$(BINRLS)/$(LIBNAME): \
102   - $(SOURCES) \
103   - $(BINRLS)/$(MODULE_NAME).key
104   -
105   - @$(MKDIR) `dirname $@`
106   - @$(MCS) -doc:$(BINRLS)/$(MODULE_NAME).xml -keyfile:$(BINRLS)/$(MODULE_NAME).key -target:library -out:$@ $(SOURCES)
107   -
108   -
src/pw3270-sharp/pw3270-sharp.cs
... ... @@ -1,618 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como tn3270-sharp.cs 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   - * Referências:
29   - *
30   - * https://msdn.microsoft.com/en-us/library/5ast78ax.aspx
31   - *
32   - */
33   -
34   -using System;
35   -using System.Text;
36   -using System.Runtime.InteropServices;
37   -
38   -namespace pw3270 {
39   -
40   - /// <summary>
41   - /// Session with 3270 HOST.
42   - /// </summary>
43   - public class Session {
44   -
45   - /// <summary>
46   - /// lib3270 session handle
47   - /// </summary>
48   - private IntPtr hSession;
49   -
50   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
51   - extern static IntPtr tn3270_create_session(string name);
52   -
53   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
54   - extern static int tn3270_destroy_session(IntPtr session);
55   -
56   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
57   - extern static int tn3270_get_version(IntPtr session, StringBuilder str, int strlen);
58   -
59   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
60   - extern static int tn3270_get_revision(IntPtr session, StringBuilder str, int strlen);
61   -
62   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
63   - extern static int tn3270_connect(IntPtr Session, string host, int wait);
64   -
65   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
66   - extern static int tn3270_is_connected(IntPtr Session);
67   -
68   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
69   - extern static int tn3270_is_ready(IntPtr Session);
70   -
71   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
72   - extern static int tn3270_disconnect(IntPtr Session);
73   -
74   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
75   - extern static int tn3270_wait_for_ready(IntPtr Session, int seconds);
76   -
77   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
78   - extern static int tn3270_wait(IntPtr Session, int seconds);
79   -
80   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
81   - extern static int tn3270_get_cstate(IntPtr Session);
82   -
83   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
84   - extern static int tn3270_get_program_message(IntPtr Session);
85   -
86   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
87   - extern static int tn3270_get_secure(IntPtr Session);
88   -
89   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
90   - extern static int tn3270_get_contents(IntPtr Session, StringBuilder str, int strlen);
91   -
92   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
93   - extern static int tn3270_get_string(IntPtr Session, int addr, StringBuilder str, int strlen);
94   -
95   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
96   - extern static int tn3270_get_string_at(IntPtr Session, int row, int col, StringBuilder str, int strlen);
97   -
98   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
99   - extern static int tn3270_set_string_at(IntPtr Session, int row, int col, string str);
100   -
101   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
102   - extern static int tn3270_wait_for_string_at(IntPtr Session, int row, int col, string key, int timeout);
103   -
104   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
105   - extern static int tn3270_cmp_string_at(IntPtr Session, int row, int col, string str);
106   -
107   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
108   - extern static int tn3270_set_unlock_delay(IntPtr Session, int ms);
109   -
110   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
111   - extern static int tn3270_set_cursor_position(IntPtr Session, int row, int col);
112   -
113   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
114   - extern static int tn3270_set_cursor_addr(IntPtr Session, int addr);
115   -
116   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
117   - extern static int tn3270_get_cursor_addr(IntPtr Session);
118   -
119   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
120   - extern static int tn3270_enter(IntPtr Session);
121   -
122   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
123   - extern static int tn3270_pfkey(IntPtr Session, int key);
124   -
125   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
126   - extern static int tn3270_pakey(IntPtr Session, int key);
127   -
128   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
129   - extern static int tn3270_get_width(IntPtr Session);
130   -
131   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
132   - extern static int tn3270_get_height(IntPtr Session);
133   -
134   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
135   - extern static int tn3270_get_length(IntPtr Session);
136   -
137   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
138   - extern static int tn3270_set_charset(IntPtr Session, string str);
139   -
140   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
141   - extern static int tn3270_set_url(IntPtr Session, string str);
142   -
143   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
144   - extern static int tn3270_get_url(IntPtr Session, StringBuilder str, int strlen);
145   -
146   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
147   - extern static int tn3270_set_error_message(IntPtr Session, string str);
148   -
149   - [DllImport ("lib3270-mono",CallingConvention=CallingConvention.Cdecl)]
150   - extern static int tn3270_get_error_message(IntPtr Session, StringBuilder str, int strlen);
151   -
152   - /// <summary>
153   - /// Create a new session with lib3270/pw3270
154   - /// </summary>
155   - ///
156   - /// <param name="name">Session name or empty string for a hidden session</param>
157   - ///
158   - public Session(string name) {
159   - hSession = tn3270_create_session(name);
160   - tn3270_set_charset(hSession,"UTF-8");
161   - }
162   -
163   - /// <summary>
164   - /// Disconnect from host, destroy session.
165   - /// </summary>
166   - ///
167   - ~Session() {
168   - tn3270_destroy_session(hSession);
169   - }
170   -
171   - /// <summary>
172   - /// Get lib3270/pw3270 Version identifier
173   - /// </summary>
174   - ///
175   - /// <returns>
176   - /// The version of the active instance.
177   - /// </returns>
178   - ///
179   - public string GetVersion() {
180   - StringBuilder str = new StringBuilder(10);
181   - tn3270_get_version(hSession, str, 10);
182   - return str.ToString();
183   - }
184   -
185   - /// <summary>
186   - /// Lib3270 version.
187   - /// </summary>
188   - ///
189   - /// <returns>
190   - /// Lib3270 version string
191   - /// </returns>
192   - ///
193   - public string Version {
194   - get {
195   - return GetVersion();
196   - }
197   - }
198   -
199   - /// <summary>
200   - /// Get lib3270/pw3270 Revision number
201   - /// </summary>
202   - ///
203   - /// <returns>
204   - /// The revision of the active instance.
205   - /// </returns>
206   - ///
207   - public string GetRevision() {
208   - StringBuilder str = new StringBuilder(10);
209   - tn3270_get_revision(hSession, str, 10);
210   - return str.ToString();
211   - }
212   -
213   - public string Revision {
214   - get {
215   - return GetRevision();
216   - }
217   - }
218   -
219   - /// <summary>
220   - /// Connect to 3270 host.
221   - /// </summary>
222   - ///
223   - /// <param name="host">URL of the target host (tn3270://hostname:port)</param>
224   - /// <param name="wait">How many seconds should the call wait for the connection becomes ready</param>
225   - ///
226   - /// <returns>
227   - /// </returns>
228   - ///
229   - public int Connect(string host, int wait) {
230   - return tn3270_connect(hSession, host, wait);
231   - }
232   -
233   - /// <summary>
234   - /// Get connection state
235   - /// </summary>
236   - ///
237   - /// <returns>
238   - /// true if the session is connected to a remote host.
239   - /// </returns>
240   - ///
241   - public bool IsConnected() {
242   - return tn3270_is_connected(hSession) != 0;
243   - }
244   -
245   - public bool Connected {
246   - get {
247   - return tn3270_is_connected(hSession) != 0;
248   - }
249   - }
250   -
251   - public bool IsReady() {
252   - return tn3270_is_ready(hSession) != 0;
253   - }
254   -
255   - public bool Ready {
256   - get {
257   - return tn3270_is_ready(hSession) != 0;
258   - }
259   - }
260   -
261   - /// <summary>
262   - /// Disconnect from 3270 host.
263   - /// </summary>
264   - ///
265   - public int Disconnect() {
266   - return tn3270_disconnect(hSession);
267   - }
268   -
269   - /// <summary>
270   - /// Wait for network activity
271   - /// </summary>
272   - ///
273   - /// <param name="seconds">Seconds to wait</param>
274   - ///
275   - /// <returns>
276   - ///
277   - /// </returns>
278   - ///
279   - public int WaitForReady(int seconds) {
280   - return tn3270_wait_for_ready(hSession, seconds);
281   - }
282   -
283   - /// <summary>
284   - /// "Sleep" keeping the network activity.
285   - /// </summary>
286   - ///
287   - /// <param name="seconds">Number of seconds to wait</param>
288   - ///
289   - /// <returns>
290   - ///
291   - /// </returns>
292   - ///
293   - public int Wait(int seconds) {
294   - return tn3270_wait(hSession, seconds);
295   - }
296   -
297   - /// <summary>
298   - /// Get contents
299   - /// </summary>
300   - ///
301   - /// <returns>
302   - /// Contents from terminal screen.
303   - /// </returns>
304   - ///
305   - public override string ToString() {
306   - int strlen = (tn3270_get_width(hSession)+1) * (tn3270_get_height(hSession)+1);
307   - StringBuilder str = new StringBuilder(strlen+1);
308   - strlen = tn3270_get_contents(hSession, str, strlen);
309   - return str.ToString();
310   - }
311   -
312   -
313   - /// <summary>
314   - /// Get contents at address
315   - /// </summary>
316   - ///
317   - /// <param name="addr">Address of text in the screen buffer</param>
318   - /// <param name="strlen">Number of characters to get</param>
319   - ///
320   - /// <returns>
321   - /// Contents from terminal screen.
322   - /// </returns>
323   - ///
324   - public string GetString(int addr, int strlen) {
325   - StringBuilder str = new StringBuilder(strlen+1);
326   - tn3270_get_string(hSession, addr, str, strlen);
327   - return str.ToString();
328   - }
329   -
330   - /// <summary>
331   - /// Get contents at position.
332   - /// </summary>
333   - ///
334   - /// <param name="row">Start row</param>
335   - /// <param name="col">Start col</param>
336   - /// <param name="strlen">Number of characters to get</param>
337   - ///
338   - /// <returns>
339   - /// Contents from terminal screen.
340   - /// </returns>
341   - ///
342   - public string GetStringAt(int row, int col, int strlen) {
343   - StringBuilder str = new StringBuilder(strlen+1);
344   - tn3270_get_string_at(hSession, row, col, str, strlen);
345   - return str.ToString();
346   - }
347   -
348   - /// <summary>
349   - /// Set contents at position
350   - /// </summary>
351   - ///
352   - /// <param name="row">Start row</param>
353   - /// <param name="col">Start col</param>
354   - /// <param name="str">Text to set</param>
355   - ///
356   - public void SetStringAt(int row, int col, string str) {
357   - tn3270_set_string_at(hSession, row, col, str);
358   - }
359   -
360   - /// <summary>
361   - /// Wait for text at position.
362   - /// </summary>
363   - ///
364   - /// <param name="row">Start row</param>
365   - /// <param name="col">Start col</param>
366   - /// <param name="str">Text to wait</param>
367   - /// <param name="timeout">Seconds to wait</param>
368   - ///
369   - /// <returns>
370   - ///
371   - /// </returns>
372   - ///
373   - public int WaitForStringAt(int row, int col, string str, int timeout) {
374   - return tn3270_wait_for_string_at(hSession, row, col, str, timeout);
375   - }
376   -
377   - /// <summary>
378   - /// Compare contents at position
379   - /// </summary>
380   - ///
381   - /// <param name="row">Start row</param>
382   - /// <param name="col">Start col</param>
383   - /// <param name="str">Text to compare</param>
384   - ///
385   - /// <returns>
386   - /// Result (0 = The strings are the same).
387   - /// </returns>
388   - ///
389   - public int CmpStringAt(int row, int col, string str) {
390   - return tn3270_cmp_string_at(hSession, row, col, str);
391   - }
392   -
393   - /// <summary>
394   - /// Set cursor position.
395   - /// </summary>
396   - ///
397   - /// <param name="row">New cursor row</param>
398   - /// <param name="col">New cursor column</param>
399   - ///
400   - public void SetCursorPosition(int row, int col) {
401   - tn3270_set_cursor_position(hSession, row, col);
402   - }
403   -
404   - /// <summary>
405   - /// Set cursor position based on address.
406   - /// </summary>
407   - ///
408   - /// <param name="addr">Address of the new cursor position</param>
409   - ///
410   - public void SetCursorPosition(int addr) {
411   - tn3270_set_cursor_addr(hSession, addr);
412   - }
413   -
414   - /// <summary>
415   - /// Get cursor address
416   - /// </summary>
417   - ///
418   - public int GetCursorPosition() {
419   - return tn3270_get_cursor_addr(hSession);
420   - }
421   -
422   - /// <summary>
423   - /// Cursor address
424   - /// </summary>
425   - ///
426   - public int CursorPosition {
427   - set {
428   - tn3270_set_cursor_addr(hSession, value);
429   - }
430   - get {
431   - return tn3270_get_cursor_addr(hSession);
432   - }
433   - }
434   -
435   - /// <summary>
436   - /// Set the "screen ready" delay
437   - /// </summary>
438   - ///
439   - public int SetUnlockDelay(int ms) {
440   - return tn3270_set_unlock_delay(hSession, ms);
441   - }
442   -
443   - /// <summary>
444   - /// Set the "screen ready" delay
445   - /// </summary>
446   - ///
447   - public int UnlockDelay {
448   - set {
449   - tn3270_set_unlock_delay(hSession, value);
450   - }
451   - }
452   -
453   -
454   - /// <summary>
455   - /// Send "Enter" key
456   - /// </summary>
457   - ///
458   - /// <returns>
459   - ///
460   - /// </returns>
461   - ///
462   - public int Enter() {
463   - return tn3270_enter(hSession);
464   - }
465   -
466   - /// <summary>
467   - /// Send "PF" key
468   - /// </summary>
469   - ///
470   - /// <param name="key">Key identifier 1=PF1, 2=PF2, ...</param>
471   - ///
472   - /// <returns>
473   - ///
474   - /// </returns>
475   - ///
476   - public int PfKey(int key) {
477   - return tn3270_pfkey(hSession, key);
478   - }
479   -
480   - /// <summary>
481   - /// Send "PA" key
482   - /// </summary>
483   - ///
484   - /// <param name="key">Key identifier 1=PA1, 2=PA2, ...</param>
485   - ///
486   - /// <returns>
487   - ///
488   - /// </returns>
489   - ///
490   - public int PaKey(int key) {
491   - return tn3270_pakey(hSession, key);
492   - }
493   -
494   - /// <summary>
495   - /// Get screen width
496   - /// </summary>
497   - ///
498   - /// <returns>
499   - /// Screen width in characters (negative on error)
500   - /// </returns>
501   - ///
502   - public int GetWidth() {
503   - return tn3270_get_width(hSession);
504   - }
505   -
506   - /// <summary>
507   - /// Screen width in characters
508   - /// </summary>
509   - ///
510   - /// <returns>
511   - /// Screen width in characters (negative on error)
512   - /// </returns>
513   - ///
514   - public int Width {
515   - get {
516   - return tn3270_get_width(hSession);
517   - }
518   - }
519   -
520   - /// <summary>
521   - /// Get screen height
522   - /// </summary>
523   - ///
524   - /// <returns>
525   - /// Screen width in characters (negative on error)
526   - /// </returns>
527   - ///
528   - public int GetHeight() {
529   - return tn3270_get_height(hSession);
530   - }
531   -
532   - /// <summary>
533   - /// Screen height in characters
534   - /// </summary>
535   - ///
536   - /// <returns>
537   - /// Screen height in characters (negative on error)
538   - /// </returns>
539   - ///
540   - public int Height {
541   - get {
542   - return tn3270_get_height(hSession);
543   - }
544   - }
545   -
546   - /// <summary>
547   - /// Get length of terminal buffer (width * height)
548   - /// </summary>
549   - ///
550   - /// <returns>
551   - /// Terminal length in characters (negative on error)
552   - /// </returns>
553   - ///
554   - public int GetLength() {
555   - return tn3270_get_length(hSession);
556   - }
557   -
558   - /// <summary>
559   - /// Length of terminal buffer (width * height)
560   - /// </summary>
561   - ///
562   - /// <returns>
563   - /// Terminal length in characters (negative on error)
564   - /// </returns>
565   - ///
566   - public int Length {
567   - get {
568   - return tn3270_get_length(hSession);
569   - }
570   - }
571   -
572   - public string CharSet {
573   - set {
574   - tn3270_set_charset(hSession,value);
575   - }
576   - }
577   -
578   - /// <summary>
579   - /// 3270 host URL
580   - /// </summary>
581   - ///
582   - /// <returns>
583   - /// 3270 host URL
584   - /// </returns>
585   - ///
586   - public string Url {
587   - set {
588   - tn3270_set_url(hSession,value);
589   - }
590   - get {
591   - StringBuilder str = new StringBuilder(1025);
592   - tn3270_get_url(hSession, str, 1024);
593   - return str.ToString();
594   - }
595   - }
596   -
597   - /// <summary>
598   - /// Last lib3270 error message
599   - /// </summary>
600   - ///
601   - /// <returns>
602   - /// Last lib3270 error message
603   - /// </returns>
604   - ///
605   - public string Error {
606   - set {
607   - tn3270_set_error_message(hSession,value);
608   - }
609   - get {
610   - StringBuilder str = new StringBuilder(1025);
611   - tn3270_get_error_message(hSession, str, 1024);
612   - return str.ToString();
613   - }
614   - }
615   -
616   - }
617   -
618   -}
src/pw3270-sharp/pw3270-sharp.pc.in
... ... @@ -1,11 +0,0 @@
1   -prefix=${pcfiledir}/../..
2   -exec_prefix=${prefix}
3   -libdir=${exec_prefix}/lib
4   -gapidir=${prefix}/share/pw3270-sharp-1.0
5   -
6   -
7   -Name: pw3270-sharp
8   -Description: Mono Bindings for pw3270
9   -Version: @PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@
10   -Cflags: -I:${gapidir}/pw3270-sharp.xml
11   -Libs: -r:${libdir}/mono/pw3270-sharp-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@/pw3270-sharp.dll
src/testprograms/ipc.cs 0 → 100644
... ... @@ -0,0 +1,63 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como sample.cs 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 +using pw3270;
  31 +
  32 +class ipc {
  33 +
  34 + static void Main(string[] args) {
  35 +
  36 + pw3270.Session host = new pw3270.Session("pw3270:A");
  37 +
  38 + System.Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision);
  39 + System.Console.WriteLine("Screen size is " + host.Width + "x" + host.Height + " (" + host.Length + ")");
  40 +
  41 + // host.CharSet = "ISO-8859-1";
  42 +
  43 + if(host.Connected) {
  44 +
  45 + System.Console.WriteLine("Connected to " + host.Url);
  46 + System.Console.WriteLine("Wait for ready returned " + host.WaitForReady(5));
  47 +
  48 + // System.Console.WriteLine(host.GetStringAt(1,1,1920));
  49 + System.Console.WriteLine(host.GetString(1,1920));
  50 + // System.Console.WriteLine(host);
  51 +
  52 + } else {
  53 +
  54 + System.Console.WriteLine("Host is disconnected");
  55 +
  56 + }
  57 +
  58 + System.Console.WriteLine("Error: " + host.Error);
  59 +
  60 +
  61 + }
  62 +
  63 +}
... ...
src/testprograms/sample.cs 0 → 100644
... ... @@ -0,0 +1,60 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como sample.cs 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 +using pw3270;
  31 +
  32 +class sample {
  33 +
  34 + static void Main(string[] args) {
  35 +
  36 + pw3270.Session host = new pw3270.Session("");
  37 +
  38 + System.Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision);
  39 + System.Console.WriteLine("Screen size is " + host.Width + "x" + host.Height + " (" + host.Length + ")");
  40 +
  41 + // host.Connect("tn3270://zos.efglobe.com:telnet",10);
  42 + host.Connect("tn3270://zos.efglobe.com:telnet",10);
  43 +
  44 + if(host.Connected) {
  45 +
  46 + System.Console.WriteLine("Connected to " + host.Url);
  47 +
  48 + System.Console.WriteLine("Wait for ready returned " + host.WaitForReady(5));
  49 +
  50 + System.Console.WriteLine(host);
  51 +
  52 + host.Disconnect();
  53 + }
  54 +
  55 + System.Console.WriteLine("Error: " + host.Error);
  56 +
  57 +
  58 + }
  59 +
  60 +}
... ...
src/testprograms/simple.cs 0 → 100644
... ... @@ -0,0 +1,64 @@
  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., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como simple.cs 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 +using System;
  31 +using System.Collections.Generic;
  32 +using System.Linq;
  33 +using System.Text;
  34 +using System.Runtime.InteropServices;
  35 +
  36 +class test {
  37 +
  38 + [DllImport ("lib3270-mono")]
  39 + extern static IntPtr tn3270_create_session(string name);
  40 +
  41 + [DllImport ("lib3270-mono")]
  42 + extern static void tn3270_destroy_session(IntPtr session);
  43 +
  44 + [DllImport ("lib3270-mono")]
  45 + extern static void tn3270_get_version(IntPtr session, StringBuilder str, int strlen);
  46 +
  47 + [DllImport ("lib3270-mono")]
  48 + extern static void tn3270_get_revision(IntPtr session, StringBuilder str, int strlen);
  49 +
  50 + static void Main(string[] args) {
  51 +
  52 + IntPtr handle = tn3270_create_session("");
  53 +
  54 + StringBuilder str = new StringBuilder(100);
  55 + tn3270_get_version(handle, str, 100);
  56 + System.Console.WriteLine(str);
  57 +
  58 + tn3270_get_revision(handle, str, 100);
  59 + System.Console.WriteLine(str);
  60 +
  61 + tn3270_destroy_session(handle);
  62 +
  63 + }
  64 +}
... ...
src/testprograms/vbclass.vb 0 → 100644
... ... @@ -0,0 +1,201 @@
  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., 51 Franklin
  19 +' St, Fifth Floor, Boston, MA 02110-1301 USA
  20 +'
  21 +' Este programa está nomeado como vbclass.vb 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 +Imports System
  30 +Imports System.Text
  31 +Imports System.Runtime.InteropServices
  32 +
  33 +Public Class pw3270
  34 +
  35 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  36 + Private Shared Function tn3270_create_session(ByVal Name As String) As IntPtr
  37 + End Function
  38 +
  39 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  40 + Private Shared Function tn3270_destroy_session(ByVal hSession As IntPtr) as Long
  41 + End Function
  42 +
  43 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  44 + Private Shared Function tn3270_get_version(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
  45 + End Function
  46 +
  47 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  48 + Private Shared Function tn3270_get_revision(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
  49 + End Function
  50 +
  51 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  52 + Private Shared Function tn3270_connect(ByVal hSession As IntPtr, ByVal buffer As String, ByVal seconds as Integer) as Integer
  53 + End Function
  54 +
  55 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  56 + Private Shared Function tn3270_is_connected(ByVal hSession As IntPtr) as Integer
  57 + End Function
  58 +
  59 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  60 + Private Shared Function tn3270_disconnect(ByVal hSession As IntPtr) as Integer
  61 + End Function
  62 +
  63 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  64 + Private Shared Function tn3270_wait_for_ready(ByVal hSession As IntPtr, ByVal seconds as Integer) as Integer
  65 + End Function
  66 +
  67 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  68 + Private Shared Function tn3270_wait(ByVal hSession As IntPtr, ByVal seconds as Integer) as Integer
  69 + End Function
  70 +
  71 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  72 + Private Shared Function tn3270_get_cstate(ByVal hSession As IntPtr) as Integer
  73 + End Function
  74 +
  75 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  76 + Private Shared Function tn3270_get_program_message(ByVal hSession As IntPtr) as Integer
  77 + End Function
  78 +
  79 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  80 + Private Shared Function tn3270_get_secure(ByVal hSession As IntPtr) as Integer
  81 + End Function
  82 +
  83 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  84 + Private Shared Function tn3270_get_string(ByVal hSession As IntPtr, ByVal addr as Integer, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
  85 + End Function
  86 +
  87 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  88 + Private Shared Function tn3270_get_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
  89 + End Function
  90 +
  91 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  92 + Private Shared Function tn3270_set_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As String) as Integer
  93 + End Function
  94 +
  95 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  96 + Private Shared Function tn3270_wait_for_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal key As String, ByVal timeout as Integer) as Integer
  97 + End Function
  98 +
  99 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  100 + Private Shared Function tn3270_cmp_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As String) as Integer
  101 + End Function
  102 +
  103 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  104 + Private Shared Function tn3270_set_unlock_delay(ByVal hSession As IntPtr, ByVal ms as Integer) as Integer
  105 + End Function
  106 +
  107 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  108 + Private Shared Function tn3270_set_cursor_position(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer) as Integer
  109 + End Function
  110 +
  111 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  112 + Private Shared Function tn3270_set_cursor_addr(ByVal hSession As IntPtr, ByVal addr as Integer) as Integer
  113 + End Function
  114 +
  115 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  116 + Private Shared Function tn3270_enter(ByVal hSession As IntPtr) as Integer
  117 + End Function
  118 +
  119 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  120 + Private Shared Function tn3270_pfkey(ByVal hSession As IntPtr, ByVal key as Integer) as Integer
  121 + End Function
  122 +
  123 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  124 + Private Shared Function tn3270_pakey(ByVal hSession As IntPtr, ByVal key as Integer) as Integer
  125 + End Function
  126 +
  127 + Private Shared hSession As IntPtr
  128 +
  129 + Public Sub New(ByVal name as String)
  130 + hSession = tn3270_create_session(name)
  131 + End Sub
  132 +
  133 + Public Sub Connect(ByRef url as String, ByVal seconds as Integer)
  134 + tn3270_connect(hSession, url, seconds)
  135 + End Sub
  136 +
  137 + Public Sub Disconnect()
  138 + tn3270_disconnect(hSession)
  139 + End Sub
  140 +
  141 + Public Sub Finalize()
  142 + tn3270_destroy_session(hSession)
  143 + End Sub
  144 +
  145 + Public ReadOnly Property Version As String
  146 + Get
  147 + dim buffer As New StringBuilder(1024)
  148 + tn3270_get_version(hSession, buffer, 1024)
  149 + return buffer.toString
  150 + End Get
  151 + End Property
  152 +
  153 + Public ReadOnly Property Revision As String
  154 + Get
  155 + dim buffer As New StringBuilder(1024)
  156 + tn3270_get_revision(hSession, buffer, 1024)
  157 + return buffer.toString
  158 + End Get
  159 + End Property
  160 +
  161 + Public ReadOnly Property Connected As Boolean
  162 + Get
  163 + return tn3270_is_connected(hSession)
  164 + End Get
  165 + End Property
  166 +
  167 + Public Function GetStringAt(ByVal row as Integer, ByVal col as Integer, ByVal strlen as Integer)
  168 + dim buffer As New StringBuilder(strlen)
  169 + tn3270_get_string_at(hSession, row, col, buffer, strlen)
  170 + return buffer.toString
  171 + End Function
  172 +
  173 + Public Sub WaitForReady(ByVal seconds as Integer)
  174 + tn3270_wait_for_ready(hSession, seconds)
  175 + End Sub
  176 +
  177 +
  178 +End Class
  179 +
  180 +
  181 +Public Module modmain
  182 +
  183 + Sub Main()
  184 +
  185 + dim host as new pw3270("")
  186 +
  187 + Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision)
  188 +
  189 + host.Connect("tn3270://zos.efglobe.com:telnet",10)
  190 +
  191 + if host.Connected Then
  192 +
  193 + Console.WriteLine(host.GetStringAt(14,19,38))
  194 +
  195 + host.Disconnect()
  196 + End If
  197 +
  198 + End Sub
  199 +
  200 +
  201 +End Module
... ...
src/testprograms/vbsample.vb 0 → 100644
... ... @@ -0,0 +1,56 @@
  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., 51 Franklin
  19 +' St, Fifth Floor, Boston, MA 02110-1301 USA
  20 +'
  21 +' Este programa está nomeado como vbsample.vb 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 +Imports System
  30 +
  31 +' This module houses the application's entry point.
  32 +Public Module modmain
  33 +
  34 + ' Application's entry point.
  35 + Sub Main()
  36 +
  37 + dim host as new pw3270.Session("")
  38 +
  39 + Console.WriteLine("Using pw3270 version " + host.getVersion() + " revision " + host.GetRevision())
  40 + Console.WriteLine("Screen size is " + host.GetWidth() + "x" + host.GetHeigth())
  41 +
  42 + host.Connect("tn3270://zos.efglobe.com:telnet",10)
  43 +
  44 + if host.IsConnected() then
  45 +
  46 + Console.WriteLine("Connected to host")
  47 +
  48 + Console.WriteLine(host.GetStringAt(14,19,38))
  49 +
  50 + host.Disconnect()
  51 +
  52 + End If
  53 +
  54 + End Sub
  55 +
  56 +End Module
... ...
src/testprograms/vbtest.vb 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +
  2 +Imports System
  3 +Imports System.Text
  4 +Imports System.Runtime.InteropServices
  5 +
  6 +' This module houses the application's entry point.
  7 +Public Module modmain
  8 +
  9 +
  10 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  11 + Private Shared Function tn3270_create_session(ByVal Name As String) As IntPtr
  12 + End Function
  13 +
  14 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  15 + Private Shared Function tn3270_destroy_session(ByVal hSession As IntPtr) as Long
  16 + End Function
  17 +
  18 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  19 + Private Shared Function tn3270_get_version(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Long
  20 + End Function
  21 +
  22 + <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
  23 + Private Shared Function tn3270_get_revision(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Long
  24 + End Function
  25 +
  26 + ' Application's entry point.
  27 + Sub Main()
  28 +
  29 + dim host as IntPtr = tn3270_create_session("")
  30 + dim buffer As New StringBuilder(1024)
  31 +
  32 + ' Get library version
  33 + tn3270_get_version(host, buffer, 1024)
  34 + dim vrs as String = buffer.toString
  35 +
  36 + ' Get Library revision
  37 + tn3270_get_revision(host, buffer, 1024)
  38 + dim rev as String = buffer.toString
  39 +
  40 + ' Write text to the console.
  41 + Console.WriteLine ("Using pw3270 version " + vrs + " revision " + rev)
  42 +
  43 +
  44 +
  45 + tn3270_destroy_session(host)
  46 +
  47 + End Sub
  48 +
  49 +End Module
... ...
testprograms/ipc.cs
... ... @@ -1,63 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como sample.cs 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   -using pw3270;
31   -
32   -class ipc {
33   -
34   - static void Main(string[] args) {
35   -
36   - pw3270.Session host = new pw3270.Session("pw3270:A");
37   -
38   - System.Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision);
39   - System.Console.WriteLine("Screen size is " + host.Width + "x" + host.Height + " (" + host.Length + ")");
40   -
41   - // host.CharSet = "ISO-8859-1";
42   -
43   - if(host.Connected) {
44   -
45   - System.Console.WriteLine("Connected to " + host.Url);
46   - System.Console.WriteLine("Wait for ready returned " + host.WaitForReady(5));
47   -
48   - // System.Console.WriteLine(host.GetStringAt(1,1,1920));
49   - System.Console.WriteLine(host.GetString(1,1920));
50   - // System.Console.WriteLine(host);
51   -
52   - } else {
53   -
54   - System.Console.WriteLine("Host is disconnected");
55   -
56   - }
57   -
58   - System.Console.WriteLine("Error: " + host.Error);
59   -
60   -
61   - }
62   -
63   -}
testprograms/sample.cs
... ... @@ -1,60 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como sample.cs 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   -using pw3270;
31   -
32   -class sample {
33   -
34   - static void Main(string[] args) {
35   -
36   - pw3270.Session host = new pw3270.Session("");
37   -
38   - System.Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision);
39   - System.Console.WriteLine("Screen size is " + host.Width + "x" + host.Height + " (" + host.Length + ")");
40   -
41   - // host.Connect("tn3270://zos.efglobe.com:telnet",10);
42   - host.Connect("tn3270://zos.efglobe.com:telnet",10);
43   -
44   - if(host.Connected) {
45   -
46   - System.Console.WriteLine("Connected to " + host.Url);
47   -
48   - System.Console.WriteLine("Wait for ready returned " + host.WaitForReady(5));
49   -
50   - System.Console.WriteLine(host);
51   -
52   - host.Disconnect();
53   - }
54   -
55   - System.Console.WriteLine("Error: " + host.Error);
56   -
57   -
58   - }
59   -
60   -}
testprograms/simple.cs
... ... @@ -1,64 +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., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como simple.cs 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   -using System;
31   -using System.Collections.Generic;
32   -using System.Linq;
33   -using System.Text;
34   -using System.Runtime.InteropServices;
35   -
36   -class test {
37   -
38   - [DllImport ("lib3270-mono")]
39   - extern static IntPtr tn3270_create_session(string name);
40   -
41   - [DllImport ("lib3270-mono")]
42   - extern static void tn3270_destroy_session(IntPtr session);
43   -
44   - [DllImport ("lib3270-mono")]
45   - extern static void tn3270_get_version(IntPtr session, StringBuilder str, int strlen);
46   -
47   - [DllImport ("lib3270-mono")]
48   - extern static void tn3270_get_revision(IntPtr session, StringBuilder str, int strlen);
49   -
50   - static void Main(string[] args) {
51   -
52   - IntPtr handle = tn3270_create_session("");
53   -
54   - StringBuilder str = new StringBuilder(100);
55   - tn3270_get_version(handle, str, 100);
56   - System.Console.WriteLine(str);
57   -
58   - tn3270_get_revision(handle, str, 100);
59   - System.Console.WriteLine(str);
60   -
61   - tn3270_destroy_session(handle);
62   -
63   - }
64   -}
testprograms/vbclass.vb
... ... @@ -1,201 +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., 51 Franklin
19   -' St, Fifth Floor, Boston, MA 02110-1301 USA
20   -'
21   -' Este programa está nomeado como vbclass.vb 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   -Imports System
30   -Imports System.Text
31   -Imports System.Runtime.InteropServices
32   -
33   -Public Class pw3270
34   -
35   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
36   - Private Shared Function tn3270_create_session(ByVal Name As String) As IntPtr
37   - End Function
38   -
39   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
40   - Private Shared Function tn3270_destroy_session(ByVal hSession As IntPtr) as Long
41   - End Function
42   -
43   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
44   - Private Shared Function tn3270_get_version(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
45   - End Function
46   -
47   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
48   - Private Shared Function tn3270_get_revision(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
49   - End Function
50   -
51   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
52   - Private Shared Function tn3270_connect(ByVal hSession As IntPtr, ByVal buffer As String, ByVal seconds as Integer) as Integer
53   - End Function
54   -
55   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
56   - Private Shared Function tn3270_is_connected(ByVal hSession As IntPtr) as Integer
57   - End Function
58   -
59   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
60   - Private Shared Function tn3270_disconnect(ByVal hSession As IntPtr) as Integer
61   - End Function
62   -
63   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
64   - Private Shared Function tn3270_wait_for_ready(ByVal hSession As IntPtr, ByVal seconds as Integer) as Integer
65   - End Function
66   -
67   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
68   - Private Shared Function tn3270_wait(ByVal hSession As IntPtr, ByVal seconds as Integer) as Integer
69   - End Function
70   -
71   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
72   - Private Shared Function tn3270_get_cstate(ByVal hSession As IntPtr) as Integer
73   - End Function
74   -
75   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
76   - Private Shared Function tn3270_get_program_message(ByVal hSession As IntPtr) as Integer
77   - End Function
78   -
79   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
80   - Private Shared Function tn3270_get_secure(ByVal hSession As IntPtr) as Integer
81   - End Function
82   -
83   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
84   - Private Shared Function tn3270_get_string(ByVal hSession As IntPtr, ByVal addr as Integer, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
85   - End Function
86   -
87   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
88   - Private Shared Function tn3270_get_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Integer
89   - End Function
90   -
91   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
92   - Private Shared Function tn3270_set_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As String) as Integer
93   - End Function
94   -
95   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
96   - Private Shared Function tn3270_wait_for_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal key As String, ByVal timeout as Integer) as Integer
97   - End Function
98   -
99   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
100   - Private Shared Function tn3270_cmp_string_at(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer, ByVal buffer As String) as Integer
101   - End Function
102   -
103   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
104   - Private Shared Function tn3270_set_unlock_delay(ByVal hSession As IntPtr, ByVal ms as Integer) as Integer
105   - End Function
106   -
107   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
108   - Private Shared Function tn3270_set_cursor_position(ByVal hSession As IntPtr, ByVal row as Integer, ByVal col as Integer) as Integer
109   - End Function
110   -
111   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
112   - Private Shared Function tn3270_set_cursor_addr(ByVal hSession As IntPtr, ByVal addr as Integer) as Integer
113   - End Function
114   -
115   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
116   - Private Shared Function tn3270_enter(ByVal hSession As IntPtr) as Integer
117   - End Function
118   -
119   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
120   - Private Shared Function tn3270_pfkey(ByVal hSession As IntPtr, ByVal key as Integer) as Integer
121   - End Function
122   -
123   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
124   - Private Shared Function tn3270_pakey(ByVal hSession As IntPtr, ByVal key as Integer) as Integer
125   - End Function
126   -
127   - Private Shared hSession As IntPtr
128   -
129   - Public Sub New(ByVal name as String)
130   - hSession = tn3270_create_session(name)
131   - End Sub
132   -
133   - Public Sub Connect(ByRef url as String, ByVal seconds as Integer)
134   - tn3270_connect(hSession, url, seconds)
135   - End Sub
136   -
137   - Public Sub Disconnect()
138   - tn3270_disconnect(hSession)
139   - End Sub
140   -
141   - Public Sub Finalize()
142   - tn3270_destroy_session(hSession)
143   - End Sub
144   -
145   - Public ReadOnly Property Version As String
146   - Get
147   - dim buffer As New StringBuilder(1024)
148   - tn3270_get_version(hSession, buffer, 1024)
149   - return buffer.toString
150   - End Get
151   - End Property
152   -
153   - Public ReadOnly Property Revision As String
154   - Get
155   - dim buffer As New StringBuilder(1024)
156   - tn3270_get_revision(hSession, buffer, 1024)
157   - return buffer.toString
158   - End Get
159   - End Property
160   -
161   - Public ReadOnly Property Connected As Boolean
162   - Get
163   - return tn3270_is_connected(hSession)
164   - End Get
165   - End Property
166   -
167   - Public Function GetStringAt(ByVal row as Integer, ByVal col as Integer, ByVal strlen as Integer)
168   - dim buffer As New StringBuilder(strlen)
169   - tn3270_get_string_at(hSession, row, col, buffer, strlen)
170   - return buffer.toString
171   - End Function
172   -
173   - Public Sub WaitForReady(ByVal seconds as Integer)
174   - tn3270_wait_for_ready(hSession, seconds)
175   - End Sub
176   -
177   -
178   -End Class
179   -
180   -
181   -Public Module modmain
182   -
183   - Sub Main()
184   -
185   - dim host as new pw3270("")
186   -
187   - Console.WriteLine("Using pw3270 version " + host.Version + " revision " + host.Revision)
188   -
189   - host.Connect("tn3270://zos.efglobe.com:telnet",10)
190   -
191   - if host.Connected Then
192   -
193   - Console.WriteLine(host.GetStringAt(14,19,38))
194   -
195   - host.Disconnect()
196   - End If
197   -
198   - End Sub
199   -
200   -
201   -End Module
testprograms/vbsample.vb
... ... @@ -1,56 +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., 51 Franklin
19   -' St, Fifth Floor, Boston, MA 02110-1301 USA
20   -'
21   -' Este programa está nomeado como vbsample.vb 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   -Imports System
30   -
31   -' This module houses the application's entry point.
32   -Public Module modmain
33   -
34   - ' Application's entry point.
35   - Sub Main()
36   -
37   - dim host as new pw3270.Session("")
38   -
39   - Console.WriteLine("Using pw3270 version " + host.getVersion() + " revision " + host.GetRevision())
40   - Console.WriteLine("Screen size is " + host.GetWidth() + "x" + host.GetHeigth())
41   -
42   - host.Connect("tn3270://zos.efglobe.com:telnet",10)
43   -
44   - if host.IsConnected() then
45   -
46   - Console.WriteLine("Connected to host")
47   -
48   - Console.WriteLine(host.GetStringAt(14,19,38))
49   -
50   - host.Disconnect()
51   -
52   - End If
53   -
54   - End Sub
55   -
56   -End Module
testprograms/vbtest.vb
... ... @@ -1,49 +0,0 @@
1   -
2   -Imports System
3   -Imports System.Text
4   -Imports System.Runtime.InteropServices
5   -
6   -' This module houses the application's entry point.
7   -Public Module modmain
8   -
9   -
10   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
11   - Private Shared Function tn3270_create_session(ByVal Name As String) As IntPtr
12   - End Function
13   -
14   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
15   - Private Shared Function tn3270_destroy_session(ByVal hSession As IntPtr) as Long
16   - End Function
17   -
18   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
19   - Private Shared Function tn3270_get_version(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Long
20   - End Function
21   -
22   - <DllImport("lib3270-mono", CallingConvention := CallingConvention.Cdecl)> _
23   - Private Shared Function tn3270_get_revision(ByVal hSession As IntPtr, ByVal buffer As StringBuilder, ByVal strlen as Integer) as Long
24   - End Function
25   -
26   - ' Application's entry point.
27   - Sub Main()
28   -
29   - dim host as IntPtr = tn3270_create_session("")
30   - dim buffer As New StringBuilder(1024)
31   -
32   - ' Get library version
33   - tn3270_get_version(host, buffer, 1024)
34   - dim vrs as String = buffer.toString
35   -
36   - ' Get Library revision
37   - tn3270_get_revision(host, buffer, 1024)
38   - dim rev as String = buffer.toString
39   -
40   - ' Write text to the console.
41   - Console.WriteLine ("Using pw3270 version " + vrs + " revision " + rev)
42   -
43   -
44   -
45   - tn3270_destroy_session(host)
46   -
47   - End Sub
48   -
49   -End Module