Commit 07c9e8437e4c39fa04dfb0e0eb9b87a6ef3fa527

Authored by Perry Werneck
1 parent a550d906

Removing old code.

Showing 61 changed files with 0 additions and 9662 deletions   Show diff stats
android/.classpath
@@ -1,8 +0,0 @@ @@ -1,8 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<classpath>  
3 - <classpathentry kind="src" path="src"/>  
4 - <classpathentry kind="src" path="gen"/>  
5 - <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>  
6 - <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>  
7 - <classpathentry kind="output" path="bin/classes"/>  
8 -</classpath>  
android/.project
@@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<projectDescription>  
3 - <name>pw3270</name>  
4 - <comment></comment>  
5 - <projects>  
6 - </projects>  
7 - <buildSpec>  
8 - <buildCommand>  
9 - <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>  
10 - <arguments>  
11 - </arguments>  
12 - </buildCommand>  
13 - <buildCommand>  
14 - <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>  
15 - <arguments>  
16 - </arguments>  
17 - </buildCommand>  
18 - <buildCommand>  
19 - <name>org.eclipse.jdt.core.javabuilder</name>  
20 - <arguments>  
21 - </arguments>  
22 - </buildCommand>  
23 - <buildCommand>  
24 - <name>com.android.ide.eclipse.adt.ApkBuilder</name>  
25 - <arguments>  
26 - </arguments>  
27 - </buildCommand>  
28 - </buildSpec>  
29 - <natures>  
30 - <nature>com.android.ide.eclipse.adt.AndroidNature</nature>  
31 - <nature>org.eclipse.jdt.core.javanature</nature>  
32 - </natures>  
33 -</projectDescription>  
android/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +0,0 @@ @@ -1,4 +0,0 @@
1 -eclipse.preferences.version=1  
2 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5  
3 -org.eclipse.jdt.core.compiler.compliance=1.5  
4 -org.eclipse.jdt.core.compiler.source=1.5  
android/AndroidManifest.xml
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>  
2 -<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
3 - package="br.com.bb.pw3270"  
4 - android:versionCode="1"  
5 - android:versionName="1.0" >  
6 -  
7 - <uses-sdk android:minSdkVersion="15" />  
8 - <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
9 -  
10 - <application  
11 - android:icon="@drawable/ic_launcher"  
12 - android:label="@string/app_name" >  
13 - <activity  
14 - android:name=".PW3270Activity"  
15 - android:label="@string/app_name"  
16 - android:configChanges="orientation" >  
17 -  
18 - <intent-filter>  
19 - <action android:name="android.intent.action.MAIN" />  
20 -  
21 - <category android:name="android.intent.category.LAUNCHER" />  
22 - </intent-filter>  
23 - </activity>  
24 - <activity android:name="SettingsActivity"></activity>  
25 -  
26 - </application>  
27 -  
28 -</manifest>  
android/Makefile
@@ -1,131 +0,0 @@ @@ -1,131 +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 -#  
25 -  
26 -#  
27 -# Referência:  
28 -# http://developer.android.com/tools/building/building-cmdline.html  
29 -#  
30 -  
31 -JDK_HOME=/usr/java/default  
32 -JAVAH=$(JDK_HOME)/bin/javah  
33 -JAVAC=$(JDK_HOME)/bin/javac  
34 -ANT=/usr/bin/ant  
35 -  
36 -ANDROIDSDK?=/opt/android-sdk-linux  
37 -ANDROIDNDK?=/opt/android-ndk-r8d  
38 -ANDROIDCLASSPATH=$(ANDROIDSDK)/platforms/android-16/android.jar  
39 -  
40 -NDKBUILD=$(ANDROIDNDK)/ndk-build  
41 -MKDIR=/bin/mkdir -p  
42 -CONVERT=rsvg-convert  
43 -  
44 -CLASSPATH=br/com/bb/pw3270  
45 -JAVASRCDIR=src/$(CLASSPATH)  
46 -  
47 -RESOLUTION=xhdpi mdpi ldpi hdpi  
48 -  
49 -#---[ Rules ]------------------------------------------------------------------  
50 -  
51 -bin/classes/$(CLASSPATH)/%.class: src/$(CLASSPATH)/%.java  
52 - @$(MKDIR) `dirname $@`  
53 - @echo "Compile thumb : `basename $@` <= `basename $<`"  
54 - @$(JAVAC) -classpath $(ANDROIDCLASSPATH) -d bin/classes $<  
55 -  
56 -res/drawable-xhdpi/%.png: %.svg  
57 - @echo "Gen XHDPI : `basename $@` <= `basename $<`"  
58 - @$(MKDIR) `dirname $@`  
59 - @$(CONVERT) --format=png --width=96 --height=96 --output=$@ $<  
60 -  
61 -res/drawable-mdpi/%.png: %.svg  
62 - @echo "Gen MDPI : `basename $@` <= `basename $<`"  
63 - @$(MKDIR) `dirname $@`  
64 - @$(CONVERT) --format=png --width=48 --height=48 --output=$@ $<  
65 -  
66 -res/drawable-ldpi/%.png: %.svg  
67 - @echo "Gen LDPI : `basename $@` <= `basename $<`"  
68 - @$(MKDIR) `dirname $@`  
69 - @$(CONVERT) --format=png --width=36 --height=36 --output=$@ $<  
70 -  
71 -res/drawable-hdpi/%.png: %.svg  
72 - @echo "Gen HDPI : `basename $@` <= `basename $<`"  
73 - @$(MKDIR) `dirname $@`  
74 - @$(CONVERT) --format=png --width=72 --height=72 --output=$@ $<  
75 -  
76 -#---[ Targets ]----------------------------------------------------------------  
77 -  
78 -all: pw3270-release-unsigned.apk  
79 -  
80 -Debug: bin/pw3270-debug.apk  
81 -  
82 -bin/pw3270-debug.apk: icons libs/armeabi/lib3270.so $(JAVASRCDIR)/*.java  
83 - @JAVA_HOME=$(JDK_HOME) $(ANT) debug  
84 -  
85 -pw3270-release-unsigned.apk: icons libs/armeabi/lib3270.so $(JAVASRCDIR)/*.java  
86 - @JAVA_HOME=$(JDK_HOME) $(ANT) release  
87 -  
88 -libs/armeabi/lib3270.so: jni/lib3270jni.h jni/*.cpp  
89 - @echo " GEN $@"  
90 - @chmod +x ../src/lib3270/mkversion.sh  
91 - @../src/lib3270/mkversion.sh  
92 - @$(NDKBUILD)  
93 -  
94 -icons: $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/ic_launcher.png)  
95 -  
96 -clean:  
97 - @JAVA_HOME=$(JDK_HOME) $(ANT) clean  
98 - @rm -fr bin  
99 - @rm -fr obj  
100 - @rm -f jni/lib3270jni.h  
101 - @rm -f sigs.txt  
102 - @rm -f $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/*.png)  
103 -  
104 -cleanDebug: clean  
105 -  
106 -res/drawable-xhdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg  
107 - @echo "Laucher xhdpi : `basename $@` <= `basename $<`"  
108 - @$(MKDIR) `dirname $@`  
109 - @$(CONVERT) --format=png --width=96 --height=96 --output=$@ $<  
110 -  
111 -res/drawable-mdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg  
112 - @echo "Laucher mdpi : `basename $@` <= `basename $<`"  
113 - @$(MKDIR) `dirname $@`  
114 - @$(CONVERT) --format=png --width=48 --height=48 --output=$@ $<  
115 -  
116 -res/drawable-ldpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg  
117 - @echo "Laucher ldpi : `basename $@` <= `basename $<`"  
118 - @$(MKDIR) `dirname $@`  
119 - @$(CONVERT) --format=png --width=36 --height=36 --output=$@ $<  
120 -  
121 -res/drawable-hdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg  
122 - @echo "Laucher hdpi : `basename $@` <= `basename $<`"  
123 - @$(MKDIR) `dirname $@`  
124 - @$(CONVERT) --format=png --width=72 --height=72 --output=$@ $<  
125 -  
126 -sigs.txt: bin/classes/$(CLASSPATH)/lib3270.class  
127 - @javap -classpath ./bin/classes -s -p br.com.bb.pw3270.lib3270 > $@  
128 -  
129 -jni/lib3270jni.h: bin/classes/$(CLASSPATH)/lib3270.class  
130 - @echo " GEN `basename $@`"  
131 - @$(JAVAH) -o $@ -classpath $(ANDROIDCLASSPATH):bin/classes $(subst /,.,$(CLASSPATH)).lib3270  
android/build.xml
@@ -1,83 +0,0 @@ @@ -1,83 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project name="pw3270" default="help">  
3 -  
4 - <!-- The local.properties file is created and updated by the 'android' tool.  
5 - It contains the path to the SDK. It should *NOT* be checked into  
6 - Version Control Systems. -->  
7 - <property file="local.properties" />  
8 -  
9 - <!-- The ant.properties file can be created by you. It is only edited by the  
10 - 'android' tool to add properties to it.  
11 - This is the place to change some Ant specific build properties.  
12 - Here are some properties you may want to change/update:  
13 -  
14 - source.dir  
15 - The name of the source directory. Default is 'src'.  
16 - out.dir  
17 - The name of the output directory. Default is 'bin'.  
18 -  
19 - For other overridable properties, look at the beginning of the rules  
20 - files in the SDK, at tools/ant/build.xml  
21 -  
22 - Properties related to the SDK location or the project target should  
23 - be updated using the 'android' tool with the 'update' action.  
24 -  
25 - This file is an integral part of the build system for your  
26 - application and should be checked into Version Control Systems.  
27 -  
28 - -->  
29 - <property file="ant.properties" />  
30 -  
31 - <!-- The project.properties file is created and updated by the 'android'  
32 - tool, as well as ADT.  
33 -  
34 - This contains project specific properties such as project target, and library  
35 - dependencies. Lower level build properties are stored in ant.properties  
36 - (or in .classpath for Eclipse projects).  
37 -  
38 - This file is an integral part of the build system for your  
39 - application and should be checked into Version Control Systems. -->  
40 - <loadproperties srcFile="project.properties" />  
41 -  
42 - <!-- quick check on sdk.dir -->  
43 - <fail  
44 - message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"  
45 - unless="sdk.dir"  
46 - />  
47 -  
48 - <!--  
49 - Import per project custom build rules if present at the root of the project.  
50 - This is the place to put custom intermediary targets such as:  
51 - -pre-build  
52 - -pre-compile  
53 - -post-compile (This is typically used for code obfuscation.  
54 - Compiled code location: ${out.classes.absolute.dir}  
55 - If this is not done in place, override ${out.dex.input.absolute.dir})  
56 - -post-package  
57 - -post-build  
58 - -pre-clean  
59 - -->  
60 - <import file="custom_rules.xml" optional="true" />  
61 -  
62 - <!-- Import the actual build file.  
63 -  
64 - To customize existing targets, there are two options:  
65 - - Customize only one target:  
66 - - copy/paste the target into this file, *before* the  
67 - <import> task.  
68 - - customize it to your needs.  
69 - - Customize the whole content of build.xml  
70 - - copy/paste the content of the rules files (minus the top node)  
71 - into this file, replacing the <import> task.  
72 - - customize to your needs.  
73 -  
74 - ***********************  
75 - ****** IMPORTANT ******  
76 - ***********************  
77 - In all cases you must update the value of version-tag below to read 'custom' instead of an integer,  
78 - in order to avoid having your file be overridden by tools such as "android update project"  
79 - -->  
80 - <!-- version-tag: 1 -->  
81 - <import file="${sdk.dir}/tools/ant/build.xml" />  
82 -  
83 -</project>  
android/ic_connect.svg
@@ -1,93 +0,0 @@ @@ -1,93 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<!-- Created with Inkscape (http://www.inkscape.org/) -->  
3 -  
4 -<svg  
5 - xmlns:dc="http://purl.org/dc/elements/1.1/"  
6 - xmlns:cc="http://creativecommons.org/ns#"  
7 - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
8 - xmlns:svg="http://www.w3.org/2000/svg"  
9 - xmlns="http://www.w3.org/2000/svg"  
10 - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"  
11 - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"  
12 - width="45.000008"  
13 - height="44.796928"  
14 - id="svg4447"  
15 - version="1.1"  
16 - inkscape:version="0.48.2 r9819"  
17 - sodipodi:docname="connect.svg">  
18 - <defs  
19 - id="defs4449" />  
20 - <sodipodi:namedview  
21 - id="base"  
22 - pagecolor="#ffffff"  
23 - bordercolor="#666666"  
24 - borderopacity="1.0"  
25 - inkscape:pageopacity="0.0"  
26 - inkscape:pageshadow="2"  
27 - inkscape:zoom="5.6"  
28 - inkscape:cx="-8.8755188"  
29 - inkscape:cy="16.217373"  
30 - inkscape:document-units="px"  
31 - inkscape:current-layer="layer1"  
32 - showgrid="false"  
33 - fit-margin-top="0"  
34 - fit-margin-left="0"  
35 - fit-margin-right="0"  
36 - fit-margin-bottom="0"  
37 - inkscape:window-width="1280"  
38 - inkscape:window-height="966"  
39 - inkscape:window-x="0"  
40 - inkscape:window-y="26"  
41 - inkscape:window-maximized="1" />  
42 - <metadata  
43 - id="metadata4452">  
44 - <rdf:RDF>  
45 - <cc:Work  
46 - rdf:about="">  
47 - <dc:format>image/svg+xml</dc:format>  
48 - <dc:type  
49 - rdf:resource="http://purl.org/dc/dcmitype/StillImage" />  
50 - <dc:title />  
51 - </cc:Work>  
52 - </rdf:RDF>  
53 - </metadata>  
54 - <g  
55 - inkscape:label="Camada 1"  
56 - inkscape:groupmode="layer"  
57 - id="layer1"  
58 - transform="translate(-349.54724,-503.78263)">  
59 - <g  
60 - id="g2987"  
61 - transform="translate(-7.0314067,0)">  
62 - <g  
63 - id="Battery_-_charging"  
64 - transform="translate(281.87974,386.63159)">  
65 - <path  
66 - sodipodi:nodetypes="ccssccccccccccscc"  
67 - id="path1353"  
68 - d="m 112.668,142.443 -9.347,0 0,10e-4 c 0,3.977 -3.256,7.232 -7.234,7.232 l -6.6,0 0,-2.894 -7.232,0 0,-4.339 7.232,0 0,-5.742 -7.232,0 0,-4.34 7.232,0 0,-2.938 6.6,0 c 3.979,0 7.234,3.254 7.234,7.232 l 9.348,0"  
69 - inkscape:connector-curvature="0"  
70 - style="fill:#333333" />  
71 - </g>  
72 - <g  
73 - transform="matrix(1.2859907,0,0,1,-89.445423,-0.17091598)"  
74 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-opacity:1"  
75 - id="g4566">  
76 - <rect  
77 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-width:0.65551269;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"  
78 - id="rect4546"  
79 - width="3.2658451"  
80 - height="19.597486"  
81 - x="354.63577"  
82 - y="516.50861" />  
83 - <rect  
84 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-width:0.69507933;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"  
85 - id="rect4546-4"  
86 - width="3.2262783"  
87 - height="22.30492"  
88 - x="352.60605"  
89 - y="515.15491" />  
90 - </g>  
91 - </g>  
92 - </g>  
93 -</svg>  
android/ic_disconnect.svg
@@ -1,89 +0,0 @@ @@ -1,89 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<!-- Created with Inkscape (http://www.inkscape.org/) -->  
3 -  
4 -<svg  
5 - xmlns:dc="http://purl.org/dc/elements/1.1/"  
6 - xmlns:cc="http://creativecommons.org/ns#"  
7 - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
8 - xmlns:svg="http://www.w3.org/2000/svg"  
9 - xmlns="http://www.w3.org/2000/svg"  
10 - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"  
11 - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"  
12 - width="45.000008"  
13 - height="44.796928"  
14 - id="svg4447"  
15 - version="1.1"  
16 - inkscape:version="0.48.2 r9819"  
17 - sodipodi:docname="disconnect.svg">  
18 - <defs  
19 - id="defs4449" />  
20 - <sodipodi:namedview  
21 - id="base"  
22 - pagecolor="#ffffff"  
23 - bordercolor="#666666"  
24 - borderopacity="1.0"  
25 - inkscape:pageopacity="0.0"  
26 - inkscape:pageshadow="2"  
27 - inkscape:zoom="7.9195959"  
28 - inkscape:cx="16.481624"  
29 - inkscape:cy="16.217373"  
30 - inkscape:document-units="px"  
31 - inkscape:current-layer="layer1"  
32 - showgrid="false"  
33 - fit-margin-top="0"  
34 - fit-margin-left="0"  
35 - fit-margin-right="0"  
36 - fit-margin-bottom="0"  
37 - inkscape:window-width="1280"  
38 - inkscape:window-height="966"  
39 - inkscape:window-x="0"  
40 - inkscape:window-y="26"  
41 - inkscape:window-maximized="1" />  
42 - <metadata  
43 - id="metadata4452">  
44 - <rdf:RDF>  
45 - <cc:Work  
46 - rdf:about="">  
47 - <dc:format>image/svg+xml</dc:format>  
48 - <dc:type  
49 - rdf:resource="http://purl.org/dc/dcmitype/StillImage" />  
50 - <dc:title></dc:title>  
51 - </cc:Work>  
52 - </rdf:RDF>  
53 - </metadata>  
54 - <g  
55 - inkscape:label="Camada 1"  
56 - inkscape:groupmode="layer"  
57 - id="layer1"  
58 - transform="translate(-349.54724,-503.78263)">  
59 - <g  
60 - transform="translate(281.87974,386.63159)"  
61 - id="Battery_-_charging">  
62 - <path  
63 - style="fill:#333333"  
64 - inkscape:connector-curvature="0"  
65 - d="m 112.668,142.443 -9.347,0 0,10e-4 c 0,3.977 -3.256,7.232 -7.234,7.232 l -6.6,0 0,-2.894 -7.232,0 0,-4.339 7.232,0 0,-5.742 -7.232,0 0,-4.34 7.232,0 0,-2.938 6.6,0 c 3.979,0 7.234,3.254 7.234,7.232 l 9.348,0"  
66 - id="path1353"  
67 - sodipodi:nodetypes="ccssccccccccccscc" />  
68 - </g>  
69 - <g  
70 - id="g4566"  
71 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-opacity:1"  
72 - transform="translate(1.2626907,-0.12627312)">  
73 - <rect  
74 - y="516.50861"  
75 - x="354.63577"  
76 - height="19.597486"  
77 - width="3.2658451"  
78 - id="rect4546"  
79 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-width:0.65551269;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />  
80 - <rect  
81 - y="515.15491"  
82 - x="352.60605"  
83 - height="22.30492"  
84 - width="3.2262783"  
85 - id="rect4546-4"  
86 - style="fill:#333333;fill-opacity:1;stroke:#333333;stroke-width:0.69507933;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />  
87 - </g>  
88 - </g>  
89 -</svg>  
android/ic_settings.svg
@@ -1,77 +0,0 @@ @@ -1,77 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<!-- Created with Inkscape (http://www.inkscape.org/) -->  
3 -  
4 -<svg  
5 - xmlns:dc="http://purl.org/dc/elements/1.1/"  
6 - xmlns:cc="http://creativecommons.org/ns#"  
7 - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
8 - xmlns:svg="http://www.w3.org/2000/svg"  
9 - xmlns="http://www.w3.org/2000/svg"  
10 - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"  
11 - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"  
12 - width="45.000008"  
13 - height="44.796928"  
14 - id="svg4447"  
15 - version="1.1"  
16 - inkscape:version="0.48.2 r9819"  
17 - sodipodi:docname="Novo documento 2">  
18 - <defs  
19 - id="defs4449" />  
20 - <sodipodi:namedview  
21 - id="base"  
22 - pagecolor="#ffffff"  
23 - bordercolor="#666666"  
24 - borderopacity="1.0"  
25 - inkscape:pageopacity="0.0"  
26 - inkscape:pageshadow="2"  
27 - inkscape:zoom="5.6"  
28 - inkscape:cx="10.30575"  
29 - inkscape:cy="16.217373"  
30 - inkscape:document-units="px"  
31 - inkscape:current-layer="layer1"  
32 - showgrid="false"  
33 - fit-margin-top="0"  
34 - fit-margin-left="0"  
35 - fit-margin-right="0"  
36 - fit-margin-bottom="0"  
37 - inkscape:window-width="1280"  
38 - inkscape:window-height="966"  
39 - inkscape:window-x="0"  
40 - inkscape:window-y="26"  
41 - inkscape:window-maximized="1" />  
42 - <metadata  
43 - id="metadata4452">  
44 - <rdf:RDF>  
45 - <cc:Work  
46 - rdf:about="">  
47 - <dc:format>image/svg+xml</dc:format>  
48 - <dc:type  
49 - rdf:resource="http://purl.org/dc/dcmitype/StillImage" />  
50 - <dc:title></dc:title>  
51 - </cc:Work>  
52 - </rdf:RDF>  
53 - </metadata>  
54 - <g  
55 - inkscape:label="Camada 1"  
56 - inkscape:groupmode="layer"  
57 - id="layer1"  
58 - transform="translate(-349.54724,-503.78263)">  
59 - <g  
60 - transform="translate(222.09224,-33.108444)"  
61 - id="Settings">  
62 - <g  
63 - id="g1208">  
64 - <path  
65 - style="fill:#333333"  
66 - inkscape:connector-curvature="0"  
67 - d="m 169.92,548.999 c -0.181,-0.441 -0.497,-0.633 -0.703,-0.426 -0.206,0.205 -0.575,0.451 -0.819,0.543 -0.244,0.094 -1.056,-0.443 -1.392,-0.779 h -0.001 c -0.336,-0.338 -0.688,-0.813 -0.78,-1.057 -0.092,-0.244 0.444,-1.055 0.78,-1.393 l 0.011,-0.01 c 0.337,-0.338 0.348,-0.898 0.023,-1.248 l -3.978,-3.666 c -0.374,-0.295 -0.851,-0.248 -1.059,0.104 -0.209,0.35 -0.555,0.76 -0.769,0.91 -0.214,0.148 -1.133,-0.17 -1.541,-0.414 -0.409,-0.242 -0.866,-0.617 -1.017,-0.83 -0.149,-0.215 0.132,-1.066 0.326,-1.393 0.194,-0.328 -0.013,-0.729 -0.461,-0.889 l -5.998,-1.547 c -0.47,-0.078 -0.854,0.205 -0.854,0.631 0,0.426 -0.088,0.969 -0.194,1.207 -0.107,0.238 -1.061,0.434 -1.536,0.434 -0.475,0 -1.06,-0.088 -1.298,-0.195 -0.238,-0.107 -0.433,-1.02 -0.433,-1.445 0,-0.425 -0.384,-0.709 -0.854,-0.631 l -5.998,1.547 c -0.448,0.16 -0.655,0.561 -0.461,0.889 0.195,0.326 0.379,0.807 0.408,1.066 0.03,0.258 -0.689,0.914 -1.099,1.156 -0.408,0.244 -0.955,0.467 -1.215,0.496 -0.26,0.029 -0.885,-0.643 -1.095,-0.992 -0.208,-0.352 -0.686,-0.398 -1.06,-0.104 l -3.978,3.666 c -0.324,0.35 -0.313,0.91 0.024,1.248 l 0.011,0.01 c 0.336,0.338 0.688,0.813 0.78,1.057 0.092,0.244 -0.444,1.055 -0.781,1.393 -0.336,0.336 -0.812,0.688 -1.056,0.779 -0.244,0.091 -0.949,-0.338 -1.155,-0.543 -0.206,-0.207 -0.522,-0.016 -0.703,0.426 0,0 -2.54,6.197 -2.54,10.189 0,12.428 10.073,22.5 22.5,22.5 12.427,0 22.5,-10.072 22.5,-22.5 0.005,-3.992 -2.535,-10.189 -2.535,-10.189 z m -19.96,21.541 c -6.213,0 -11.25,-5.037 -11.25,-11.25 0,-5.076 3.363,-9.363 7.981,-10.764 l 2.882,-5.764 c 0.213,-0.426 0.561,-0.426 0.773,0 l 2.882,5.764 c 4.619,1.4 7.981,5.688 7.981,10.764 0.001,6.213 -5.036,11.25 -11.249,11.25 z"  
68 - id="path1210" />  
69 - <path  
70 - style="fill:#333333"  
71 - inkscape:connector-curvature="0"  
72 - d="m 149.96,551.501 c -4.295,0 -7.788,3.494 -7.788,7.789 0,4.295 3.493,7.787 7.788,7.787 4.295,0 7.788,-3.492 7.788,-7.787 0,-4.295 -3.493,-7.789 -7.788,-7.789 z"  
73 - id="path1212" />  
74 - </g>  
75 - </g>  
76 - </g>  
77 -</svg>  
android/jni/Android.mk
@@ -1,40 +0,0 @@ @@ -1,40 +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 -#  
25 -  
26 -LOCAL_PATH := $(call my-dir)  
27 -  
28 -include $(CLEAR_VARS)  
29 -  
30 -include ../src/lib3270/sources.mak  
31 -  
32 -LOCAL_CFLAGS=-I../src/include  
33 -LOCAL_DEFAULT_CPP_EXTENSION := cpp  
34 -LOCAL_MODULE := lib3270  
35 -LOCAL_LDLIBS := -llog  
36 -LOCAL_SRC_FILES := $(foreach SRC, $(TERMINAL_SOURCES) $(NETWORK_SOURCES), ../../src/lib3270/$(SRC)) \  
37 - main.cpp misc.cpp text.cpp actions.cpp  
38 -  
39 -include $(BUILD_SHARED_LIBRARY)  
40 -  
android/jni/actions.cpp
@@ -1,59 +0,0 @@ @@ -1,59 +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. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple  
19 - * Place, Suite 330, Boston, MA, 02111-1307, USA  
20 - *  
21 - * Este programa está nomeado como actions.cpp e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include "globals.h"  
30 - #include <lib3270/actions.h>  
31 - #include <string.h>  
32 -  
33 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
34 -  
35 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_sendEnter(JNIEnv *env, jobject obj)  
36 -{  
37 - PW3270_JNI_BEGIN  
38 -  
39 - if(lib3270_connected(PW3270_SESSION))  
40 - lib3270_enter(PW3270_SESSION);  
41 - else  
42 - pw3270_jni_post_message(1,LIB3270_MESSAGE_DISCONNECTED);  
43 -  
44 - PW3270_JNI_END  
45 -}  
46 -  
47 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_sendPFkey(JNIEnv *env, jobject obj, jint key)  
48 -{  
49 - PW3270_JNI_BEGIN  
50 -  
51 - if(lib3270_connected(PW3270_SESSION))  
52 - lib3270_pfkey(PW3270_SESSION,key);  
53 - else  
54 - pw3270_jni_post_message(1,LIB3270_MESSAGE_DISCONNECTED);  
55 -  
56 - PW3270_JNI_END  
57 -}  
58 -  
59 -  
android/jni/globals.h
@@ -1,66 +0,0 @@ @@ -1,66 +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. 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 globals.h e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include "lib3270jni.h"  
30 -  
31 - #include <lib3270.h>  
32 - #include <lib3270/session.h>  
33 - #include <lib3270/log.h>  
34 -  
35 -/*--[ Defines ]--------------------------------------------------------------------------------------*/  
36 -  
37 - #define PW3270_JNI_BEGIN pw3270_jni_lock(env,obj);  
38 - #define PW3270_JNI_END pw3270_jni_unlock();  
39 -  
40 - #define PW3270_JNI_ENV pw3270_jni_active->env  
41 - #define PW3270_JNI_OBJ pw3270_jni_active->obj  
42 -  
43 - #define PW3270_SESSION lib3270_get_default_session_handle()  
44 -  
45 - #define pw3270_jni_call_void(name, sig, ...) pw3270_jni_active->env->CallVoidMethod(pw3270_jni_active->obj,lib3270_getmethodID(name,sig), __VA_ARGS__)  
46 - #define pw3270_jni_call_int(name, sig, ...) pw3270_jni_active->env->CallIntMethod(pw3270_jni_active->obj,lib3270_getmethodID(name,sig), __VA_ARGS__)  
47 - #define pw3270_jni_new_byte_array(len) pw3270_jni_active->env->NewByteArray(len)  
48 -  
49 - typedef struct _pw3270_jni  
50 - {  
51 - struct _pw3270_jni * parent;  
52 - JNIEnv * env;  
53 - jobject obj;  
54 - } PW3270_JNI;  
55 -  
56 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
57 -  
58 -  
59 - extern PW3270_JNI *pw3270_jni_active;  
60 -  
61 - int pw3270_jni_lock(JNIEnv *env, jobject obj);  
62 - void pw3270_jni_unlock();  
63 - void pw3270_jni_post_message(int msgid, int arg1 = 0, int arg2 = 0);  
64 - jstring pw3270_jni_new_string(const char *str);  
65 - jmethodID lib3270_getmethodID(const char *name, const char *sig);  
66 -  
android/jni/main.cpp
@@ -1,469 +0,0 @@ @@ -1,469 +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. 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 main.cpp e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include "globals.h"  
30 - #include <stdio.h>  
31 - #include <pthread.h>  
32 - #include <string.h>  
33 - #include <lib3270/popup.h>  
34 - #include <lib3270/internals.h>  
35 - #include <lib3270/html.h>  
36 -  
37 -/*--[ Structs ]--------------------------------------------------------------------------------------*/  
38 -  
39 - typedef struct _timer  
40 - {  
41 - size_t sz;  
42 - bool enabled;  
43 - H3270 * session;  
44 - void (*proc)(H3270 *session);  
45 - } TIMER;  
46 -  
47 -/*--[ Globals ]--------------------------------------------------------------------------------------*/  
48 -  
49 - const char * java_class_name = "br/com/bb/pw3270/lib3270";  
50 - PW3270_JNI * pw3270_jni_active = NULL;  
51 - static pthread_mutex_t mutex;  
52 - static char * startup_script = NULL;  
53 -  
54 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
55 -  
56 -  
57 -jmethodID lib3270_getmethodID(const char *name, const char *sig)  
58 -{  
59 - if(!pw3270_jni_active)  
60 - {  
61 - __android_log_print(ANDROID_LOG_ERROR, PACKAGE_NAME, "%s(%s,%s) called outside jni environment",__FUNCTION__,name,sig);  
62 - return NULL;  
63 - }  
64 -  
65 - return PW3270_JNI_ENV->GetMethodID(PW3270_JNI_ENV->GetObjectClass(PW3270_JNI_OBJ), name, sig );  
66 -}  
67 -  
68 -void pw3270_jni_post_message(int msgid, int arg1, int arg2)  
69 -{  
70 - trace("%s: pw3270_env=%p pw3270_obj=%p msgid=%d",__FUNCTION__,PW3270_JNI_ENV,PW3270_JNI_OBJ,msgid);  
71 -  
72 - if(pw3270_jni_active)  
73 - pw3270_jni_call_void("postMessage", "(III)V",(jint) msgid, (jint) arg1, (jint) arg2);  
74 -}  
75 -  
76 -static void changed(H3270 *session, int offset, int len)  
77 -{  
78 - trace("%s: offset=%d len=%d",__FUNCTION__,offset,len);  
79 -  
80 - {  
81 - char *text = lib3270_get_string_at_address(PW3270_SESSION,0,-1,'\n');  
82 - if(text)  
83 - {  
84 - char *strtok_r(char *str, const char *delim, char **saveptr);  
85 - char *save;  
86 -  
87 -/*  
88 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "Contents:\n");  
89 - for(char *ptr = strtok_r(text,"\n",&save);ptr;ptr = strtok_r(NULL,"\n",&save))  
90 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s\n",ptr);  
91 -*/  
92 -  
93 - lib3270_free(text);  
94 - }  
95 - }  
96 -  
97 - pw3270_jni_post_message(2,offset,len);  
98 -}  
99 -  
100 -static void erase(H3270 *session)  
101 -{  
102 - pw3270_jni_post_message(4);  
103 -}  
104 -  
105 -static int popuphandler(H3270 *session, void *terminal, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list args)  
106 -{  
107 - if(PW3270_JNI_ENV)  
108 - {  
109 - static const char *sig = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";  
110 - char * descr = lib3270_vsprintf(fmt, args);  
111 -  
112 - if(msg)  
113 - {  
114 - pw3270_jni_call_void( "postPopup",  
115 - sig,  
116 - (jint) type,  
117 - pw3270_jni_new_string(title),  
118 - pw3270_jni_new_string(msg),  
119 - pw3270_jni_new_string(descr) );  
120 -  
121 - }  
122 - else  
123 - {  
124 - pw3270_jni_call_void( "postPopup",  
125 - sig,  
126 - (jint) type,  
127 - pw3270_jni_new_string(title),  
128 - pw3270_jni_new_string(descr),  
129 - pw3270_jni_new_string("") );  
130 - }  
131 -  
132 - lib3270_free(descr);  
133 - }  
134 - else  
135 - {  
136 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Can't open popup \"%s\", no jni env for active session",title);  
137 - }  
138 -}  
139 -  
140 -void update_status(H3270 *session, LIB3270_MESSAGE id)  
141 -{  
142 - pw3270_jni_post_message(1,(int) id);  
143 -}  
144 -  
145 -static int write_buffer(H3270 *session, unsigned const char *buf, int len)  
146 -{  
147 - int rc = -1;  
148 -  
149 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s: Writing %d bytes",__FUNCTION__,len);  
150 -  
151 - if(PW3270_JNI_ENV)  
152 - {  
153 - jbyteArray buffer = pw3270_jni_new_byte_array(len);  
154 -  
155 - PW3270_JNI_ENV->SetByteArrayRegion(buffer, 0, len, (jbyte*) buf);  
156 -  
157 - rc = pw3270_jni_call_int("send_data", "([BI)I", buffer, (jint) len );  
158 - }  
159 - else  
160 - {  
161 - __android_log_print(ANDROID_LOG_ERROR, PACKAGE_NAME, "Can't send %d bytes, no jni env for active session",len);  
162 - }  
163 -  
164 - trace("%s exits with rc=%d",__FUNCTION__,rc);  
165 -  
166 - return rc;  
167 -}  
168 -  
169 -static void * add_timer(unsigned long interval_ms, H3270 *session, void (*proc)(H3270 *session))  
170 -{  
171 - TIMER * timer = (TIMER *) lib3270_malloc(sizeof(TIMER));  
172 -  
173 - timer->sz = sizeof(timer);  
174 - timer->enabled = true;  
175 - timer->session = session;  
176 - timer->proc = proc;  
177 -  
178 - trace("Timer %08lx created",(unsigned long) timer);  
179 -  
180 - pw3270_jni_call_void("newTimer", "(JI)V", (jlong) timer, (jint) interval_ms);  
181 -  
182 - return timer;  
183 -}  
184 -  
185 -static void remove_timer(void *id)  
186 -{  
187 - TIMER *timer = (TIMER *) id;  
188 -  
189 - if(timer == NULL)  
190 - return;  
191 -  
192 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Disabling timer %08lx",(unsigned long) timer);  
193 -  
194 - timer->enabled = false;  
195 -  
196 -}  
197 -  
198 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_timerFinish(JNIEnv *env, jobject obj, jlong id)  
199 -{  
200 - TIMER *timer = (TIMER *) id;  
201 -  
202 - if(timer == NULL)  
203 - return;  
204 -  
205 - PW3270_JNI_BEGIN  
206 -  
207 - if(timer->enabled)  
208 - {  
209 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Running timer %08lx",(unsigned long) timer);  
210 - timer->proc(timer->session);  
211 - }  
212 -  
213 - lib3270_free(timer);  
214 -  
215 - PW3270_JNI_END  
216 -  
217 -}  
218 -  
219 -#ifdef X3270_TRACE  
220 -static void tracehandler(H3270 *session, const char *fmt, va_list args)  
221 -{  
222 - static char * buffer = NULL;  
223 - static int szBuffer = 0;  
224 -  
225 - char temp[4096];  
226 - size_t sz;  
227 - char * src;  
228 - char * dst;  
229 -  
230 - if(!szBuffer)  
231 - {  
232 - buffer = (char *) lib3270_malloc(szBuffer = 4096);  
233 - *buffer = 0;  
234 - }  
235 -  
236 - sz = vsnprintf(temp,4095,fmt,args);  
237 -  
238 - if( (sz+strlen(buffer)) > szBuffer)  
239 - {  
240 - szBuffer += (sz+strlen(buffer)+1);  
241 - buffer = (char *) lib3270_realloc(buffer,szBuffer);  
242 - }  
243 -  
244 - dst = buffer+strlen(buffer);  
245 - for(src = temp;*src;src++)  
246 - {  
247 - if(*src == '\n')  
248 - {  
249 - *dst = 0;  
250 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s", buffer);  
251 - dst = buffer;  
252 - }  
253 - else  
254 - {  
255 - *(dst++) = *src;  
256 - }  
257 - }  
258 -  
259 - *dst = 0;  
260 -  
261 -}  
262 -#endif // X3270_TRACE  
263 -  
264 -static void ctlr_done(H3270 *session)  
265 -{  
266 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s",__FUNCTION__);  
267 - pw3270_jni_post_message(5);  
268 -}  
269 -  
270 -static void autostart(H3270 *session)  
271 -{  
272 - if(startup_script)  
273 - {  
274 - // Input startup script contents  
275 - lib3270_emulate_input(PW3270_SESSION,startup_script,-1,0);  
276 - free(startup_script);  
277 - startup_script = NULL;  
278 - }  
279 -}  
280 -  
281 -jint JNI_OnLoad(JavaVM *vm, void *reserved)  
282 -{  
283 - H3270 * session = lib3270_session_new("","bracket");  
284 -  
285 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Initializing %s",PACKAGE_NAME);  
286 -  
287 - pthread_mutex_init(&mutex,NULL);  
288 -  
289 -#ifdef X3270_TRACE  
290 - lib3270_set_trace_handler(tracehandler);  
291 -#endif // X3270_TRACE  
292 -  
293 - lib3270_set_popup_handler(popuphandler);  
294 - lib3270_register_time_handlers(add_timer,remove_timer);  
295 -  
296 - session->write = write_buffer;  
297 - session->changed = changed;  
298 - session->erase = erase;  
299 - session->ctlr_done = ctlr_done;  
300 - session->update_status = update_status;  
301 - session->autostart = autostart;  
302 -  
303 - return JNI_VERSION_1_4;  
304 -}  
305 -  
306 -void JNI_OnUnload(JavaVM *vm, void *reserved)  
307 -{  
308 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Deinitializing %s",PACKAGE_NAME);  
309 - pthread_mutex_destroy(&mutex);  
310 -}  
311 -  
312 -JNIEXPORT jboolean JNICALL Java_br_com_bb_pw3270_lib3270_isConnected(JNIEnv *env, jobject obj)  
313 -{  
314 - jboolean rc;  
315 -  
316 - PW3270_JNI_BEGIN  
317 -  
318 - rc = lib3270_connected(lib3270_get_default_session_handle()) ? JNI_TRUE : JNI_FALSE;  
319 -  
320 - PW3270_JNI_END  
321 -  
322 - return rc;  
323 -}  
324 -  
325 -JNIEXPORT jboolean JNICALL Java_br_com_bb_pw3270_lib3270_isTerminalReady(JNIEnv *env, jobject obj)  
326 -{  
327 - PW3270_JNI_BEGIN  
328 -  
329 -  
330 - PW3270_JNI_END  
331 -  
332 - return JNI_FALSE;  
333 -}  
334 -  
335 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_setHost(JNIEnv *env, jobject obj, jstring hostname)  
336 -{  
337 - PW3270_JNI_BEGIN  
338 -  
339 - lib3270_set_url(PW3270_SESSION,env->GetStringUTFChars(hostname, 0));  
340 -  
341 - PW3270_JNI_END  
342 -}  
343 -  
344 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_setStartupScript(JNIEnv *env, jobject obj, jstring str)  
345 -{  
346 - const char *text;  
347 -  
348 - PW3270_JNI_BEGIN  
349 -  
350 - text = env->GetStringUTFChars(str, 0);  
351 -  
352 - if(startup_script)  
353 - free(startup_script);  
354 -  
355 - if(text || strlen(text) > 0)  
356 - startup_script = strdup(text);  
357 - else  
358 - startup_script = NULL;  
359 -  
360 - PW3270_JNI_END  
361 -  
362 -}  
363 -  
364 -  
365 -JNIEXPORT jstring JNICALL Java_br_com_bb_pw3270_lib3270_getHost(JNIEnv *env, jobject obj)  
366 -{  
367 - return env->NewStringUTF(lib3270_get_hostname(lib3270_get_default_session_handle()));  
368 -}  
369 -  
370 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_set_1connection_1status(JNIEnv *env, jobject obj, jboolean connected)  
371 -{  
372 - PW3270_JNI_BEGIN  
373 -  
374 - trace("Host is %s",connected ? "connected" : "disconnected");  
375 -  
376 - if(connected)  
377 - {  
378 - lib3270_set_connected(PW3270_SESSION);  
379 - lib3270_setup_session(PW3270_SESSION);  
380 - }  
381 - else  
382 - {  
383 - lib3270_set_disconnected(PW3270_SESSION);  
384 - }  
385 -  
386 - PW3270_JNI_END  
387 -}  
388 -  
389 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_procRecvdata(JNIEnv *env, jobject obj, jbyteArray buffer, jint sz)  
390 -{  
391 - unsigned char *netrbuf;  
392 -  
393 - PW3270_JNI_BEGIN  
394 -  
395 - netrbuf = (unsigned char *) env->GetByteArrayElements(buffer,NULL);  
396 - lib3270_data_recv(PW3270_SESSION, (size_t) sz, netrbuf);  
397 - PW3270_JNI_ENV->ReleaseByteArrayElements(buffer, (signed char *) netrbuf, 0);  
398 -  
399 - PW3270_JNI_END  
400 -  
401 -}  
402 -  
403 -int pw3270_jni_lock(JNIEnv *env, jobject obj)  
404 -{  
405 - int status;  
406 -  
407 - PW3270_JNI *datablock = (PW3270_JNI *) lib3270_malloc(sizeof(PW3270_JNI));  
408 -  
409 - datablock->parent = pw3270_jni_active;  
410 - datablock->env = env;  
411 - datablock->obj = obj;  
412 -  
413 -// __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "%s",__FUNCTION__);  
414 -  
415 - status = pthread_mutex_trylock(&mutex);  
416 - if(status)  
417 - {  
418 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Error %s when trying mutex semaphore (rc=%d)",strerror(status),status);  
419 - status = pthread_mutex_lock(&mutex);  
420 - if(status)  
421 - {  
422 - __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Error %s acquiring mutex semaphore (rc=%d)",strerror(status),status);  
423 - }  
424 - }  
425 -  
426 -/*  
427 - if(!pw3270_jni_active || pw3270_jni_active->env != env)  
428 - {  
429 - // Environment change, lock  
430 - if(!pthread_mutex_trylock(&mutex))  
431 - {  
432 - __android_log_print(ANDROID_LOG_DEBUG, PACKAGE_NAME, "Recursive access");  
433 - }  
434 -  
435 - trace("%s: Environment has changed",__FUNCTION__);  
436 - pthread_mutex_lock(&mutex);  
437 - }  
438 -  
439 - */  
440 -  
441 - pw3270_jni_active = datablock;  
442 -  
443 - return status;  
444 -  
445 -}  
446 -  
447 -void pw3270_jni_unlock(void)  
448 -{  
449 - PW3270_JNI *datablock = pw3270_jni_active;  
450 - pw3270_jni_active = datablock->parent;  
451 -  
452 - pthread_mutex_unlock(&mutex);  
453 -  
454 -/*  
455 - if(!pw3270_jni_active || pw3270_jni_active->env != datablock->env)  
456 - {  
457 - // Environment change, unlock  
458 - trace("%s: Environment has changed",__FUNCTION__);  
459 - pthread_mutex_unlock(&mutex);  
460 - }  
461 -*/  
462 -  
463 - lib3270_free(datablock);  
464 -}  
465 -  
466 -jstring pw3270_jni_new_string(const char *str)  
467 -{  
468 - return pw3270_jni_active->env->NewStringUTF(str ? str : "");  
469 -}  
android/jni/misc.cpp
@@ -1,70 +0,0 @@ @@ -1,70 +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. 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 misc.cpp e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include "globals.h"  
30 -  
31 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
32 -  
33 -JNIEXPORT jstring JNICALL Java_br_com_bb_pw3270_lib3270_getVersion(JNIEnv *env, jobject obj)  
34 -{  
35 - return env->NewStringUTF(lib3270_get_version());  
36 -}  
37 -  
38 -JNIEXPORT jstring JNICALL Java_br_com_bb_pw3270_lib3270_getRevision(JNIEnv *env, jobject obj)  
39 -{  
40 - return env->NewStringUTF(lib3270_get_revision());  
41 -}  
42 -  
43 -JNIEXPORT jstring JNICALL Java_br_com_bb_pw3270_lib3270_getEncoding(JNIEnv *env, jobject obj)  
44 -{  
45 - return env->NewStringUTF(lib3270_get_display_charset(lib3270_get_default_session_handle()));  
46 -}  
47 -  
48 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_setToggle(JNIEnv *env, jobject obj, jstring name, jboolean state)  
49 -{  
50 - LIB3270_TOGGLE id = lib3270_get_toggle_id(env->GetStringUTFChars(name, 0));  
51 -  
52 - PW3270_JNI_BEGIN  
53 -  
54 - if(id >= 0)  
55 - lib3270_set_toggle(PW3270_SESSION,id,state ? 1 : 0);  
56 -  
57 - PW3270_JNI_END  
58 -  
59 -}  
60 -  
61 -JNIEXPORT jboolean JNICALL Java_br_com_bb_pw3270_lib3270_in3270 (JNIEnv *env, jobject obj)  
62 -{  
63 - jboolean rc;  
64 -  
65 - PW3270_JNI_BEGIN  
66 - rc = lib3270_in_3270(PW3270_SESSION) ? JNI_TRUE : JNI_FALSE;  
67 - PW3270_JNI_END  
68 -  
69 - return rc;  
70 -}  
android/jni/text.cpp
@@ -1,141 +0,0 @@ @@ -1,141 +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. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple  
19 - * Place, Suite 330, Boston, MA, 02111-1307, USA  
20 - *  
21 - * Este programa está nomeado como text.cpp e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include "globals.h"  
30 - #include <lib3270/html.h>  
31 - #include <string.h>  
32 -  
33 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
34 -  
35 -static jbyteArray retString(const char *txt)  
36 -{  
37 - size_t len = strlen(txt);  
38 - jbyteArray ret = PW3270_JNI_ENV->NewByteArray(len);  
39 - PW3270_JNI_ENV->SetByteArrayRegion(ret, 0, len, (jbyte*) txt);  
40 - return ret;  
41 -}  
42 -  
43 -JNIEXPORT jbyteArray JNICALL Java_br_com_bb_pw3270_lib3270_getHTML(JNIEnv *env, jobject obj)  
44 -{  
45 - jbyteArray ret;  
46 -  
47 - PW3270_JNI_BEGIN  
48 -  
49 -// trace("%s starts, session=%p",__FUNCTION__,PW3270_SESSION);  
50 -  
51 - char *text = lib3270_get_as_html(PW3270_SESSION,(LIB3270_HTML_OPTION) (LIB3270_HTML_OPTION_ALL|LIB3270_HTML_OPTION_FORM));  
52 -  
53 - if(text)  
54 - {  
55 -// trace("Retornar:\n%s\n",text);  
56 - ret = retString(text);  
57 - lib3270_free(text);  
58 - }  
59 - else  
60 - {  
61 - ret = retString("<b>Empty session</b>");  
62 - }  
63 -  
64 -// trace("%s ends",__FUNCTION__);  
65 -  
66 - PW3270_JNI_END  
67 -  
68 - return ret;  
69 -}  
70 -  
71 -JNIEXPORT jbyteArray JNICALL Java_br_com_bb_pw3270_lib3270_getText(JNIEnv *env, jobject obj)  
72 -{  
73 - jbyteArray ret;  
74 -  
75 - PW3270_JNI_BEGIN  
76 -  
77 -// trace("%s starts",__FUNCTION__);  
78 -  
79 - char *text = lib3270_get_string_at_address(PW3270_SESSION,0,-1,'\n');  
80 -  
81 - if(text)  
82 - {  
83 - ret = retString(text);  
84 - lib3270_free(text);  
85 - }  
86 - else  
87 - {  
88 - ret = retString("");  
89 - }  
90 -  
91 -// trace("%s ends",__FUNCTION__);  
92 -  
93 - PW3270_JNI_END  
94 -  
95 - return ret;  
96 -}  
97 -  
98 -  
99 -JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_setTextAt(JNIEnv *env, jobject obj, jint pos, jbyteArray inText, jint szText)  
100 -{  
101 - PW3270_JNI_BEGIN  
102 -  
103 - if(lib3270_connected(PW3270_SESSION))  
104 - {  
105 - unsigned char str[szText+1];  
106 - int f;  
107 - jbyte * bt = env->GetByteArrayElements(inText,0);  
108 -  
109 - for(int f=0;f<szText;f++)  
110 - str[f] = (char) bt[f];  
111 - str[szText] = 0;  
112 -  
113 -// trace("Buffer(%d/%d)=\"%s\"",(int) pos, lib3270_field_addr(PW3270_SESSION, (int) pos), str);  
114 -  
115 - if( ((int) pos) == lib3270_field_addr(PW3270_SESSION, (int) pos))  
116 - {  
117 - // Begin of field, clear it first  
118 - int sz = lib3270_field_length(PW3270_SESSION,pos);  
119 - unsigned char * buffer = (unsigned char *) lib3270_malloc(sz+1);  
120 -  
121 - memset(buffer,' ',sz);  
122 -  
123 - lib3270_clear_operator_error(PW3270_SESSION);  
124 - lib3270_set_cursor_address(PW3270_SESSION,(int) pos);  
125 - lib3270_set_string(PW3270_SESSION,buffer);  
126 -  
127 - lib3270_free(buffer);  
128 - }  
129 -  
130 - lib3270_clear_operator_error(PW3270_SESSION);  
131 - lib3270_set_cursor_address(PW3270_SESSION,(int) pos);  
132 - lib3270_set_string(PW3270_SESSION,str);  
133 -  
134 - lib3270_clear_operator_error(PW3270_SESSION);  
135 -  
136 - env->ReleaseByteArrayElements(inText,bt,JNI_ABORT);  
137 - }  
138 -  
139 - PW3270_JNI_END  
140 -}  
141 -  
android/lib3270NDK.cbp
@@ -1,76 +0,0 @@ @@ -1,76 +0,0 @@
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 android NDK" />  
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 android NDK" 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 android NDK" 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="../src/include/lib3270.h" />  
36 - <Unit filename="../src/include/lib3270/actions.h" />  
37 - <Unit filename="../src/include/lib3270/html.h" />  
38 - <Unit filename="../src/include/lib3270/internals.h" />  
39 - <Unit filename="../src/include/lib3270/log.h" />  
40 - <Unit filename="../src/include/lib3270/session.h" />  
41 - <Unit filename="../src/lib3270/ctlr.c">  
42 - <Option compilerVar="CC" />  
43 - </Unit>  
44 - <Unit filename="../src/lib3270/html.c">  
45 - <Option compilerVar="CC" />  
46 - </Unit>  
47 - <Unit filename="../src/lib3270/kybd.c">  
48 - <Option compilerVar="CC" />  
49 - </Unit>  
50 - <Unit filename="../src/lib3270/selection.c">  
51 - <Option compilerVar="CC" />  
52 - </Unit>  
53 - <Unit filename="../src/lib3270/sources.mak" />  
54 - <Unit filename="../src/lib3270/telnet.c">  
55 - <Option compilerVar="CC" />  
56 - </Unit>  
57 - <Unit filename="../src/lib3270/trace_ds.c">  
58 - <Option compilerVar="CC" />  
59 - </Unit>  
60 - <Unit filename="Makefile" />  
61 - <Unit filename="jni/Android.mk" />  
62 - <Unit filename="jni/actions.cpp" />  
63 - <Unit filename="jni/globals.h" />  
64 - <Unit filename="jni/lib3270jni.h" />  
65 - <Unit filename="jni/main.cpp" />  
66 - <Unit filename="jni/misc.cpp" />  
67 - <Unit filename="jni/text.cpp" />  
68 - <Unit filename="res/raw/jsmain.js" />  
69 - <Unit filename="src/br/com/bb/pw3270/PW3270Activity.java" />  
70 - <Unit filename="src/br/com/bb/pw3270/lib3270.java" />  
71 - <Extensions>  
72 - <code_completion />  
73 - <debugger />  
74 - </Extensions>  
75 - </Project>  
76 -</CodeBlocks_project_file>  
android/local.properties
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -# This file is automatically generated by Android Tools.  
2 -# Do not modify this file -- YOUR CHANGES WILL BE ERASED!  
3 -#  
4 -# This file must *NOT* be checked into Version Control Systems,  
5 -# as it contains information specific to your local configuration.  
6 -  
7 -# location of the SDK. This is only used by Ant  
8 -# For customization when using a Version Control System, please read the  
9 -# header note.  
10 -sdk.dir=/opt/android-sdk-linux  
android/proguard-project.txt
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -# To enable ProGuard in your project, edit project.properties  
2 -# to define the proguard.config property as described in that file.  
3 -#  
4 -# Add project specific ProGuard rules here.  
5 -# By default, the flags in this file are appended to flags specified  
6 -# in ${sdk.dir}/tools/proguard/proguard-android.txt  
7 -# You can edit the include path and order by changing the ProGuard  
8 -# include property in project.properties.  
9 -#  
10 -# For more details, see  
11 -# http://developer.android.com/guide/developing/tools/proguard.html  
12 -  
13 -# Add any project specific keep options here:  
14 -  
15 -# If your project uses WebView with JS, uncomment the following  
16 -# and specify the fully qualified class name to the JavaScript interface  
17 -# class:  
18 -#-keepclassmembers class fqcn.of.javascript.interface.for.webview {  
19 -# public *;  
20 -#}  
android/project.properties
@@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
1 -# This file is automatically generated by Android Tools.  
2 -# Do not modify this file -- YOUR CHANGES WILL BE ERASED!  
3 -#  
4 -# This file must be checked in Version Control Systems.  
5 -#  
6 -# To customize properties used by the Ant build system edit  
7 -# "ant.properties", and override values to adapt the script to your  
8 -# project structure.  
9 -#  
10 -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):  
11 -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt  
12 -  
13 -# Project target.  
14 -target=android-16  
android/res/layout/about.xml
@@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
1 -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
2 - android:id="@+id/layout_root"  
3 - android:orientation="horizontal"  
4 - android:layout_width="fill_parent"  
5 - android:layout_height="fill_parent"  
6 - android:padding="10dp"  
7 - >  
8 - <ImageView android:id="@+id/image"  
9 - android:layout_width="wrap_content"  
10 - android:layout_height="fill_parent"  
11 - android:layout_marginRight="10dp"  
12 - />  
13 - <TextView android:id="@+id/text"  
14 - android:layout_width="wrap_content"  
15 - android:layout_height="fill_parent"  
16 - android:textColor="#FFF"  
17 - />  
18 -</LinearLayout>  
android/res/layout/menu.xml
@@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>  
2 -<menu xmlns:android="http://schemas.android.com/apk/res/android"  
3 - android:layout_width="match_parent"  
4 - android:layout_height="match_parent" >  
5 -  
6 - <item android:id="@+id/connect"  
7 - android:title="Conectar" />  
8 - <item android:id="@+id/disconnect"  
9 - android:title="Desconectar" />  
10 - <item android:id="@+id/settings"  
11 - android:title="Configurar" />  
12 - <item android:id="@+id/about"  
13 - android:title="Versão" />  
14 -</menu>  
android/res/raw/index.html
@@ -1,45 +0,0 @@ @@ -1,45 +0,0 @@
1 -<!DOCTYPE html>  
2 -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br" >  
3 -<head>  
4 - <meta http-equiv="content-type" content="text/html;charset=utf-8"/>  
5 - <meta name="author" content="Perry Werneck, perry@werneck.eti.br">  
6 - <link rel="stylesheet" type="text/css" href="file:theme.css" />  
7 - <script type="text/javascript" src="file:jsmain.js"></script>  
8 - <title>pw3270</title>  
9 -</head>  
10 -  
11 -<body onload="terminalUpdate()">  
12 -<div id="terminal">  
13 -</div>  
14 -  
15 -<div id="pfbar">  
16 -<div class="pfkey"><a href="#" onclick="return pfkey(1)">PF1</a></div>  
17 -<div class="pfkey"><a href="#" onclick="return pfkey(2)">PF2</a></div>  
18 -<div class="pfkey"><a href="#" onclick="return pfkey(3)">PF3</a></div>  
19 -<div class="pfkey"><a href="#" onclick="return pfkey(4)">PF4</a></div>  
20 -<div class="pfkey"><a href="#" onclick="return pfkey(5)">PF5</a></div>  
21 -<div class="pfkey"><a href="#" onclick="return pfkey(6)">PF6</a></div>  
22 -<div class="pfkey"><a href="#" onclick="return pfkey(7)">PF7</a></div>  
23 -<div class="pfkey"><a href="#" onclick="return pfkey(8)">PF8</a></div>  
24 -<div class="pfkey"><a href="#" onclick="return pfkey(9)">PF9</a></div>  
25 -<div class="pfkey"><a href="#" onclick="return pfkey(10)">PF10</a></div>  
26 -<div class="pfkey"><a href="#" onclick="return pfkey(11)">PF11</a></div>  
27 -<div class="pfkey"><a href="#" onclick="return pfkey(12)">PF12</a></div>  
28 -<div class="pfkey"><a href="#" onclick="return xmit()">ENTER</a></div>  
29 -<br />  
30 -<div class="pfkey"><a href="#" onclick="return pfkey(13)">PF13</a></div>  
31 -<div class="pfkey"><a href="#" onclick="return pfkey(14)">PF14</a></div>  
32 -<div class="pfkey"><a href="#" onclick="return pfkey(15)">PF15</a></div>  
33 -<div class="pfkey"><a href="#" onclick="return pfkey(16)">PF16</a></div>  
34 -<div class="pfkey"><a href="#" onclick="return pfkey(17)">PF17</a></div>  
35 -<div class="pfkey"><a href="#" onclick="return pfkey(18)">PF18</a></div>  
36 -<div class="pfkey"><a href="#" onclick="return pfkey(19)">PF19</a></div>  
37 -<div class="pfkey"><a href="#" onclick="return pfkey(20)">PF20</a></div>  
38 -<div class="pfkey"><a href="#" onclick="return pfkey(21)">PF21</a></div>  
39 -<div class="pfkey"><a href="#" onclick="return pfkey(22)">PF22</a></div>  
40 -<div class="pfkey"><a href="#" onclick="return pfkey(23)">PF23</a></div>  
41 -<div class="pfkey"><a href="#" onclick="return pfkey(24)">PF24</a></div>  
42 -<div class="pfkey"><a href="#" onclick="return eraseinput()">Clear</a></div>  
43 -</div>  
44 -</body>  
45 -</html>  
android/res/raw/jsmain.js
@@ -1,85 +0,0 @@ @@ -1,85 +0,0 @@
1 -  
2 -function setupWindow()  
3 -{  
4 - var input = document.getElementsByTagName("input");  
5 -  
6 - window.onkeypress = function()  
7 - {  
8 - if(event.keyCode == 13)  
9 - {  
10 - xmit();  
11 - return false;  
12 - }  
13 - return true;  
14 - }  
15 -  
16 - for(var i=0;i<input.length;i++)  
17 - {  
18 - if(input[i].name.substr(0,2) == "PF")  
19 - {  
20 - input[i].pfkey = parseInt(input[i].name.substr(3));  
21 -  
22 - input[i].onclick = function()  
23 - {  
24 - pw3270.pfkey(this.pfkey);  
25 - }  
26 - }  
27 -  
28 - }  
29 -  
30 -}  
31 -  
32 -function terminalUpdate()  
33 -{  
34 - if(pw3270.isConnected())  
35 - {  
36 - document.getElementById("terminal").innerHTML = pw3270.getscreencontents();  
37 - document.getElementById("pfbar").style.visible = "visible";  
38 - document.getElementById("terminal").style.visible = "visible";  
39 - }  
40 - else  
41 - {  
42 - document.getElementById("pfbar").style.visible = "hidden";  
43 - document.getElementById("terminal").style.visible = "hidden";  
44 - document.getElementById("pfbar").innerHTML = "";  
45 - document.getElementById("terminal").innerHTML = "";  
46 - }  
47 -  
48 - setupWindow();  
49 - pw3270.ready();  
50 -}  
51 -  
52 -function pfkey(id)  
53 -{  
54 - pw3270.busy();  
55 - pw3270.pfkey(id);  
56 - return false;  
57 -}  
58 -  
59 -function xmit()  
60 -{  
61 - var form = document.getElementById("form3270");  
62 -  
63 - pw3270.busy();  
64 -  
65 - if(form != undefined)  
66 - {  
67 - for(var i=0;i < form.elements.length;i++)  
68 - {  
69 - if(form.elements[i].name.substr(0,1) == "F")  
70 - {  
71 - var offset = parseInt(form.elements[i].name.substr(1),10);  
72 - pw3270.setStringAt(offset,form.elements[i].value);  
73 - }  
74 - }  
75 - }  
76 -  
77 - pw3270.sendEnter();  
78 -  
79 - return false;  
80 -}  
81 -  
82 -function eraseinput()  
83 -{  
84 - return false;  
85 -}  
android/res/raw/theme.css
@@ -1,479 +0,0 @@ @@ -1,479 +0,0 @@
1 -  
2 -body  
3 -{  
4 - background-color: black;  
5 - color: green;  
6 -}  
7 -  
8 -body, input  
9 -{  
10 - font-family: courier;  
11 - font-size: 20px;  
12 -}  
13 -  
14 -#terminal  
15 -{  
16 - width: 49em;  
17 -}  
18 -  
19 -input  
20 -{  
21 - border: none;  
22 - padding: 0px;  
23 - background-color: black;  
24 - color: #ffff00;  
25 - margin-left: 0.5em;  
26 - margin-right: 0.5em;  
27 - border-radius: 3px;  
28 - outline:none;  
29 -}  
30 -  
31 -  
32 -input:focus  
33 -{  
34 - background-color: #303030;  
35 -}  
36 -  
37 -input[type="text"], input[type="password"], input[type="text"]:focus, input[type="password"]:focus  
38 -{  
39 - background-color: #303030;  
40 -}  
41 -  
42 -#terminal  
43 -{  
44 - z-index: 10;  
45 - background-color: black;  
46 -}  
47 -  
48 -#pfbar  
49 -{  
50 - z-index: -1;  
51 - width: 48em;  
52 - background: black;  
53 - color: white;  
54 - text-align: left;  
55 - border-top: 1px solid #fff;  
56 -}  
57 -  
58 -a  
59 -{  
60 - text-decoration: none;  
61 - color: black;  
62 -}  
63 -  
64 -.pfkey  
65 -{  
66 - margin: 1px;  
67 - background: gray;  
68 - color: black;  
69 - width: 3.9em;  
70 - border: 1px solid darkgray;  
71 - text-decoration: none;  
72 - font-size: 15px;  
73 - font-family: arial;  
74 - display: inline-block;  
75 - text-align: center;  
76 - border-radius: 3px;  
77 -}  
78 -  
79 -.IW001  
80 -{  
81 - width: 1.5em;  
82 -}  
83 -  
84 -.IW002  
85 -{  
86 - width: 1.3em;  
87 -}  
88 -  
89 -.IW003  
90 -{  
91 - width: 2.0em;  
92 -}  
93 -  
94 -.IW004  
95 -{  
96 - width: 2.6em;  
97 -}  
98 -  
99 -.IW005  
100 -{  
101 - width: 3.2em;  
102 -}  
103 -  
104 -.IW006  
105 -{  
106 - width: 3.8em;  
107 -}  
108 -  
109 -.IW007  
110 -{  
111 - width: 4.4em;  
112 -}  
113 -  
114 -.IW008  
115 -{  
116 - width: 5em;  
117 -}  
118 -  
119 -.IW009  
120 -{  
121 - width: 5.6em;  
122 -}  
123 -  
124 -.IW010  
125 -{  
126 - width: 6.2em;  
127 -}  
128 -  
129 -.IW011  
130 -{  
131 - width: 6.8em;  
132 -}  
133 -  
134 -.IW012  
135 -{  
136 - width: 7.4em;  
137 -}  
138 -  
139 -.IW013  
140 -{  
141 - width: 8.0em;  
142 -}  
143 -  
144 -.IW014  
145 -{  
146 - width: 8.6em;  
147 -}  
148 -  
149 -.IW015  
150 -{  
151 - width: 9.2em;  
152 -}  
153 -  
154 -.IW016  
155 -{  
156 - width: 9.8em;  
157 -}  
158 -  
159 -.IW017  
160 -{  
161 - width: 10.4em;  
162 -}  
163 -  
164 -.IW018  
165 -{  
166 - width: 11em;  
167 -}  
168 -  
169 -.IW019  
170 -{  
171 - width: 11.6em;  
172 -}  
173 -  
174 -.IW020  
175 -{  
176 - width: 12.2em;  
177 -}  
178 -  
179 -.IW021  
180 -{  
181 - width: 12.8em;  
182 -}  
183 -  
184 -.IW022  
185 -{  
186 - width: 13.4em;  
187 -}  
188 -  
189 -.IW023  
190 -{  
191 - width: 14em;  
192 -}  
193 -  
194 -.IW024  
195 -{  
196 - width: 14.6em;  
197 -}  
198 -  
199 -.IW025  
200 -{  
201 - width: 15.2em;  
202 -}  
203 -  
204 -.IW026  
205 -{  
206 - width: 15.8em;  
207 -}  
208 -  
209 -.IW027  
210 -{  
211 - width: 16.4em;  
212 -}  
213 -  
214 -.IW028  
215 -{  
216 - width: 17em;  
217 -}  
218 -  
219 -.IW029  
220 -{  
221 - width: 17.6em;  
222 -}  
223 -  
224 -.IW030  
225 -{  
226 - width: 18.2em;  
227 -}  
228 -  
229 -.IW031  
230 -{  
231 - width: 18.8em;  
232 -}  
233 -  
234 -.IW032  
235 -{  
236 - width: 19.4em;  
237 -}  
238 -  
239 -.IW033  
240 -{  
241 - width: 20em;  
242 -}  
243 -  
244 -.IW034  
245 -{  
246 - width: 20.6em;  
247 -}  
248 -  
249 -.IW035  
250 -{  
251 - width: 21.2em;  
252 -}  
253 -  
254 -.IW036  
255 -{  
256 - width: 21.8em;  
257 -}  
258 -  
259 -.IW037  
260 -{  
261 - width: 22.4em;  
262 -}  
263 -  
264 -.IW038  
265 -{  
266 - width: 23em;  
267 -}  
268 -  
269 -.IW039  
270 -{  
271 - width: 23.6em;  
272 -}  
273 -  
274 -.IW040  
275 -{  
276 - width: 24.2em;  
277 -}  
278 -  
279 -.IW041  
280 -{  
281 - width: 24.8em;  
282 -}  
283 -  
284 -.IW042  
285 -{  
286 - width: 25.4em;  
287 -}  
288 -  
289 -.IW043  
290 -{  
291 - width: 26em;  
292 -}  
293 -  
294 -.IW044  
295 -{  
296 - width: 26.6em;  
297 -}  
298 -  
299 -.IW045  
300 -{  
301 - width: 27.2em;  
302 -}  
303 -  
304 -.IW046  
305 -{  
306 - width: 27.8em;  
307 -}  
308 -  
309 -.IW047  
310 -{  
311 - width: 28.4em;  
312 -}  
313 -  
314 -.IW048  
315 -{  
316 - width: 29em;  
317 -}  
318 -  
319 -.IW049  
320 -{  
321 - width: 29.6em;  
322 -}  
323 -  
324 -.IW050  
325 -{  
326 - width: 30.2em;  
327 -}  
328 -  
329 -.IW051  
330 -{  
331 - width: 30.8em;  
332 -}  
333 -  
334 -.IW052  
335 -{  
336 - width: 31.4em;  
337 -}  
338 -  
339 -.IW053  
340 -{  
341 - width: 32em;  
342 -}  
343 -  
344 -.IW054  
345 -{  
346 - width: 32.6em;  
347 -}  
348 -  
349 -.IW055  
350 -{  
351 - width: 33.2em;  
352 -}  
353 -  
354 -.IW056  
355 -{  
356 - width: 33.8em;  
357 -}  
358 -  
359 -.IW057  
360 -{  
361 - width: 34.4em;  
362 -}  
363 -  
364 -.IW058  
365 -{  
366 - width: 35em;  
367 -}  
368 -  
369 -.IW059  
370 -{  
371 - width: 35.6em;  
372 -}  
373 -  
374 -.IW060  
375 -{  
376 - width: 36.2em;  
377 -}  
378 -  
379 -.IW061  
380 -{  
381 - width: 36.8em;  
382 -}  
383 -  
384 -.IW062  
385 -{  
386 - width: 37.4em;  
387 -}  
388 -  
389 -.IW063  
390 -{  
391 - width: 38em;  
392 -}  
393 -  
394 -.IW064  
395 -{  
396 - width: 38.6em;  
397 -}  
398 -  
399 -.IW065  
400 -{  
401 - width: 39.2em;  
402 -}  
403 -  
404 -.IW066  
405 -{  
406 - width: 39.8em;  
407 -}  
408 -  
409 -.IW067  
410 -{  
411 - width: 40.4em;  
412 -}  
413 -  
414 -.IW068  
415 -{  
416 - width: 41em;  
417 -}  
418 -  
419 -.IW069  
420 -{  
421 - width: 41.6em;  
422 -}  
423 -  
424 -.IW070  
425 -{  
426 - width: 42.2em;  
427 -}  
428 -  
429 -.IW071  
430 -{  
431 - width: 42.8em;  
432 -}  
433 -  
434 -.IW072  
435 -{  
436 - width: 43.4em;  
437 -}  
438 -  
439 -.IW073  
440 -{  
441 - width: 44em;  
442 -}  
443 -  
444 -.IW074  
445 -{  
446 - width: 44.6em;  
447 -}  
448 -  
449 -.IW075  
450 -{  
451 - width: 45.2em;  
452 -}  
453 -  
454 -.IW076  
455 -{  
456 - width: 45.8em;  
457 -}  
458 -  
459 -.IW077  
460 -{  
461 - width: 46.4em;  
462 -}  
463 -  
464 -.IW078  
465 -{  
466 - width: 47em;  
467 -}  
468 -  
469 -.IW079  
470 -{  
471 - width: 47.6em;  
472 -}  
473 -  
474 -.IW080  
475 -{  
476 - margin-left: 0px;  
477 - margin-right: 0px;  
478 - width: 48em;  
479 -}  
android/res/values/drawables.xml
@@ -1,4 +0,0 @@ @@ -1,4 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>  
2 -<resources>  
3 -  
4 -</resources>  
android/res/values/strings.xml
@@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>  
2 -<resources>  
3 - <string name="app_name">PW3270</string>  
4 - <string-array name="program_msg">  
5 - <item></item>  
6 - <item>X System</item>  
7 - <item>X Aguarde</item>  
8 - <item>Conectado</item>  
9 - <item>Desconectado</item>  
10 - <item>X Aguardando</item>  
11 - <item>X -f</item>  
12 - <item>X Protegido</item>  
13 - <item>X Numérico</item>  
14 - <item>X Overflow</item>  
15 - <item>X Inhibit</item>  
16 - <item>X Lock</item>  
17 - <item>X</item>  
18 - <item>X Resolvendo</item>  
19 - <item>X Conectando</item>  
20 - </string-array>  
21 - <string name="wait">Em processamento</string>  
22 -  
23 -  
24 -</resources>  
25 \ No newline at end of file 0 \ No newline at end of file
android/res/xml/preferences.xml
@@ -1,60 +0,0 @@ @@ -1,60 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>  
2 -  
3 -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
4 -  
5 - <PreferenceCategory  
6 - android:title="Configuração pw3270"  
7 - android:key="host_category">  
8 -  
9 - <EditTextPreference  
10 - android:key="hostname"  
11 - android:title="Endereço do host"  
12 - android:summary="Define o endereço do host a conectar"  
13 - android:dialogTitle="Endereço do servidor"  
14 - android:dialogMessage="Informe nome do servidor"  
15 - android:defaultValue="" />  
16 -  
17 - <EditTextPreference  
18 - android:key="port"  
19 - android:title="Porta a conectar"  
20 - android:summary="Define a porta a conectar"  
21 - android:dialogTitle="Porta de conexão"  
22 - android:dialogMessage="Informe a porta para conexão"  
23 - android:defaultValue="23" />  
24 -  
25 - <CheckBoxPreference  
26 - android:key="ssl"  
27 - android:summaryOff="Não usar SSL nas conexões ao host"  
28 - android:summaryOn="Usar SSL nas conexões ao host"  
29 - android:title="Conexão segura"  
30 - android:defaultValue="false"  
31 - />  
32 -  
33 - <CheckBoxPreference  
34 - android:key="autoconnect"  
35 - android:summaryOn="Conectar ao iniciar"  
36 - android:summaryOff="Não conectar ao iniciar"  
37 - android:title="Conecta ao host ao iniciar"  
38 - android:defaultValue="true"  
39 - />  
40 -  
41 - <CheckBoxPreference  
42 - android:key="reconnect"  
43 - android:summaryOn="Reconectar automaticamente"  
44 - android:summaryOff="Não reconectar automaticamente"  
45 - android:title="Reconexão automática"  
46 - android:defaultValue="false"  
47 - />  
48 -  
49 - <EditTextPreference  
50 - android:key="logonstring"  
51 - android:title="String de conexão"  
52 - android:summary="Define texto a enviar ao conectar"  
53 - android:dialogTitle="String de conexão"  
54 - android:dialogMessage="Informe texto a enviar logo após a conexão"  
55 - android:defaultValue="" />  
56 -  
57 - </PreferenceCategory>  
58 -  
59 -</PreferenceScreen>  
60 -  
android/src/br/com/bb/pw3270/PW3270Activity.java
@@ -1,227 +0,0 @@ @@ -1,227 +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 PW3270Activity.hava e possui - linhas de  
22 - * código.  
23 - *  
24 - * Contatos:  
25 - *  
26 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
27 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
28 - *  
29 - */  
30 -  
31 -package br.com.bb.pw3270;  
32 -  
33 -import android.app.Activity;  
34 -import android.app.AlertDialog;  
35 -import android.os.Bundle;  
36 -import android.util.Log;  
37 -import android.content.Intent;  
38 -import android.content.res.*;  
39 -import android.webkit.WebResourceResponse;  
40 -import android.webkit.WebView;  
41 -import android.webkit.WebViewClient;  
42 -import android.app.ProgressDialog;  
43 -import android.view.Menu;  
44 -import android.view.MenuInflater;  
45 -import android.view.MenuItem;  
46 -import android.widget.ImageView;  
47 -import android.widget.TextView;  
48 -import android.content.Context;  
49 -import android.view.LayoutInflater;  
50 -import android.view.View;  
51 -import android.view.ViewGroup;  
52 -  
53 -// import java.io.InputStream;  
54 -  
55 -// import android.app.Dialog;  
56 -  
57 -public class PW3270Activity extends Activity  
58 -{  
59 - private static final String TAG = "pw3270";  
60 - private static lib3270 host = null;  
61 -  
62 -  
63 - /** Called when the activity is first created. */  
64 - @Override  
65 - public void onCreate(Bundle savedInstanceState)  
66 - {  
67 - super.onCreate(savedInstanceState);  
68 - initUI();  
69 - }  
70 -  
71 - protected void initUI()  
72 - {  
73 - if(host == null)  
74 - {  
75 - host = new lib3270(this)  
76 - {  
77 - public String getProgramMessageText(int id)  
78 - {  
79 - String message[] = res.getStringArray(R.array.program_msg);  
80 - try  
81 - {  
82 - return message[id];  
83 - } catch(Exception e)  
84 - {  
85 - return e.getLocalizedMessage();  
86 - }  
87 -  
88 - }  
89 - };  
90 - }  
91 - else  
92 - {  
93 - host.setActivity(this);  
94 - }  
95 -  
96 - Log.d(TAG, "Initializing UI");  
97 -  
98 - host.dlgSysMessage = new ProgressDialog(this);  
99 - host.dlgSysMessage.setCancelable(false);  
100 - host.dlgSysMessage.setTitle(host.res.getString(R.string.wait));  
101 -  
102 - // Reference:  
103 - // http://developer.android.com/reference/android/webkit/WebView.html  
104 - host.setView(new WebView(this)).setWebViewClient(new WebViewClient()  
105 - {  
106 -  
107 - @Override  
108 - public WebResourceResponse shouldInterceptRequest(WebView view, String url)  
109 - {  
110 - int id = R.raw.index;  
111 - String mime = "text/html";  
112 - int pos = url.lastIndexOf("/");  
113 -  
114 - if(pos >=0 )  
115 - url = url.substring(pos+1);  
116 -  
117 - Log.i(TAG,"Loading [" + url + "]");  
118 -  
119 - if(url.equalsIgnoreCase("jsmain.js"))  
120 - {  
121 - id = R.raw.jsmain;  
122 - }  
123 - else if(url.equalsIgnoreCase("theme.css"))  
124 - {  
125 - mime = "text/css";  
126 - id = R.raw.theme;  
127 - }  
128 -  
129 - // http://developer.android.com/reference/android/webkit/WebResourceResponse.html  
130 - return new WebResourceResponse(mime,"utf-8",host.mainact.getResources().openRawResource(id));  
131 - }  
132 -  
133 - });  
134 -  
135 - setContentView(host.view);  
136 -  
137 - host.view.loadUrl("file:index.html");  
138 - }  
139 -  
140 - @Override  
141 - public boolean onCreateOptionsMenu(Menu menu)  
142 - {  
143 - MenuInflater inflater = getMenuInflater();  
144 - Log.d(TAG,"Popup menu");  
145 - inflater.inflate(R.layout.menu, menu);  
146 - return true;  
147 - }  
148 -  
149 - @Override  
150 - public boolean onOptionsItemSelected(MenuItem item)  
151 - {  
152 - // Handle item selection  
153 - switch (item.getItemId())  
154 - {  
155 - case R.id.connect:  
156 - host.connect();  
157 - break;  
158 -  
159 - case R.id.disconnect:  
160 - host.disconnect();  
161 - break;  
162 -  
163 - case R.id.settings:  
164 - Intent myIntent = new Intent(host.view.getContext(), SettingsActivity.class);  
165 - startActivityForResult(myIntent, 0);  
166 - break;  
167 -  
168 - case R.id.about:  
169 - showAboutDialog();  
170 - break;  
171 -  
172 - default:  
173 - return super.onOptionsItemSelected(item);  
174 - }  
175 - return true;  
176 -  
177 - }  
178 -  
179 - private void showAboutDialog()  
180 - {  
181 - AlertDialog.Builder builder;  
182 - AlertDialog alertDialog;  
183 - Context mContext = getApplicationContext();  
184 -  
185 - LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);  
186 -  
187 - View layout = inflater.inflate(R.layout.about, (ViewGroup) findViewById(R.id.layout_root));  
188 -  
189 - TextView text = (TextView) layout.findViewById(R.id.text);  
190 - text.setText(host.res.getString(R.string.app_name) + " Vrs " + host.getVersion() + "-" + host.getRevision());  
191 -  
192 - ImageView image = (ImageView) layout.findViewById(R.id.image);  
193 - image.setImageResource(R.drawable.ic_launcher);  
194 -  
195 - builder = new AlertDialog.Builder(this);  
196 - builder.setView(layout);  
197 - alertDialog = builder.create();  
198 -  
199 - alertDialog.show();  
200 - }  
201 -  
202 - @Override  
203 - public void onConfigurationChanged(Configuration newConfig)  
204 - {  
205 - Log.d(TAG, "Configuration Changed");  
206 - super.onConfigurationChanged(newConfig);  
207 - initUI();  
208 - }  
209 -  
210 - @Override  
211 - protected void onSaveInstanceState(Bundle outState)  
212 - {  
213 - super.onSaveInstanceState(outState);  
214 - // Save the state of the WebView  
215 - host.view.saveState(outState);  
216 - }  
217 -  
218 - @Override  
219 - protected void onRestoreInstanceState(Bundle savedInstanceState)  
220 - {  
221 - super.onRestoreInstanceState(savedInstanceState);  
222 - // Restore the state of the WebView  
223 - host.view.restoreState(savedInstanceState);  
224 - host.view.reload();  
225 - }  
226 -  
227 -}  
android/src/br/com/bb/pw3270/SettingsActivity.java
@@ -1,94 +0,0 @@ @@ -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 SettingsActivity.hava e possui - linhas de  
22 - * código.  
23 - *  
24 - * Contatos:  
25 - *  
26 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
27 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
28 - *  
29 - */  
30 -  
31 -package br.com.bb.pw3270;  
32 -  
33 -import android.os.Bundle;  
34 -import android.preference.Preference;  
35 -import android.preference.PreferenceFragment;  
36 -import android.app.Activity;  
37 -  
38 -public class SettingsActivity extends Activity  
39 -{  
40 - public static class SettingsFragment extends PreferenceFragment  
41 - {  
42 - private class stringSetting implements Preference.OnPreferenceChangeListener  
43 - {  
44 -  
45 - public stringSetting(Preference p)  
46 - {  
47 - String text = p.getSharedPreferences().getString(p.getKey(),"");  
48 -  
49 - if(text != "")  
50 - p.setSummary(text);  
51 -  
52 - p.setOnPreferenceChangeListener(this);  
53 - }  
54 -  
55 - public boolean onPreferenceChange(Preference p, Object value)  
56 - {  
57 - p.setSummary((String) value);  
58 - return true;  
59 - }  
60 - }  
61 -  
62 - @Override  
63 - public void onCreate(Bundle savedInstanceState)  
64 - {  
65 - super.onCreate(savedInstanceState);  
66 -  
67 - // Load the preferences from an XML resource  
68 - addPreferencesFromResource(R.xml.preferences);  
69 -  
70 - // Update summary from settings  
71 - new stringSetting(findPreference("hostname"));  
72 - new stringSetting(findPreference("port"));  
73 - new stringSetting(findPreference("logonstring"));  
74 -  
75 - }  
76 -  
77 -  
78 - }  
79 -  
80 - @Override  
81 - protected void onCreate(Bundle savedInstanceState)  
82 - {  
83 - super.onCreate(savedInstanceState);  
84 -  
85 - // Display the fragment as the main content.  
86 - getFragmentManager().beginTransaction()  
87 - .replace(android.R.id.content, new SettingsFragment())  
88 - .commit();  
89 - }  
90 -  
91 -}  
92 -  
93 -  
94 -  
android/src/br/com/bb/pw3270/lib3270.java
@@ -1,687 +0,0 @@ @@ -1,687 +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. 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 lib3270.java e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 -package br.com.bb.pw3270;  
30 -  
31 -import java.lang.Thread;  
32 -  
33 -import android.app.Activity;  
34 -import android.app.AlertDialog;  
35 -import android.app.ProgressDialog;  
36 -import android.content.SharedPreferences;  
37 -import android.content.res.Resources;  
38 -import android.os.Handler;  
39 -import android.os.Message;  
40 -import android.os.CountDownTimer;  
41 -import android.preference.PreferenceManager;  
42 -import android.util.Log;  
43 -import android.webkit.WebChromeClient;  
44 -// import android.webkit.WebResourceResponse;  
45 -import android.webkit.WebView;  
46 -// import android.webkit.WebViewClient;  
47 -import javax.net.SocketFactory;  
48 -import java.net.Socket;  
49 -import javax.net.ssl.SSLSocketFactory;  
50 -import java.io.DataInputStream;  
51 -import java.io.DataOutputStream;  
52 -  
53 -// import java.util.Vector;  
54 -  
55 -public abstract class lib3270  
56 -{  
57 - private static final String TAG = "lib3270";  
58 -  
59 - protected int screenState = -1;  
60 -  
61 - private lib3270 hSession = this;  
62 -  
63 - public ProgressDialog dlgSysMessage = null;  
64 - public WebView view = null;  
65 - public Resources res = null;  
66 - public Activity mainact = null;  
67 -  
68 - private static boolean initialized = false;  
69 - private static NetworkThread mainloop = null;  
70 - private static boolean connected = false;  
71 - private static boolean reconnect = false;  
72 - private static boolean refresh = true;  
73 - private static Socket sock = null;  
74 -  
75 - private static DataOutputStream outData = null;  
76 - private static DataInputStream inData = null;  
77 -  
78 - protected SharedPreferences settings;  
79 -  
80 - // Define the Handler that receives messages from the thread  
81 - final Handler mHandler = new Handler()  
82 - {  
83 - public void handleMessage(Message msg)  
84 - {  
85 - switch (msg.what)  
86 - {  
87 - case 0: // Connection lost  
88 - reload();  
89 - if(!hSession.isConnected() && settings.getString("hostname","") != "" && settings.getBoolean("reconnect",false))  
90 - {  
91 - Log.d(TAG,"Connection lost, reconnecting");  
92 - connect();  
93 - }  
94 - break;  
95 -  
96 - case 1: // OIA message has changed  
97 - showProgramMessage(msg.arg1);  
98 - break;  
99 -  
100 - case 2: // Screen changed  
101 - Log.d(TAG, "Screen changed");  
102 - screenState = 1;  
103 - break;  
104 -  
105 - case 3: // Popup  
106 - popupMessageInfo popup = (popupMessageInfo) msg.obj;  
107 - showPopupMessage(msg.arg1, popup.title, popup.text, popup.info);  
108 - break;  
109 -  
110 - case 4: // erase  
111 - if(screenState != 2)  
112 - {  
113 - screenState = 2;  
114 - reload();  
115 - }  
116 - break;  
117 -  
118 - case 5: // ctlr_done  
119 - break;  
120 -  
121 - case 7: // ready  
122 - if(initialized)  
123 - {  
124 - dlgSysMessage.hide();  
125 - }  
126 - else  
127 - {  
128 - initialized = true;  
129 - if(settings.getString("hostname","") != "" && settings.getBoolean("autoconnect",false))  
130 - connect();  
131 - else  
132 - dlgSysMessage.hide();  
133 - }  
134 - break;  
135 -  
136 - case 8: // busy  
137 - break;  
138 -  
139 - case 9: // Create timer  
140 - new timer(((Long) msg.obj).longValue(), msg.arg1);  
141 - break;  
142 -  
143 -/*  
144 - case 10: // Run autostart  
145 - String str = settings.getString("logonstring","");  
146 - Log.v(TAG, "Logon string is \"" + str + "\"");  
147 - if( str != "")  
148 - runStartupString(str);  
149 - break;  
150 -*/  
151 - }  
152 - }  
153 - };  
154 -  
155 -  
156 - static  
157 - {  
158 - System.loadLibrary("3270");  
159 - }  
160 -  
161 - lib3270(Activity act)  
162 - {  
163 - String toggle[] = { "dstrace", "screentrace", "eventtrace", "reconnect" };  
164 -  
165 - setActivity(act);  
166 - this.screenState = -1;  
167 -  
168 - for(int f = 0; f < toggle.length; f++)  
169 - setToggle(toggle[f],settings.getBoolean(toggle[f],false));  
170 -  
171 - }  
172 -  
173 - private class timer extends CountDownTimer  
174 - {  
175 - private long id;  
176 - private lib3270 terminal;  
177 -  
178 - timer(long timer_id, int msec)  
179 - {  
180 - super(msec, msec);  
181 -  
182 - terminal = hSession;  
183 - id = timer_id;  
184 -  
185 - Log.d(TAG, "Timer " + id + " set to " + msec + " ms");  
186 -  
187 - this.start();  
188 - }  
189 -  
190 - public void onTick(long millisUntilFinished)  
191 - {  
192 - }  
193 -  
194 - public void onFinish()  
195 - {  
196 - Log.d(TAG, "Timer " + id + " finished");  
197 -  
198 - Thread t = new Thread()  
199 - {  
200 - public void run()  
201 - {  
202 - terminal.timerFinish(id);  
203 - }  
204 - };  
205 -  
206 - t.start();  
207 - }  
208 -  
209 - }  
210 -  
211 - private class popupMessageInfo  
212 - {  
213 - public String title;  
214 - public String text;  
215 - public String info;  
216 -  
217 - popupMessageInfo(String title, String text, String info)  
218 - {  
219 - this.title = title;  
220 - this.text = text;  
221 - this.info = info;  
222 - }  
223 - }  
224 -  
225 - protected int send_data(byte[] data, int len)  
226 - {  
227 - Log.d(TAG, "Bytes a enviar: " + len);  
228 -  
229 - try  
230 - {  
231 - outData.write(data, 0, len);  
232 - outData.flush();  
233 - return len;  
234 - }  
235 - catch (Exception e)  
236 - {  
237 - String msg = e.getLocalizedMessage();  
238 -  
239 - if (msg == null)  
240 - msg = e.toString();  
241 -  
242 - if (msg == null)  
243 - msg = "";  
244 -  
245 - Log.d(TAG, "Erro ao enviar dados: " + msg);  
246 -  
247 - postPopup(1, "Desconectado", "Erro de comunicação ao enviar dados", msg);  
248 -  
249 - net_cleanup();  
250 - }  
251 - return -1;  
252 - }  
253 -  
254 - // Main Thread  
255 - private class NetworkThread extends Thread  
256 - {  
257 - private boolean connect()  
258 - {  
259 - // Connecta no host  
260 - SocketFactory socketFactory;  
261 - String hostname = settings.getString("hostname","");  
262 - Integer port = Integer.valueOf(settings.getString("port", "23"));  
263 -  
264 - if (hostname == "" || port == 0)  
265 - return false;  
266 -  
267 - postMessage(1, 14, 0);  
268 -  
269 - if(settings.getBoolean("ssl",false))  
270 - {  
271 - // Host é SSL  
272 - socketFactory = SSLSocketFactory.getDefault();  
273 - Log.v(TAG,"Conecting with SSLSocketFactory");  
274 - }  
275 - else  
276 - {  
277 - Log.v(TAG,"Conecting with SocketFactory");  
278 - socketFactory = SocketFactory.getDefault();  
279 - }  
280 -  
281 - try  
282 - {  
283 - Log.v(TAG,"Getting socket for " + hostname + ":" + port.toString());  
284 - sock = socketFactory.createSocket(hostname, port);  
285 -  
286 - sock.setKeepAlive(true);  
287 - // sock.setSoTimeout(1000);  
288 -  
289 - outData = new DataOutputStream(sock.getOutputStream());  
290 - inData = new DataInputStream(sock.getInputStream());  
291 - }  
292 - catch (Exception e)  
293 - {  
294 - String msg = e.getLocalizedMessage();  
295 -  
296 - if (msg == null)  
297 - msg = e.toString();  
298 -  
299 - if (msg == null)  
300 - msg = "";  
301 -  
302 - Log.i(TAG, "Erro ao conectar: " + msg);  
303 -  
304 - postPopup(0, "Erro na conexão", "Não foi possível conectar", msg);  
305 -  
306 - return false;  
307 - }  
308 -  
309 - Log.i(TAG, "Conectado ao host");  
310 - return true;  
311 -  
312 - }  
313 -  
314 - public void run()  
315 - {  
316 - info(TAG, "Network thread started");  
317 - reconnect = connected = connect();  
318 -  
319 - if (connected)  
320 - {  
321 - set_connection_status(true);  
322 -  
323 - try  
324 - {  
325 - sock.setSoTimeout(100);  
326 - } catch (Exception e) { connected = false; }  
327 -  
328 - while (connected && sock.isConnected() )  
329 - {  
330 - try  
331 - {  
332 - byte[] in = new byte[16384];  
333 -  
334 - int sz = inData.read(in, 0, 16384);  
335 -  
336 - if (sz > 0)  
337 - procRecvdata(in,sz);  
338 -  
339 - } catch (Exception e) { }  
340 -  
341 - }  
342 -  
343 - if(connected)  
344 - {  
345 - postPopup(1, "Desconectado", "Erro de comunicação ao receber dados", "");  
346 - connected = false;  
347 - }  
348 - }  
349 -  
350 - Log.v(TAG, "Exiting communication thread");  
351 -  
352 - try  
353 - {  
354 - sock.close();  
355 - }  
356 - catch (Exception e) { }  
357 -  
358 - sock = null;  
359 - outData = null;  
360 - inData = null;  
361 -  
362 - set_connection_status(false);  
363 -  
364 - mainloop = null;  
365 - info(TAG, "Network thread stopped");  
366 -  
367 - if(reconnect)  
368 - postMessage(0, 0, 0); // Pede por reconexão  
369 -  
370 - }  
371 -  
372 - }  
373 -  
374 - public void postMessage(int what, int arg1, int arg2)  
375 - {  
376 - Message msg = mHandler.obtainMessage();  
377 - msg.what = what;  
378 - msg.arg1 = arg1;  
379 - msg.arg2 = arg2;  
380 - mHandler.sendMessage(msg);  
381 - }  
382 -  
383 - public void postPopup(int type, String title, String text, String info)  
384 - {  
385 - Message msg = mHandler.obtainMessage();  
386 - msg.what = 3;  
387 - msg.arg1 = type;  
388 - msg.obj = new popupMessageInfo(title, text, info);  
389 - mHandler.sendMessage(msg);  
390 - }  
391 -  
392 - void setActivity(Activity act)  
393 - {  
394 - this.mainact = act;  
395 - this.settings = PreferenceManager.getDefaultSharedPreferences(act);  
396 - this.res = act.getResources();  
397 - }  
398 -  
399 - WebView setView(WebView v)  
400 - {  
401 - this.view = v;  
402 -  
403 - view.addJavascriptInterface(this, "pw3270");  
404 -  
405 - view.setWebChromeClient(new WebChromeClient());  
406 -  
407 - view.getSettings().setBuiltInZoomControls(true);  
408 - view.getSettings().setSupportZoom(true);  
409 - view.getSettings().setUseWideViewPort(true);  
410 - view.getSettings().setLoadWithOverviewMode(true);  
411 - view.getSettings().setJavaScriptEnabled(true);  
412 -  
413 - return view;  
414 -  
415 - }  
416 -  
417 - public abstract String getProgramMessageText(int id);  
418 -  
419 - /*---[ Signal methods ]--------------------------------------------------*/  
420 -  
421 - protected void showProgramMessage(int id)  
422 - {  
423 - switch(id)  
424 - {  
425 - case 0: // LIB3270_MESSAGE_NONE  
426 - if(screenState != 0)  
427 - {  
428 - screenState = 0;  
429 - reload();  
430 - }  
431 - break;  
432 -  
433 - case 4: // LIB3270_MESSAGE_DISCONNECTED  
434 - Log.v(TAG, "Status changed to disconnected");  
435 - connected = false;  
436 - net_cleanup();  
437 - reload();  
438 - break;  
439 -  
440 - case 3: // LIB3270_MESSAGE_CONNECTED  
441 - Log.v(TAG, "Status changed to connected");  
442 - break;  
443 -  
444 - // 01 LIB3270_MESSAGE_SYSWAIT  
445 - // 02 LIB3270_MESSAGE_TWAIT  
446 - // 03 LIB3270_MESSAGE_CONNECTED  
447 - // 05 LIB3270_MESSAGE_AWAITING_FIRST  
448 - // 06 LIB3270_MESSAGE_MINUS  
449 - // 07 LIB3270_MESSAGE_PROTECTED  
450 - // 08 LIB3270_MESSAGE_NUMERIC  
451 - // 09 LIB3270_MESSAGE_OVERFLOW  
452 - // 10 LIB3270_MESSAGE_INHIBIT  
453 - // 11 LIB3270_MESSAGE_KYBDLOCK  
454 - // 12 LIB3270_MESSAGE_X  
455 - // 13 LIB3270_MESSAGE_RESOLVING  
456 - // 14 LIB3270_MESSAGE_CONNECTING  
457 -  
458 - default:  
459 - dlgSysMessage.setMessage(getProgramMessageText(id));  
460 - dlgSysMessage.show();  
461 - }  
462 - }  
463 -  
464 - protected void showPopupMessage(int type, String title, String text, String info)  
465 - {  
466 - /*  
467 - Log.v(TAG,"Popup Message:");  
468 - Log.v(TAG,title);  
469 - Log.v(TAG,text);  
470 - Log.v(TAG,info);  
471 - */  
472 -  
473 - AlertDialog d = new AlertDialog.Builder(mainact).create();  
474 -  
475 - if(title != "")  
476 - d.setTitle(title);  
477 -  
478 - if(text != "")  
479 - d.setMessage(text);  
480 -  
481 - d.setCancelable(true);  
482 - dlgSysMessage.hide();  
483 - d.show();  
484 - }  
485 -  
486 - protected void info(String tag, String msg)  
487 - {  
488 - Log.i(tag, msg);  
489 - }  
490 -  
491 - protected void error(String tag, String msg)  
492 - {  
493 - Log.e(tag, msg);  
494 - }  
495 -  
496 - protected void reload()  
497 - {  
498 - view.reload();  
499 - }  
500 -  
501 - public void pfkey(int id)  
502 - {  
503 - sendPFkey(id);  
504 - }  
505 -  
506 - public void xmit()  
507 - {  
508 - sendEnter();  
509 - }  
510 -  
511 - public void ready()  
512 - {  
513 - postMessage(7, 0, 0);  
514 - }  
515 -  
516 - public void busy()  
517 - {  
518 - postMessage(8, 0, 0);  
519 - }  
520 -  
521 - /*  
522 - public void showProgressDialog(String msg)  
523 - {  
524 - }  
525 - */  
526 -  
527 - /*---[ External methods ]------------------------------------------------*/  
528 -  
529 - public int connect()  
530 - {  
531 - if(connected)  
532 - {  
533 - Log.v(TAG, "Already connected");  
534 - return -1;  
535 - }  
536 -  
537 - Log.v(TAG, "Connecting");  
538 - if (mainloop == null)  
539 - {  
540 - info(TAG, "Starting comm thread");  
541 - setStartupScript(settings.getString("logonstring",""));  
542 - mainloop = new NetworkThread();  
543 - mainloop.start();  
544 - return 0;  
545 - }  
546 - Log.v(TAG, "Comm thread already active during connect");  
547 - disconnect();  
548 -  
549 - return -1;  
550 - }  
551 -  
552 - private int net_cleanup()  
553 - {  
554 - connected = false;  
555 -/*  
556 - if(sock != null)  
557 - {  
558 - Thread t = new Thread()  
559 - {  
560 - public void run()  
561 - {  
562 - Log.v(TAG, "Stopping network activity");  
563 -  
564 - if(sock.isConnected())  
565 - {  
566 - try  
567 - {  
568 - sock.shutdownInput();  
569 - return;  
570 - }  
571 - catch(Exception e) { }  
572 - }  
573 -  
574 - if(!(sock == null && sock.isClosed()))  
575 - {  
576 - try  
577 - {  
578 - sock.close();  
579 - return;  
580 - }  
581 - catch(Exception e) { }  
582 - }  
583 - }  
584 - };  
585 -  
586 - t.start();  
587 - }  
588 - */  
589 - return 0;  
590 - }  
591 -  
592 - public int disconnect()  
593 - {  
594 - Log.v(TAG, "Disconnecting");  
595 - connected = reconnect = false;  
596 - net_cleanup();  
597 - return 0;  
598 - }  
599 -  
600 - public void setStringAt(int offset, String str)  
601 - {  
602 - refresh = false;  
603 - try {  
604 - setTextAt(offset, str.getBytes(getEncoding()), str.length());  
605 - } catch (Exception e) {  
606 - }  
607 - refresh = true;  
608 - }  
609 -  
610 -// @SuppressWarnings("unused")  
611 - public String getscreencontents()  
612 - {  
613 - String text;  
614 -  
615 - try  
616 - {  
617 - text = new String(getHTML(),getEncoding());  
618 - }  
619 - catch(Exception e)  
620 - {  
621 - Log.e(TAG,e.getLocalizedMessage());  
622 - return "";  
623 - }  
624 -  
625 - return text;  
626 - }  
627 -  
628 -  
629 - /*---[ Native calls ]----------------------------------------------------*/  
630 - private native int processEvents();  
631 -  
632 - // private native int do_connect();  
633 - private native void set_connection_status(boolean state);  
634 -  
635 - // Misc calls  
636 - public native String getEncoding();  
637 -  
638 - public native String getVersion();  
639 -  
640 - public native String getRevision();  
641 -  
642 - public native void setToggle(String name, boolean state);  
643 -  
644 - // Network I/O  
645 - public native void procRecvdata(byte[] data, int len);  
646 -  
647 - // Connect/Disconnect status  
648 - public native void setHost(String host);  
649 -  
650 - public native String getHost();  
651 -  
652 - public native boolean isConnected();  
653 -  
654 - public native boolean isTerminalReady();  
655 -  
656 - // Timers  
657 - protected void newTimer(long id, int msec)  
658 - {  
659 - Message msg = mHandler.obtainMessage();  
660 -  
661 - msg.what = 9; // MSG_CREATETIMER  
662 - msg.arg1 = msec;  
663 - msg.obj = new Long(id);  
664 -  
665 - mHandler.sendMessage(msg);  
666 -  
667 - }  
668 -  
669 - private native void timerFinish(long id);  
670 -  
671 - // Keyboard actions  
672 - public native void sendEnter();  
673 -  
674 - public native void sendPFkey(int id);  
675 -  
676 - // Get/Set screen contents  
677 - public native byte[] getHTML();  
678 -  
679 - public native byte[] getText();  
680 -  
681 - public native void setTextAt(int offset, byte[] str, int len);  
682 -  
683 - public native boolean in3270();  
684 -  
685 - public native void setStartupScript(String str);  
686 -  
687 -}  
android/stacktrace.sh
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -#!/bin/bash -x  
2 -adb logcat | ndk-stack -sym obj/local/armeabi  
3 -  
man/Makefile.in
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -man_MANS = pw3270.1 pw3270.5  
man/man1/pw3270.1
@@ -1,83 +0,0 @@ @@ -1,83 +0,0 @@
1 -.\" Process this file with  
2 -.\" groff -man -Tascii foo.1  
3 -.\"  
4 -.TH PW3270 1 "JUNE 2012" pw3270 "User Manual"  
5 -.SH NAME  
6 -pw3270 \- a modern tn3270 emulator  
7 -.SH SYNOPSIS  
8 -.B pw3270 [-a  
9 -.I application-name  
10 -.B ] [-h  
11 -.I hostname:port  
12 -.B ] [-s  
13 -.I session name  
14 -.B ]  
15 -.B ] [-c  
16 -.I session colors  
17 -.B ] [-t  
18 -.I system type  
19 -.B ] [-a  
20 -.I application name  
21 -.B ]  
22 -.SH DESCRIPTION  
23 -.B pw3270  
24 -is a modern, GTK-based, completely free tn3270 emulator.  
25 -  
26 -Based on the original x3270 code by Paul Mattes, it was created originally for Banco do Brasil. It's now an official Brazilian Government Public Software project, and is used worldwide.  
27 -  
28 -pw3270 is fully themable, and each element on the screen can be individually customized through the configuration files. It also supports all kinds of monospaced TrueType and bitmap fonts your system already supports.  
29 -  
30 -pw3270 supports many advanced clipboard features, allowing you to copy and paste data on forms, respecting the individual fields and positions on screen.  
31 -  
32 -File transfers are supported, for uploads and downloads.  
33 -  
34 -Printing is implemented using the native GTK print dialogs.  
35 -  
36 -  
37 -In addition to the modern GUI, a development library  
38 -.BR lib3270 (3)  
39 -has been created to allow you to create your own programs using the 3270 protocol.  
40 -  
41 -.SH OPTIONS  
42 -.IP "--help"  
43 -Shows the available options.  
44 -.IP "-h hostname:port"  
45 -Connects to the host and port specified. Use the form  
46 -.I "L:hostname:port"  
47 -for a secure (SSL) connection.  
48 -.IP "-a application-name"  
49 -Specifies an alternate application name. This is useful if you want to name each host window differently (with the service name or host address, for example). The default is to always name the window "pw3270".  
50 -.IP "-s session-name"  
51 -Specifies an anternate session-name. This affects some plugins who does IPC communications, like the dbus one.  
52 -.IP "-c colors"  
53 -Change the response to a Query(Color); when 8 pw3270 will respond with a list of 8 supported colors; when 16 the response will be a list of the 16 standard colors.  
54 -.IP "-t System type"  
55 -Change the host type parameter; this afects the file transfer (TSO or VM) and, for AS-400, the PFkey action.  
56 -.SH FILES  
57 -.IP "-l Send messages to syslog"  
58 -Send application messages to system log.  
59 -.IP "-S toggle1,toggle2,...,toggleN"  
60 -Turn the informed toggles "ON"  
61 -.IP "-R toggle1,toggle2,...,toggleN"  
62 -Turn the informed toggles "OFF"  
63 -.I /etc/pw3270.conf  
64 -.RS  
65 -The system wide configuration file. See  
66 -.BR pw3270 (5)  
67 -for further details.  
68 -.RE  
69 -.I ~/.config/pw3270.conf  
70 -.RS  
71 -Per user configuration file. See  
72 -.BR pw3270 (5)  
73 -for further details.  
74 -.SH AUTHORS  
75 -Perry Werneck <perry.werneck at gmail dot com>  
76 -  
77 -Erico Mendonca <erico.mendonca at gmail dot com>  
78 -  
79 -The official project page is located at http://www.softwarepublico.gov.br/dotlrn/clubs/pw3270 .  
80 -  
81 -.SH "SEE ALSO"  
82 -.BR pw3270 (5)  
83 -  
man/man5/pw3270.5
@@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
1 -.\" Process this file with  
2 -.\" groff -man -Tascii foo.1  
3 -.\"  
4 -.TH PW3270 1 "JUNE 2012" pw3270 "User Manual"  
5 -.SH NAME  
6 -pw3270.conf \- configuration file for pw3270  
7 -.SH SYNOPSIS  
8 -This configuration file can be used to pre-customize some of pw3270's features.  
9 -  
10 -The order of precedence while searching for this file is:  
11 -.IP "/etc/pw3270.conf"  
12 -System-wide configuration.  
13 -  
14 -.IP "~/.config/pw3270.conf"  
15 -User-specific configuration.  
16 -  
17 -.SH SECTIONS  
18 -  
19 -The file follows a windows-style INI file format, with section name headers in square brackets, and parameters in the "name=value" syntax.  
20 -  
21 -.IP "Section: view"  
22 -  
23 -Contains configuration relative to the GUI elements.  
24 -  
25 -.I toolbar.default  
26 -.RS  
27 -Indicates whether the main toolbar is visible or not.  
28 -.B Default: true.  
29 -  
30 -.RE  
31 -.IP "Section: host"  
32 -  
33 -Contains configuration relative to the hosts available for the user to connect to.  
34 -  
35 -.I uri  
36 -.RS  
37 -Hostname or IP address, in the format hostname:port. Use s:hostname:port for SSL connections.  
38 -  
39 -.RE  
40 -  
41 -.SH AUTHORS  
42 -Perry Werneck <perry.werneck at gmail dot com>  
43 -  
44 -Erico Mendonca <erico.mendonca at gmail dot com>  
45 -  
46 -The official project page is located at http://www.softwarepublico.gov.br/dotlrn/clubs/pw3270 .  
47 -  
48 -.SH "SEE ALSO"  
49 -.BR pw3270 (1)  
50 -  
pw3270.komodoproject
@@ -1,254 +0,0 @@ @@ -1,254 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<!-- Komodo Project File - DO NOT EDIT -->  
3 -<project id="835c3792-90af-274e-8705-405cacf376e1" kpf_version="5" name="pw3270.komodoproject">  
4 -<preference-set idref="835c3792-90af-274e-8705-405cacf376e1">  
5 - <long id="caretStyle">1</long>  
6 - <long id="caretWidth">1</long>  
7 - <boolean id="checkDiskFile">1</boolean>  
8 - <boolean id="checkNetworkDiskFile">1</boolean>  
9 - <long id="codeintel_highlight_variables_auto_delay">250</long>  
10 - <boolean id="codeintel_highlight_variables_auto_keyboard">0</boolean>  
11 - <boolean id="codeintel_highlight_variables_auto_mouse">1</boolean>  
12 - <boolean id="codeintel_highlight_variables_match_prefix">0</boolean>  
13 - <long id="codeintel_highlight_variables_min_auto_length">2</long>  
14 - <boolean id="codeintel_highlight_variables_use_scope">1</boolean>  
15 - <boolean id="dedentOnColon">0</boolean>  
16 - <string id="defaultDateFormat">%25a %25b %25d %25H:%25M:%25S %25Y</string>  
17 - <string id="donotask_action_close_deleted_files"></string>  
18 - <string id="donotask_action_dragdrop_uri"></string>  
19 - <string id="donotask_action_reload_changed_files"></string>  
20 - <boolean id="donotask_buffer_conflicts_with_file_on_disk">0</boolean>  
21 - <boolean id="donotask_close_deleted_files">0</boolean>  
22 - <boolean id="donotask_dragdrop_uri">0</boolean>  
23 - <boolean id="donotask_reload_changed_files">0</boolean>  
24 - <boolean id="donotask_revert_buffer">0</boolean>  
25 - <boolean id="donotask_treat_large_documents_as_text">0</boolean>  
26 - <string id="editAutoIndentStyle">smart</string>  
27 - <long id="editAutoWrapColumn">80</long>  
28 - <boolean id="editBackspaceDedents">1</boolean>  
29 - <boolean id="editElectricBrace">1</boolean>  
30 - <boolean id="editFoldLines">1</boolean>  
31 - <string id="editFoldStyle">squaretree</string>  
32 - <boolean id="editRestoreFoldPoints">0</boolean>  
33 - <boolean id="editSmartCutCopyWithoutSelection">1</boolean>  
34 - <boolean id="editSmartSoftCharacters">1</boolean>  
35 - <boolean id="editTabCompletes">0</boolean>  
36 - <boolean id="editUseEdge">1</boolean>  
37 - <boolean id="editUseLinting">1</boolean>  
38 - <long id="editWordWrapIndentation">0</long>  
39 - <long id="editWordWrapMarker">0</long>  
40 - <long id="editWrapType">0</long>  
41 - <boolean id="enableSmartSoftCharactersInsideLine">0</boolean>  
42 - <boolean id="encodingAutoDetect">1</boolean>  
43 - <string id="encodingDefault">mac-roman</string>  
44 - <boolean id="encodingEnvironment">1</boolean>  
45 - <boolean id="encodingHTML">0</boolean>  
46 - <boolean id="encodingModeline">1</boolean>  
47 - <boolean id="encodingXMLDec">1</boolean>  
48 - <boolean id="foldSeparateBlockParts">0</boolean>  
49 - <boolean id="hyperlinksEnableGotoDefinition">1</boolean>  
50 - <boolean id="hyperlinksEnabled">1</boolean>  
51 - <string relative="path" id="import_dirname"></string>  
52 - <string id="import_exclude_matches">*.*~;*.bak;*.tmp;CVS;.#*;*.pyo;*.pyc;.svn;.git;.hg;.bzr;*%25*;tmp*.html;.DS_Store;*.swp;*.kpf;*.komodoproject;.komodotools;__pycache__</string>  
53 - <string id="import_include_matches"></string>  
54 - <boolean id="indentStringsAfterParens">0</boolean>  
55 - <long id="indentWidth">4</long>  
56 - <string id="jshintOptions"></string>  
57 - <string id="jshint_linter_chooser">default</string>  
58 - <string id="jshint_linter_specific"></string>  
59 - <string id="jslintOptions"></string>  
60 - <string id="jslint_linter_chooser">default</string>  
61 - <string id="jslint_linter_specific"></string>  
62 -<preference-set id="languages">  
63 -<preference-set id="languages/Ada">  
64 - <boolean id="Ada/newBOM">0</boolean>  
65 - <string id="Ada/newEncoding">Default Encoding</string>  
66 -</preference-set>  
67 -<preference-set id="languages/Apache">  
68 - <boolean id="Apache/newBOM">0</boolean>  
69 - <string id="Apache/newEncoding">Default Encoding</string>  
70 -</preference-set>  
71 -<preference-set id="languages/Baan">  
72 - <boolean id="Baan/newBOM">0</boolean>  
73 - <string id="Baan/newEncoding">Default Encoding</string>  
74 -</preference-set>  
75 -<preference-set id="languages/Batch">  
76 - <boolean id="Batch/newBOM">0</boolean>  
77 - <string id="Batch/newEncoding">Default Encoding</string>  
78 -</preference-set>  
79 -<preference-set id="languages/Bullant">  
80 - <boolean id="Bullant/newBOM">0</boolean>  
81 - <string id="Bullant/newEncoding">Default Encoding</string>  
82 -</preference-set>  
83 -<preference-set id="languages/C#">  
84 - <boolean id="C#/newBOM">0</boolean>  
85 - <string id="C#/newEncoding">Default Encoding</string>  
86 -</preference-set>  
87 -<preference-set id="languages/C++">  
88 - <boolean id="C++/newBOM">0</boolean>  
89 - <string id="C++/newEncoding">utf-8</string>  
90 -</preference-set>  
91 -<preference-set id="languages/CSS">  
92 - <boolean id="CSS/newBOM">0</boolean>  
93 - <string id="CSS/newEncoding">Default Encoding</string>  
94 -</preference-set>  
95 -<preference-set id="languages/Diff">  
96 - <boolean id="Diff/newBOM">0</boolean>  
97 - <string id="Diff/newEncoding">Default Encoding</string>  
98 -</preference-set>  
99 -<preference-set id="languages/Eiffel">  
100 - <boolean id="Eiffel/newBOM">0</boolean>  
101 - <string id="Eiffel/newEncoding">Default Encoding</string>  
102 -</preference-set>  
103 -<preference-set id="languages/Errors">  
104 - <boolean id="C++/newBOM">0</boolean>  
105 - <string id="C++/newEncoding">Default Encoding</string>  
106 -</preference-set>  
107 -<preference-set id="languages/Fortran">  
108 - <boolean id="Fortran/newBOM">0</boolean>  
109 - <string id="Fortran/newEncoding">Default Encoding</string>  
110 -</preference-set>  
111 -<preference-set id="languages/Fortran 77">  
112 - <boolean id="Fortran 77/newBOM">0</boolean>  
113 - <string id="Fortran 77/newEncoding">Default Encoding</string>  
114 -</preference-set>  
115 -<preference-set id="languages/HTML">  
116 - <boolean id="HTML/newBOM">0</boolean>  
117 - <string id="HTML/newEncoding">Default Encoding</string>  
118 -</preference-set>  
119 -<preference-set id="languages/IDL">  
120 - <boolean id="IDL/newBOM">0</boolean>  
121 - <string id="IDL/newEncoding">Default Encoding</string>  
122 -</preference-set>  
123 -<preference-set id="languages/Java">  
124 - <boolean id="Java/newBOM">0</boolean>  
125 - <string id="Java/newEncoding">Default Encoding</string>  
126 -</preference-set>  
127 -<preference-set id="languages/JavaScript">  
128 - <boolean id="JavaScript/newBOM">0</boolean>  
129 - <string id="JavaScript/newEncoding">Default Encoding</string>  
130 -</preference-set>  
131 -<preference-set id="languages/LaTeX">  
132 - <boolean id="LaTeX/newBOM">0</boolean>  
133 - <string id="LaTeX/newEncoding">Default Encoding</string>  
134 -</preference-set>  
135 -<preference-set id="languages/Lisp">  
136 - <boolean id="Lisp/newBOM">0</boolean>  
137 - <string id="Lisp/newEncoding">Default Encoding</string>  
138 -</preference-set>  
139 -<preference-set id="languages/Lua">  
140 - <boolean id="Lua/newBOM">0</boolean>  
141 - <string id="Lua/newEncoding">Default Encoding</string>  
142 -</preference-set>  
143 -<preference-set id="languages/Makefile">  
144 - <boolean id="Makefile/newBOM">0</boolean>  
145 - <string id="Makefile/newEncoding">Default Encoding</string>  
146 - <boolean id="useTabs">1</boolean>  
147 -</preference-set>  
148 -<preference-set id="languages/Matlab">  
149 - <boolean id="Matlab/newBOM">0</boolean>  
150 - <string id="Matlab/newEncoding">Default Encoding</string>  
151 -</preference-set>  
152 -<preference-set id="languages/PHP">  
153 - <boolean id="PHP/newBOM">0</boolean>  
154 - <string id="PHP/newEncoding">Default Encoding</string>  
155 -</preference-set>  
156 -<preference-set id="languages/Pascal">  
157 - <boolean id="Pascal/newBOM">0</boolean>  
158 - <string id="Pascal/newEncoding">Default Encoding</string>  
159 -</preference-set>  
160 -<preference-set id="languages/Perl">  
161 - <boolean id="Perl/newBOM">0</boolean>  
162 - <string id="Perl/newEncoding">Default Encoding</string>  
163 -</preference-set>  
164 -<preference-set id="languages/Python">  
165 - <boolean id="Python/newBOM">0</boolean>  
166 - <string id="Python/newEncoding">ascii</string>  
167 -</preference-set>  
168 -<preference-set id="languages/Python3">  
169 - <boolean id="Python3/newBOM">0</boolean>  
170 - <string id="Python3/newEncoding">ascii</string>  
171 -</preference-set>  
172 -<preference-set id="languages/RHTML">  
173 - <boolean id="RHTML/newBOM">0</boolean>  
174 - <string id="RHTML/newEncoding">Default Encoding</string>  
175 - <long id="indentWidth">2</long>  
176 -</preference-set>  
177 -<preference-set id="languages/Ruby">  
178 - <boolean id="Ruby/newBOM">0</boolean>  
179 - <string id="Ruby/newEncoding">Default Encoding</string>  
180 - <long id="indentWidth">2</long>  
181 -</preference-set>  
182 -<preference-set id="languages/SQL">  
183 - <boolean id="SQL/newBOM">0</boolean>  
184 - <string id="SQL/newEncoding">Default Encoding</string>  
185 -</preference-set>  
186 -<preference-set id="languages/Tcl">  
187 - <boolean id="Tcl/newBOM">0</boolean>  
188 - <string id="Tcl/newEncoding">Default Encoding</string>  
189 -</preference-set>  
190 -<preference-set id="languages/Text">  
191 - <boolean id="Text/newBOM">0</boolean>  
192 - <string id="Text/newEncoding">Default Encoding</string>  
193 -</preference-set>  
194 -<preference-set id="languages/VisualBasic">  
195 - <boolean id="VisualBasic/newBOM">0</boolean>  
196 - <string id="VisualBasic/newEncoding">utf-8</string>  
197 -</preference-set>  
198 -<preference-set id="languages/XML">  
199 - <boolean id="XML/newBOM">0</boolean>  
200 - <string id="XML/newEncoding">utf-8</string>  
201 -</preference-set>  
202 -<preference-set id="languages/XSLT">  
203 - <boolean id="XSLT/newBOM">0</boolean>  
204 - <string id="XSLT/newEncoding">utf-8</string>  
205 -</preference-set>  
206 -<preference-set id="languages/nnCrontab">  
207 - <boolean id="nnCrontab/newBOM">0</boolean>  
208 - <string id="nnCrontab/newEncoding">Default Encoding</string>  
209 -</preference-set>  
210 -</preference-set>  
211 - <boolean id="lintClearOnTextChange">0</boolean>  
212 - <long id="lintDelay">1000</long>  
213 - <boolean id="lintEOLs">1</boolean>  
214 - <boolean id="lintHTML5Lib">0</boolean>  
215 - <boolean id="lintHTMLTidy">1</boolean>  
216 - <boolean id="lintHTML_CheckWith_Perl_HTML_Lint">0</boolean>  
217 - <boolean id="lintHTML_CheckWith_Perl_HTML_Tidy">0</boolean>  
218 - <boolean id="lintJavaScriptEnableStrict">1</boolean>  
219 - <boolean id="lintJavaScriptEnableWarnings">1</boolean>  
220 - <boolean id="lintJavaScript_SpiderMonkey">1</boolean>  
221 - <boolean id="lintWithJSHint">0</boolean>  
222 - <boolean id="lintWithJSLint">0</boolean>  
223 - <boolean id="lint_coffee_script">1</boolean>  
224 - <boolean id="lint_python3_with_standard_python">1</boolean>  
225 - <boolean id="lint_python_with_pychecker">0</boolean>  
226 - <boolean id="lint_python_with_pyflakes">0</boolean>  
227 - <boolean id="lint_python_with_pylint">0</boolean>  
228 - <boolean id="lint_python_with_standard_python">1</boolean>  
229 - <string id="perl_lintOption">cw</string>  
230 - <boolean id="perl_lintOption_disableBeginBlocks">1</boolean>  
231 - <boolean id="perl_lintOption_includeCurrentDirForLinter">1</boolean>  
232 - <string id="perl_lintOption_perlCriticLevel">off</string>  
233 - <string id="pychecker_checking_rcfile"></string>  
234 - <string id="pychecker_wrapper_location"></string>  
235 - <string id="pylint_checking_rcfile"></string>  
236 - <string id="ruby_lintOption">cwT</string>  
237 - <boolean id="scrollEndAtLastLine">0</boolean>  
238 - <long id="scrollWidth">2000</long>  
239 - <boolean id="scrollWidthTracking">0</boolean>  
240 - <boolean id="select_most_recent_buffer_on_buffer_close">0</boolean>  
241 - <boolean id="showEOL">0</boolean>  
242 - <boolean id="showIndentationGuides">1</boolean>  
243 - <boolean id="showLineNumbers">1</boolean>  
244 - <boolean id="showWhitespace">0</boolean>  
245 - <long id="tabWidth">8</long>  
246 - <string id="tidy_accessibility">0</string>  
247 - <string id="tidy_configpath"></string>  
248 - <string id="tidy_errorlevel">errors</string>  
249 - <boolean id="useSmartTabs">1</boolean>  
250 - <boolean id="useTabs">1</boolean>  
251 - <string id="userEnvironmentStartupOverride"></string>  
252 - <long id="ySlop">5</long>  
253 -</preference-set>  
254 -</project>  
pw3270.xcodeproj/project.pbxproj
@@ -1,824 +0,0 @@ @@ -1,824 +0,0 @@
1 -// !$*UTF8*$!  
2 -{  
3 - archiveVersion = 1;  
4 - classes = {  
5 - };  
6 - objectVersion = 46;  
7 - objects = {  
8 -  
9 -/* Begin PBXFileReference section */  
10 - C21BB73815D940960093E2FA /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };  
11 - C23EFD5315D99E2D00673C59 /* updateChangeLog.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = updateChangeLog.sh; sourceTree = "<group>"; };  
12 - C272066315D7F88300CCCD22 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configure.ac; sourceTree = "<group>"; };  
13 - C272066715D7FBF700CCCD22 /* action_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = action_table.h; sourceTree = "<group>"; };  
14 - C272066815D7FBF700CCCD22 /* actions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actions.h; sourceTree = "<group>"; };  
15 - C272066915D7FBF700CCCD22 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };  
16 - C272066A15D7FBF700CCCD22 /* config.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = config.h.in; sourceTree = "<group>"; };  
17 - C272066B15D7FBF700CCCD22 /* filetransfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filetransfer.h; sourceTree = "<group>"; };  
18 - C272066C15D7FBF700CCCD22 /* html.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = html.h; sourceTree = "<group>"; };  
19 - C272066D15D7FBF700CCCD22 /* internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internals.h; sourceTree = "<group>"; };  
20 - C272066E15D7FBF700CCCD22 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };  
21 - C272066F15D7FBF700CCCD22 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = "<group>"; };  
22 - C272067015D7FBF700CCCD22 /* popup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popup.h; sourceTree = "<group>"; };  
23 - C272067115D7FBF700CCCD22 /* selection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = selection.h; sourceTree = "<group>"; };  
24 - C272067215D7FBF700CCCD22 /* session.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = session.h; sourceTree = "<group>"; };  
25 - C272067315D7FBF700CCCD22 /* stamp-h1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "stamp-h1"; sourceTree = "<group>"; };  
26 - C272067415D7FBF700CCCD22 /* trace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trace.h; sourceTree = "<group>"; };  
27 - C272067515D7FBF700CCCD22 /* lib3270.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lib3270.h; sourceTree = "<group>"; };  
28 - C272067715D7FBF700CCCD22 /* pw3270.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pw3270.h; sourceTree = "<group>"; };  
29 - C272067815D7FBF700CCCD22 /* rules.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = rules.mak; sourceTree = "<group>"; };  
30 - C272067915D7FBF700CCCD22 /* rules.mak.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rules.mak.in; sourceTree = "<group>"; };  
31 - C272067A15D7FBF700CCCD22 /* v3270.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = v3270.h; sourceTree = "<group>"; };  
32 - C272067D15D7FBF700CCCD22 /* mkfb */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = mkfb; sourceTree = "<group>"; };  
33 - C272067E15D7FBF700CCCD22 /* mkfb.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; path = mkfb.dSYM; sourceTree = "<group>"; };  
34 - C272068115D7FBF700CCCD22 /* ansi.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ansi.o; sourceTree = "<group>"; };  
35 - C272068215D7FBF700CCCD22 /* bounds.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = bounds.o; sourceTree = "<group>"; };  
36 - C272068315D7FBF700CCCD22 /* charset.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = charset.o; sourceTree = "<group>"; };  
37 - C272068415D7FBF700CCCD22 /* ctlr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ctlr.o; sourceTree = "<group>"; };  
38 - C272068515D7FBF700CCCD22 /* fallbacks.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = fallbacks.o; sourceTree = "<group>"; };  
39 - C272068615D7FBF700CCCD22 /* ft.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ft.o; sourceTree = "<group>"; };  
40 - C272068715D7FBF700CCCD22 /* ft_cut.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ft_cut.o; sourceTree = "<group>"; };  
41 - C272068815D7FBF700CCCD22 /* ft_dft.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ft_dft.o; sourceTree = "<group>"; };  
42 - C272068915D7FBF700CCCD22 /* glue.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = glue.o; sourceTree = "<group>"; };  
43 - C272068A15D7FBF700CCCD22 /* host.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = host.o; sourceTree = "<group>"; };  
44 - C272068B15D7FBF700CCCD22 /* html.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = html.o; sourceTree = "<group>"; };  
45 - C272068C15D7FBF700CCCD22 /* iocalls.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = iocalls.o; sourceTree = "<group>"; };  
46 - C272068D15D7FBF700CCCD22 /* kybd.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = kybd.o; sourceTree = "<group>"; };  
47 - C272068E15D7FBF700CCCD22 /* log.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = log.o; sourceTree = "<group>"; };  
48 - C272068F15D7FBF700CCCD22 /* macros.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = macros.o; sourceTree = "<group>"; };  
49 - C272069015D7FBF700CCCD22 /* paste.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = paste.o; sourceTree = "<group>"; };  
50 - C272069115D7FBF700CCCD22 /* proxy.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = proxy.o; sourceTree = "<group>"; };  
51 - C272069215D7FBF700CCCD22 /* resolver.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = resolver.o; sourceTree = "<group>"; };  
52 - C272069315D7FBF700CCCD22 /* resources.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = resources.o; sourceTree = "<group>"; };  
53 - C272069415D7FBF700CCCD22 /* rpq.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = rpq.o; sourceTree = "<group>"; };  
54 - C272069515D7FBF700CCCD22 /* screen.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = screen.o; sourceTree = "<group>"; };  
55 - C272069615D7FBF700CCCD22 /* see.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = see.o; sourceTree = "<group>"; };  
56 - C272069715D7FBF700CCCD22 /* selection.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = selection.o; sourceTree = "<group>"; };  
57 - C272069815D7FBF700CCCD22 /* session.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = session.o; sourceTree = "<group>"; };  
58 - C272069915D7FBF700CCCD22 /* sf.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sf.o; sourceTree = "<group>"; };  
59 - C272069A15D7FBF700CCCD22 /* state.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = state.o; sourceTree = "<group>"; };  
60 - C272069B15D7FBF700CCCD22 /* tables.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = tables.o; sourceTree = "<group>"; };  
61 - C272069C15D7FBF700CCCD22 /* telnet.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = telnet.o; sourceTree = "<group>"; };  
62 - C272069D15D7FBF700CCCD22 /* toggles.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = toggles.o; sourceTree = "<group>"; };  
63 - C272069E15D7FBF700CCCD22 /* trace_ds.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = trace_ds.o; sourceTree = "<group>"; };  
64 - C272069F15D7FBF700CCCD22 /* utf8.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = utf8.o; sourceTree = "<group>"; };  
65 - C27206A015D7FBF700CCCD22 /* util.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = util.o; sourceTree = "<group>"; };  
66 - C27206A115D7FBF700CCCD22 /* version.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = version.o; sourceTree = "<group>"; };  
67 - C27206A215D7FBF700CCCD22 /* 3270ds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 3270ds.h; sourceTree = "<group>"; };  
68 - C27206A315D7FBF700CCCD22 /* actions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = actions.c; sourceTree = "<group>"; };  
69 - C27206A415D7FBF700CCCD22 /* actionsc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionsc.h; sourceTree = "<group>"; };  
70 - C27206A515D7FBF700CCCD22 /* ansi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ansi.c; sourceTree = "<group>"; };  
71 - C27206A615D7FBF700CCCD22 /* ansic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ansic.h; sourceTree = "<group>"; };  
72 - C27206A715D7FBF700CCCD22 /* api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = api.h; sourceTree = "<group>"; };  
73 - C27206A815D7FBF700CCCD22 /* apl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = apl.c; sourceTree = "<group>"; };  
74 - C27206A915D7FBF700CCCD22 /* aplc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aplc.h; sourceTree = "<group>"; };  
75 - C27206AA15D7FBF700CCCD22 /* appres.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = appres.h; sourceTree = "<group>"; };  
76 - C27206AB15D7FBF700CCCD22 /* arpa_telnet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arpa_telnet.h; sourceTree = "<group>"; };  
77 - C27206AC15D7FBF700CCCD22 /* bounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bounds.c; sourceTree = "<group>"; };  
78 - C27206AD15D7FBF700CCCD22 /* cg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cg.h; sourceTree = "<group>"; };  
79 - C27206AE15D7FBF700CCCD22 /* charset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = charset.c; sourceTree = "<group>"; };  
80 - C27206AF15D7FBF700CCCD22 /* charsetc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = charsetc.h; sourceTree = "<group>"; };  
81 - C27206B015D7FBF700CCCD22 /* childc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = childc.h; sourceTree = "<group>"; };  
82 - C27206B115D7FBF700CCCD22 /* ctlr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ctlr.c; sourceTree = "<group>"; };  
83 - C27206B215D7FBF700CCCD22 /* ctlrc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ctlrc.h; sourceTree = "<group>"; };  
84 - C27206B315D7FBF700CCCD22 /* fallbacks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fallbacks.c; sourceTree = "<group>"; };  
85 - C27206B415D7FBF700CCCD22 /* ft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ft.c; sourceTree = "<group>"; };  
86 - C27206B515D7FBF700CCCD22 /* ft_cut.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ft_cut.c; sourceTree = "<group>"; };  
87 - C27206B615D7FBF700CCCD22 /* ft_cut_ds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ft_cut_ds.h; sourceTree = "<group>"; };  
88 - C27206B715D7FBF700CCCD22 /* ft_cutc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ft_cutc.h; sourceTree = "<group>"; };  
89 - C27206B815D7FBF700CCCD22 /* ft_dft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ft_dft.c; sourceTree = "<group>"; };  
90 - C27206B915D7FBF700CCCD22 /* ft_dft_ds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ft_dft_ds.h; sourceTree = "<group>"; };  
91 - C27206BA15D7FBF700CCCD22 /* ft_dftc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ft_dftc.h; sourceTree = "<group>"; };  
92 - C27206BB15D7FBF700CCCD22 /* ftc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ftc.h; sourceTree = "<group>"; };  
93 - C27206BC15D7FBF700CCCD22 /* globals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = globals.h; sourceTree = "<group>"; };  
94 - C27206BD15D7FBF700CCCD22 /* glue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = glue.c; sourceTree = "<group>"; };  
95 - C27206BE15D7FBF700CCCD22 /* gluec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gluec.h; sourceTree = "<group>"; };  
96 - C27206BF15D7FBF700CCCD22 /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = host.c; sourceTree = "<group>"; };  
97 - C27206C015D7FBF700CCCD22 /* hostc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hostc.h; sourceTree = "<group>"; };  
98 - C27206C115D7FBF700CCCD22 /* html.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = html.c; sourceTree = "<group>"; };  
99 - C27206C215D7FBF700CCCD22 /* icmdc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = icmdc.h; sourceTree = "<group>"; };  
100 - C27206C315D7FBF700CCCD22 /* iocalls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = iocalls.c; sourceTree = "<group>"; };  
101 - C27206C415D7FBF700CCCD22 /* keypadc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keypadc.h; sourceTree = "<group>"; };  
102 - C27206C515D7FBF700CCCD22 /* kybd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kybd.c; sourceTree = "<group>"; };  
103 - C27206C615D7FBF700CCCD22 /* kybdc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kybdc.h; sourceTree = "<group>"; };  
104 - C27206C715D7FBF700CCCD22 /* lib3270.cbp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = lib3270.cbp; sourceTree = "<group>"; };  
105 - C27206C815D7FBF700CCCD22 /* localdefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = localdefs.h; sourceTree = "<group>"; };  
106 - C27206C915D7FBF700CCCD22 /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; };  
107 - C27206CA15D7FBF700CCCD22 /* macros.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = macros.c; sourceTree = "<group>"; };  
108 - C27206CB15D7FBF700CCCD22 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };  
109 - C27206CC15D7FBF700CCCD22 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };  
110 - C27206CD15D7FBF700CCCD22 /* mkfb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mkfb.c; sourceTree = "<group>"; };  
111 - C27206CE15D7FBF700CCCD22 /* mkversion.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = mkversion.sh; sourceTree = "<group>"; };  
112 - C27206CF15D7FBF700CCCD22 /* mkversion.sh.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = mkversion.sh.in; sourceTree = "<group>"; };  
113 - C27206D015D7FBF700CCCD22 /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = "<group>"; };  
114 - C27206D115D7FBF700CCCD22 /* paste.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = paste.c; sourceTree = "<group>"; };  
115 - C27206D215D7FBF700CCCD22 /* popupsc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupsc.h; sourceTree = "<group>"; };  
116 - C27206D315D7FBF700CCCD22 /* print.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = print.c; sourceTree = "<group>"; };  
117 - C27206D415D7FBF700CCCD22 /* printc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = printc.h; sourceTree = "<group>"; };  
118 - C27206D515D7FBF700CCCD22 /* printer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = printer.c; sourceTree = "<group>"; };  
119 - C27206D615D7FBF700CCCD22 /* printerc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = printerc.h; sourceTree = "<group>"; };  
120 - C27206D715D7FBF700CCCD22 /* proxy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = proxy.c; sourceTree = "<group>"; };  
121 - C27206D815D7FBF700CCCD22 /* proxyc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proxyc.h; sourceTree = "<group>"; };  
122 - C27206D915D7FBF700CCCD22 /* resolver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resolver.c; sourceTree = "<group>"; };  
123 - C27206DA15D7FBF700CCCD22 /* resolverc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resolverc.h; sourceTree = "<group>"; };  
124 - C27206DB15D7FBF700CCCD22 /* resources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resources.c; sourceTree = "<group>"; };  
125 - C27206DC15D7FBF700CCCD22 /* resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resources.h; sourceTree = "<group>"; };  
126 - C27206DD15D7FBF700CCCD22 /* rpq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rpq.c; sourceTree = "<group>"; };  
127 - C27206DE15D7FBF700CCCD22 /* savec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = savec.h; sourceTree = "<group>"; };  
128 - C27206DF15D7FBF700CCCD22 /* screen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = screen.c; sourceTree = "<group>"; };  
129 - C27206E015D7FBF700CCCD22 /* screen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = screen.h; sourceTree = "<group>"; };  
130 - C27206E115D7FBF700CCCD22 /* screenc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = screenc.h; sourceTree = "<group>"; };  
131 - C27206E215D7FBF700CCCD22 /* scrollc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scrollc.h; sourceTree = "<group>"; };  
132 - C27206E315D7FBF700CCCD22 /* see.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = see.c; sourceTree = "<group>"; };  
133 - C27206E415D7FBF700CCCD22 /* seec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seec.h; sourceTree = "<group>"; };  
134 - C27206E515D7FBF700CCCD22 /* selection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = selection.c; sourceTree = "<group>"; };  
135 - C27206E615D7FBF700CCCD22 /* session.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = session.c; sourceTree = "<group>"; };  
136 - C27206E715D7FBF700CCCD22 /* sf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sf.c; sourceTree = "<group>"; };  
137 - C27206E815D7FBF700CCCD22 /* sf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sf.h; sourceTree = "<group>"; };  
138 - C27206E915D7FBF700CCCD22 /* shlobj_missing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shlobj_missing.h; sourceTree = "<group>"; };  
139 - C27206EA15D7FBF700CCCD22 /* sources.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = sources.mak; sourceTree = "<group>"; };  
140 - C27206EB15D7FBF700CCCD22 /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = state.c; sourceTree = "<group>"; };  
141 - C27206EC15D7FBF700CCCD22 /* statusc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = statusc.h; sourceTree = "<group>"; };  
142 - C27206ED15D7FBF700CCCD22 /* tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tables.c; sourceTree = "<group>"; };  
143 - C27206EE15D7FBF700CCCD22 /* tablesc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tablesc.h; sourceTree = "<group>"; };  
144 - C27206EF15D7FBF700CCCD22 /* telnet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = telnet.c; sourceTree = "<group>"; };  
145 - C27206F015D7FBF700CCCD22 /* telnetc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetc.h; sourceTree = "<group>"; };  
146 - C27206F115D7FBF700CCCD22 /* testprogram.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testprogram.c; sourceTree = "<group>"; };  
147 - C27206F215D7FBF700CCCD22 /* tn3270e.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tn3270e.h; sourceTree = "<group>"; };  
148 - C27206F315D7FBF700CCCD22 /* toggle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = toggle.h; sourceTree = "<group>"; };  
149 - C27206F415D7FBF700CCCD22 /* toggles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = toggles.c; sourceTree = "<group>"; };  
150 - C27206F515D7FBF700CCCD22 /* togglesc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = togglesc.h; sourceTree = "<group>"; };  
151 - C27206F615D7FBF700CCCD22 /* trace_ds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trace_ds.c; sourceTree = "<group>"; };  
152 - C27206F715D7FBF700CCCD22 /* trace_dsc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trace_dsc.h; sourceTree = "<group>"; };  
153 - C27206F815D7FBF700CCCD22 /* utf8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = utf8.c; sourceTree = "<group>"; };  
154 - C27206F915D7FBF700CCCD22 /* utf8c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utf8c.h; sourceTree = "<group>"; };  
155 - C27206FA15D7FBF700CCCD22 /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = util.c; sourceTree = "<group>"; };  
156 - C27206FB15D7FBF700CCCD22 /* utilc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utilc.h; sourceTree = "<group>"; };  
157 - C27206FC15D7FBF700CCCD22 /* version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = version.c; sourceTree = "<group>"; };  
158 - C27206FD15D7FBF700CCCD22 /* w3misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = w3misc.c; sourceTree = "<group>"; };  
159 - C27206FE15D7FBF700CCCD22 /* w3miscc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = w3miscc.h; sourceTree = "<group>"; };  
160 - C27206FF15D7FBF700CCCD22 /* widec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = widec.h; sourceTree = "<group>"; };  
161 - C272070015D7FBF700CCCD22 /* winvers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = winvers.c; sourceTree = "<group>"; };  
162 - C272070115D7FBF700CCCD22 /* winversc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winversc.h; sourceTree = "<group>"; };  
163 - C272070215D7FBF700CCCD22 /* X11keysym.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = X11keysym.h; sourceTree = "<group>"; };  
164 - C272070315D7FBF700CCCD22 /* X3270.xad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = X3270.xad; sourceTree = "<group>"; };  
165 - C272070415D7FBF700CCCD22 /* xio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xio.c; sourceTree = "<group>"; };  
166 - C272070515D7FBF700CCCD22 /* xioc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xioc.h; sourceTree = "<group>"; };  
167 - C272070615D7FBF700CCCD22 /* xl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xl.h; sourceTree = "<group>"; };  
168 - C272070715D7FBF700CCCD22 /* XtGlue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = XtGlue.c; sourceTree = "<group>"; };  
169 - C272070B15D7FBF700CCCD22 /* actions.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = actions.o; sourceTree = "<group>"; };  
170 - C272070C15D7FBF700CCCD22 /* colors.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = colors.o; sourceTree = "<group>"; };  
171 - C272070E15D7FBF700CCCD22 /* config.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = config.o; sourceTree = "<group>"; };  
172 - C272070F15D7FBF700CCCD22 /* dialog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = dialog.o; sourceTree = "<group>"; };  
173 - C272071015D7FBF700CCCD22 /* filetransfer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = filetransfer.o; sourceTree = "<group>"; };  
174 - C272071115D7FBF700CCCD22 /* fonts.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = fonts.o; sourceTree = "<group>"; };  
175 - C272071215D7FBF700CCCD22 /* print.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = print.o; sourceTree = "<group>"; };  
176 - C272071315D7FBF700CCCD22 /* tools.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = tools.o; sourceTree = "<group>"; };  
177 - C272071515D7FBF700CCCD22 /* accelerator.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = accelerator.o; sourceTree = "<group>"; };  
178 - C272071615D7FBF700CCCD22 /* action.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = action.o; sourceTree = "<group>"; };  
179 - C272071715D7FBF700CCCD22 /* menu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = menu.o; sourceTree = "<group>"; };  
180 - C272071815D7FBF700CCCD22 /* menubar.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = menubar.o; sourceTree = "<group>"; };  
181 - C272071915D7FBF700CCCD22 /* menuitem.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = menuitem.o; sourceTree = "<group>"; };  
182 - C272071A15D7FBF700CCCD22 /* parsefile.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = parsefile.o; sourceTree = "<group>"; };  
183 - C272071B15D7FBF700CCCD22 /* parser.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = parser.o; sourceTree = "<group>"; };  
184 - C272071C15D7FBF700CCCD22 /* popup.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = popup.o; sourceTree = "<group>"; };  
185 - C272071D15D7FBF700CCCD22 /* script.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = script.o; sourceTree = "<group>"; };  
186 - C272071E15D7FBF700CCCD22 /* separator.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = separator.o; sourceTree = "<group>"; };  
187 - C272071F15D7FBF700CCCD22 /* toolbar.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = toolbar.o; sourceTree = "<group>"; };  
188 - C272072015D7FBF700CCCD22 /* toolitem.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = toolitem.o; sourceTree = "<group>"; };  
189 - C272072215D7FBF700CCCD22 /* accessible.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = accessible.o; sourceTree = "<group>"; };  
190 - C272072315D7FBF700CCCD22 /* draw.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = draw.o; sourceTree = "<group>"; };  
191 - C272072415D7FBF700CCCD22 /* iocallback.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = iocallback.o; sourceTree = "<group>"; };  
192 - C272072515D7FBF700CCCD22 /* keyboard.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = keyboard.o; sourceTree = "<group>"; };  
193 - C272072615D7FBF700CCCD22 /* marshal.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = marshal.o; sourceTree = "<group>"; };  
194 - C272072715D7FBF700CCCD22 /* mouse.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mouse.o; sourceTree = "<group>"; };  
195 - C272072815D7FBF700CCCD22 /* oia.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = oia.o; sourceTree = "<group>"; };  
196 - C272072915D7FBF700CCCD22 /* selection.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = selection.o; sourceTree = "<group>"; };  
197 - C272072A15D7FBF700CCCD22 /* widget.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = widget.o; sourceTree = "<group>"; };  
198 - C272072B15D7FBF700CCCD22 /* window.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = window.o; sourceTree = "<group>"; };  
199 - C272072C15D7FBF700CCCD22 /* actions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = actions.c; sourceTree = "<group>"; };  
200 - C272072D15D7FBF700CCCD22 /* colors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = colors.c; sourceTree = "<group>"; };  
201 - C272072F15D7FBF700CCCD22 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };  
202 - C272073015D7FBF700CCCD22 /* common.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.h.in; sourceTree = "<group>"; };  
203 - C272073115D7FBF700CCCD22 /* config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = config.c; sourceTree = "<group>"; };  
204 - C272073215D7FBF700CCCD22 /* sources.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = sources.mak; sourceTree = "<group>"; };  
205 - C272073315D7FBF700CCCD22 /* dialog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dialog.c; sourceTree = "<group>"; };  
206 - C272073415D7FBF700CCCD22 /* filetransfer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filetransfer.c; sourceTree = "<group>"; };  
207 - C272073515D7FBF700CCCD22 /* filetransfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filetransfer.h; sourceTree = "<group>"; };  
208 - C272073615D7FBF700CCCD22 /* fonts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fonts.c; sourceTree = "<group>"; };  
209 - C272073715D7FBF700CCCD22 /* globals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = globals.h; sourceTree = "<group>"; };  
210 - C272073815D7FBF700CCCD22 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };  
211 - C272073915D7FBF700CCCD22 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };  
212 - C272073A15D7FBF700CCCD22 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };  
213 - C272073C15D7FBF700CCCD22 /* pw3270-logo.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "pw3270-logo.svg"; sourceTree = "<group>"; };  
214 - C272073D15D7FBF700CCCD22 /* pw3270.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = pw3270.svg; sourceTree = "<group>"; };  
215 - C272073E15D7FBF700CCCD22 /* print.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = print.c; sourceTree = "<group>"; };  
216 - C272073F15D7FBF700CCCD22 /* pw3270-GTK.cbp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "pw3270-GTK.cbp"; sourceTree = "<group>"; };  
217 - C272074015D7FBF700CCCD22 /* pw3270.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = pw3270.ico; sourceTree = "<group>"; };  
218 - C272074115D7FBF700CCCD22 /* tools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tools.c; sourceTree = "<group>"; };  
219 - C272074315D7FBF700CCCD22 /* accelerator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = accelerator.c; sourceTree = "<group>"; };  
220 - C272074415D7FBF700CCCD22 /* action.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = action.c; sourceTree = "<group>"; };  
221 - C272074515D7FBF700CCCD22 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };  
222 - C272074615D7FBF700CCCD22 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };  
223 - C272074715D7FBF700CCCD22 /* memchk.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = memchk.sh; sourceTree = "<group>"; };  
224 - C272074815D7FBF700CCCD22 /* menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = "<group>"; };  
225 - C272074915D7FBF700CCCD22 /* menubar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = menubar.c; sourceTree = "<group>"; };  
226 - C272074A15D7FBF700CCCD22 /* menuitem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = menuitem.c; sourceTree = "<group>"; };  
227 - C272074B15D7FBF700CCCD22 /* parsefile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parsefile.c; sourceTree = "<group>"; };  
228 - C272074C15D7FBF700CCCD22 /* parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parser.c; sourceTree = "<group>"; };  
229 - C272074D15D7FBF700CCCD22 /* parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = "<group>"; };  
230 - C272074E15D7FBF700CCCD22 /* popup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = popup.c; sourceTree = "<group>"; };  
231 - C272074F15D7FBF700CCCD22 /* private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private.h; sourceTree = "<group>"; };  
232 - C272075015D7FBF700CCCD22 /* script.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = script.c; sourceTree = "<group>"; };  
233 - C272075115D7FBF700CCCD22 /* separator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = separator.c; sourceTree = "<group>"; };  
234 - C272075215D7FBF700CCCD22 /* sources.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = sources.mak; sourceTree = "<group>"; };  
235 - C272075315D7FBF700CCCD22 /* testprogram.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testprogram.c; sourceTree = "<group>"; };  
236 - C272075415D7FBF700CCCD22 /* toolbar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = toolbar.c; sourceTree = "<group>"; };  
237 - C272075515D7FBF700CCCD22 /* toolitem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = toolitem.c; sourceTree = "<group>"; };  
238 - C272075615D7FBF700CCCD22 /* uiparser.cbp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = uiparser.cbp; sourceTree = "<group>"; };  
239 - C272075815D7FBF700CCCD22 /* accessible.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = accessible.c; sourceTree = "<group>"; };  
240 - C272075915D7FBF700CCCD22 /* accessible.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = accessible.h; sourceTree = "<group>"; };  
241 - C272075A15D7FBF700CCCD22 /* draw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = draw.c; sourceTree = "<group>"; };  
242 - C272075B15D7FBF700CCCD22 /* genmarshal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = genmarshal; sourceTree = "<group>"; };  
243 - C272075C15D7FBF700CCCD22 /* iocallback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = iocallback.c; sourceTree = "<group>"; };  
244 - C272075D15D7FBF700CCCD22 /* keyboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = "<group>"; };  
245 - C272075E15D7FBF700CCCD22 /* locked.xbm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = locked.xbm; sourceTree = "<group>"; };  
246 - C272075F15D7FBF700CCCD22 /* marshal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = marshal.c; sourceTree = "<group>"; };  
247 - C272076015D7FBF700CCCD22 /* marshal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = marshal.h; sourceTree = "<group>"; };  
248 - C272076115D7FBF700CCCD22 /* mouse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mouse.c; sourceTree = "<group>"; };  
249 - C272076215D7FBF700CCCD22 /* oia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = oia.c; sourceTree = "<group>"; };  
250 - C272076315D7FBF700CCCD22 /* private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private.h; sourceTree = "<group>"; };  
251 - C272076415D7FBF700CCCD22 /* selection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = selection.c; sourceTree = "<group>"; };  
252 - C272076515D7FBF700CCCD22 /* sources.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = sources.mak; sourceTree = "<group>"; };  
253 - C272076615D7FBF700CCCD22 /* unlocked.xbm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = unlocked.xbm; sourceTree = "<group>"; };  
254 - C272076715D7FBF700CCCD22 /* widget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = widget.c; sourceTree = "<group>"; };  
255 - C272076815D7FBF700CCCD22 /* valgrind.suppression */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = valgrind.suppression; sourceTree = "<group>"; };  
256 - C272076915D7FBF700CCCD22 /* window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = "<group>"; };  
257 - C272076B15D7FBF700CCCD22 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };  
258 - C272076C15D7FBF700CCCD22 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };  
259 - C272076D15D7FBF700CCCD22 /* xml2pot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xml2pot.c; sourceTree = "<group>"; };  
260 - C2C3E14D15F0598900B02C1C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; };  
261 - C2C3E14E15F0598900B02C1C /* launcher.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = launcher.sh; path = mac/launcher.sh; sourceTree = "<group>"; };  
262 - C2C3E15015F09BE200B02C1C /* pw3270.bundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = pw3270.bundle; sourceTree = "<group>"; };  
263 - C2C4DAD815D8282600E8C6A0 /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = "<group>"; };  
264 -/* End PBXFileReference section */  
265 -  
266 -/* Begin PBXGroup section */  
267 - C232305B15D7F01F00E76E83 = {  
268 - isa = PBXGroup;  
269 - children = (  
270 - C2C3E14715F0547300B02C1C /* Bundle */,  
271 - C23EFD5315D99E2D00673C59 /* updateChangeLog.sh */,  
272 - C21BB73815D940960093E2FA /* Makefile.in */,  
273 - C2C4DAD815D8282600E8C6A0 /* autogen.sh */,  
274 - C272066315D7F88300CCCD22 /* configure.ac */,  
275 - C272066415D7FBF700CCCD22 /* src */,  
276 - );  
277 - sourceTree = "<group>";  
278 - usesTabs = 1;  
279 - wrapsLines = 0;  
280 - };  
281 - C272066415D7FBF700CCCD22 /* src */ = {  
282 - isa = PBXGroup;  
283 - children = (  
284 - C272066515D7FBF700CCCD22 /* include */,  
285 - C272067B15D7FBF700CCCD22 /* lib3270 */,  
286 - C272070815D7FBF700CCCD22 /* pw3270 */,  
287 - C272076A15D7FBF700CCCD22 /* tools */,  
288 - );  
289 - path = src;  
290 - sourceTree = "<group>";  
291 - };  
292 - C272066515D7FBF700CCCD22 /* include */ = {  
293 - isa = PBXGroup;  
294 - children = (  
295 - C272066615D7FBF700CCCD22 /* lib3270 */,  
296 - C272067515D7FBF700CCCD22 /* lib3270.h */,  
297 - C272067615D7FBF700CCCD22 /* pw3270 */,  
298 - C272067715D7FBF700CCCD22 /* pw3270.h */,  
299 - C272067815D7FBF700CCCD22 /* rules.mak */,  
300 - C272067915D7FBF700CCCD22 /* rules.mak.in */,  
301 - C272067A15D7FBF700CCCD22 /* v3270.h */,  
302 - );  
303 - path = include;  
304 - sourceTree = "<group>";  
305 - };  
306 - C272066615D7FBF700CCCD22 /* lib3270 */ = {  
307 - isa = PBXGroup;  
308 - children = (  
309 - C272066715D7FBF700CCCD22 /* action_table.h */,  
310 - C272066815D7FBF700CCCD22 /* actions.h */,  
311 - C272066915D7FBF700CCCD22 /* config.h */,  
312 - C272066A15D7FBF700CCCD22 /* config.h.in */,  
313 - C272066B15D7FBF700CCCD22 /* filetransfer.h */,  
314 - C272066C15D7FBF700CCCD22 /* html.h */,  
315 - C272066D15D7FBF700CCCD22 /* internals.h */,  
316 - C272066E15D7FBF700CCCD22 /* log.h */,  
317 - C272066F15D7FBF700CCCD22 /* macros.h */,  
318 - C272067015D7FBF700CCCD22 /* popup.h */,  
319 - C272067115D7FBF700CCCD22 /* selection.h */,  
320 - C272067215D7FBF700CCCD22 /* session.h */,  
321 - C272067315D7FBF700CCCD22 /* stamp-h1 */,  
322 - C272067415D7FBF700CCCD22 /* trace.h */,  
323 - );  
324 - path = lib3270;  
325 - sourceTree = "<group>";  
326 - };  
327 - C272067615D7FBF700CCCD22 /* pw3270 */ = {  
328 - isa = PBXGroup;  
329 - children = (  
330 - );  
331 - path = pw3270;  
332 - sourceTree = "<group>";  
333 - };  
334 - C272067B15D7FBF700CCCD22 /* lib3270 */ = {  
335 - isa = PBXGroup;  
336 - children = (  
337 - C272067C15D7FBF700CCCD22 /* .bin */,  
338 - C272067F15D7FBF700CCCD22 /* .obj */,  
339 - C27206A215D7FBF700CCCD22 /* 3270ds.h */,  
340 - C27206A315D7FBF700CCCD22 /* actions.c */,  
341 - C27206A415D7FBF700CCCD22 /* actionsc.h */,  
342 - C27206A515D7FBF700CCCD22 /* ansi.c */,  
343 - C27206A615D7FBF700CCCD22 /* ansic.h */,  
344 - C27206A715D7FBF700CCCD22 /* api.h */,  
345 - C27206A815D7FBF700CCCD22 /* apl.c */,  
346 - C27206A915D7FBF700CCCD22 /* aplc.h */,  
347 - C27206AA15D7FBF700CCCD22 /* appres.h */,  
348 - C27206AB15D7FBF700CCCD22 /* arpa_telnet.h */,  
349 - C27206AC15D7FBF700CCCD22 /* bounds.c */,  
350 - C27206AD15D7FBF700CCCD22 /* cg.h */,  
351 - C27206AE15D7FBF700CCCD22 /* charset.c */,  
352 - C27206AF15D7FBF700CCCD22 /* charsetc.h */,  
353 - C27206B015D7FBF700CCCD22 /* childc.h */,  
354 - C27206B115D7FBF700CCCD22 /* ctlr.c */,  
355 - C27206B215D7FBF700CCCD22 /* ctlrc.h */,  
356 - C27206B315D7FBF700CCCD22 /* fallbacks.c */,  
357 - C27206B415D7FBF700CCCD22 /* ft.c */,  
358 - C27206B515D7FBF700CCCD22 /* ft_cut.c */,  
359 - C27206B615D7FBF700CCCD22 /* ft_cut_ds.h */,  
360 - C27206B715D7FBF700CCCD22 /* ft_cutc.h */,  
361 - C27206B815D7FBF700CCCD22 /* ft_dft.c */,  
362 - C27206B915D7FBF700CCCD22 /* ft_dft_ds.h */,  
363 - C27206BA15D7FBF700CCCD22 /* ft_dftc.h */,  
364 - C27206BB15D7FBF700CCCD22 /* ftc.h */,  
365 - C27206BC15D7FBF700CCCD22 /* globals.h */,  
366 - C27206BD15D7FBF700CCCD22 /* glue.c */,  
367 - C27206BE15D7FBF700CCCD22 /* gluec.h */,  
368 - C27206BF15D7FBF700CCCD22 /* host.c */,  
369 - C27206C015D7FBF700CCCD22 /* hostc.h */,  
370 - C27206C115D7FBF700CCCD22 /* html.c */,  
371 - C27206C215D7FBF700CCCD22 /* icmdc.h */,  
372 - C27206C315D7FBF700CCCD22 /* iocalls.c */,  
373 - C27206C415D7FBF700CCCD22 /* keypadc.h */,  
374 - C27206C515D7FBF700CCCD22 /* kybd.c */,  
375 - C27206C615D7FBF700CCCD22 /* kybdc.h */,  
376 - C27206C715D7FBF700CCCD22 /* lib3270.cbp */,  
377 - C27206C815D7FBF700CCCD22 /* localdefs.h */,  
378 - C27206C915D7FBF700CCCD22 /* log.c */,  
379 - C27206CA15D7FBF700CCCD22 /* macros.c */,  
380 - C27206CB15D7FBF700CCCD22 /* Makefile */,  
381 - C27206CC15D7FBF700CCCD22 /* Makefile.in */,  
382 - C27206CD15D7FBF700CCCD22 /* mkfb.c */,  
383 - C27206CE15D7FBF700CCCD22 /* mkversion.sh */,  
384 - C27206CF15D7FBF700CCCD22 /* mkversion.sh.in */,  
385 - C27206D015D7FBF700CCCD22 /* objects.h */,  
386 - C27206D115D7FBF700CCCD22 /* paste.c */,  
387 - C27206D215D7FBF700CCCD22 /* popupsc.h */,  
388 - C27206D315D7FBF700CCCD22 /* print.c */,  
389 - C27206D415D7FBF700CCCD22 /* printc.h */,  
390 - C27206D515D7FBF700CCCD22 /* printer.c */,  
391 - C27206D615D7FBF700CCCD22 /* printerc.h */,  
392 - C27206D715D7FBF700CCCD22 /* proxy.c */,  
393 - C27206D815D7FBF700CCCD22 /* proxyc.h */,  
394 - C27206D915D7FBF700CCCD22 /* resolver.c */,  
395 - C27206DA15D7FBF700CCCD22 /* resolverc.h */,  
396 - C27206DB15D7FBF700CCCD22 /* resources.c */,  
397 - C27206DC15D7FBF700CCCD22 /* resources.h */,  
398 - C27206DD15D7FBF700CCCD22 /* rpq.c */,  
399 - C27206DE15D7FBF700CCCD22 /* savec.h */,  
400 - C27206DF15D7FBF700CCCD22 /* screen.c */,  
401 - C27206E015D7FBF700CCCD22 /* screen.h */,  
402 - C27206E115D7FBF700CCCD22 /* screenc.h */,  
403 - C27206E215D7FBF700CCCD22 /* scrollc.h */,  
404 - C27206E315D7FBF700CCCD22 /* see.c */,  
405 - C27206E415D7FBF700CCCD22 /* seec.h */,  
406 - C27206E515D7FBF700CCCD22 /* selection.c */,  
407 - C27206E615D7FBF700CCCD22 /* session.c */,  
408 - C27206E715D7FBF700CCCD22 /* sf.c */,  
409 - C27206E815D7FBF700CCCD22 /* sf.h */,  
410 - C27206E915D7FBF700CCCD22 /* shlobj_missing.h */,  
411 - C27206EA15D7FBF700CCCD22 /* sources.mak */,  
412 - C27206EB15D7FBF700CCCD22 /* state.c */,  
413 - C27206EC15D7FBF700CCCD22 /* statusc.h */,  
414 - C27206ED15D7FBF700CCCD22 /* tables.c */,  
415 - C27206EE15D7FBF700CCCD22 /* tablesc.h */,  
416 - C27206EF15D7FBF700CCCD22 /* telnet.c */,  
417 - C27206F015D7FBF700CCCD22 /* telnetc.h */,  
418 - C27206F115D7FBF700CCCD22 /* testprogram.c */,  
419 - C27206F215D7FBF700CCCD22 /* tn3270e.h */,  
420 - C27206F315D7FBF700CCCD22 /* toggle.h */,  
421 - C27206F415D7FBF700CCCD22 /* toggles.c */,  
422 - C27206F515D7FBF700CCCD22 /* togglesc.h */,  
423 - C27206F615D7FBF700CCCD22 /* trace_ds.c */,  
424 - C27206F715D7FBF700CCCD22 /* trace_dsc.h */,  
425 - C27206F815D7FBF700CCCD22 /* utf8.c */,  
426 - C27206F915D7FBF700CCCD22 /* utf8c.h */,  
427 - C27206FA15D7FBF700CCCD22 /* util.c */,  
428 - C27206FB15D7FBF700CCCD22 /* utilc.h */,  
429 - C27206FC15D7FBF700CCCD22 /* version.c */,  
430 - C27206FD15D7FBF700CCCD22 /* w3misc.c */,  
431 - C27206FE15D7FBF700CCCD22 /* w3miscc.h */,  
432 - C27206FF15D7FBF700CCCD22 /* widec.h */,  
433 - C272070015D7FBF700CCCD22 /* winvers.c */,  
434 - C272070115D7FBF700CCCD22 /* winversc.h */,  
435 - C272070215D7FBF700CCCD22 /* X11keysym.h */,  
436 - C272070315D7FBF700CCCD22 /* X3270.xad */,  
437 - C272070415D7FBF700CCCD22 /* xio.c */,  
438 - C272070515D7FBF700CCCD22 /* xioc.h */,  
439 - C272070615D7FBF700CCCD22 /* xl.h */,  
440 - C272070715D7FBF700CCCD22 /* XtGlue.c */,  
441 - );  
442 - path = lib3270;  
443 - sourceTree = "<group>";  
444 - };  
445 - C272067C15D7FBF700CCCD22 /* .bin */ = {  
446 - isa = PBXGroup;  
447 - children = (  
448 - C272067D15D7FBF700CCCD22 /* mkfb */,  
449 - C272067E15D7FBF700CCCD22 /* mkfb.dSYM */,  
450 - );  
451 - path = .bin;  
452 - sourceTree = "<group>";  
453 - };  
454 - C272067F15D7FBF700CCCD22 /* .obj */ = {  
455 - isa = PBXGroup;  
456 - children = (  
457 - C272068015D7FBF700CCCD22 /* Debug */,  
458 - );  
459 - path = .obj;  
460 - sourceTree = "<group>";  
461 - };  
462 - C272068015D7FBF700CCCD22 /* Debug */ = {  
463 - isa = PBXGroup;  
464 - children = (  
465 - C272068115D7FBF700CCCD22 /* ansi.o */,  
466 - C272068215D7FBF700CCCD22 /* bounds.o */,  
467 - C272068315D7FBF700CCCD22 /* charset.o */,  
468 - C272068415D7FBF700CCCD22 /* ctlr.o */,  
469 - C272068515D7FBF700CCCD22 /* fallbacks.o */,  
470 - C272068615D7FBF700CCCD22 /* ft.o */,  
471 - C272068715D7FBF700CCCD22 /* ft_cut.o */,  
472 - C272068815D7FBF700CCCD22 /* ft_dft.o */,  
473 - C272068915D7FBF700CCCD22 /* glue.o */,  
474 - C272068A15D7FBF700CCCD22 /* host.o */,  
475 - C272068B15D7FBF700CCCD22 /* html.o */,  
476 - C272068C15D7FBF700CCCD22 /* iocalls.o */,  
477 - C272068D15D7FBF700CCCD22 /* kybd.o */,  
478 - C272068E15D7FBF700CCCD22 /* log.o */,  
479 - C272068F15D7FBF700CCCD22 /* macros.o */,  
480 - C272069015D7FBF700CCCD22 /* paste.o */,  
481 - C272069115D7FBF700CCCD22 /* proxy.o */,  
482 - C272069215D7FBF700CCCD22 /* resolver.o */,  
483 - C272069315D7FBF700CCCD22 /* resources.o */,  
484 - C272069415D7FBF700CCCD22 /* rpq.o */,  
485 - C272069515D7FBF700CCCD22 /* screen.o */,  
486 - C272069615D7FBF700CCCD22 /* see.o */,  
487 - C272069715D7FBF700CCCD22 /* selection.o */,  
488 - C272069815D7FBF700CCCD22 /* session.o */,  
489 - C272069915D7FBF700CCCD22 /* sf.o */,  
490 - C272069A15D7FBF700CCCD22 /* state.o */,  
491 - C272069B15D7FBF700CCCD22 /* tables.o */,  
492 - C272069C15D7FBF700CCCD22 /* telnet.o */,  
493 - C272069D15D7FBF700CCCD22 /* toggles.o */,  
494 - C272069E15D7FBF700CCCD22 /* trace_ds.o */,  
495 - C272069F15D7FBF700CCCD22 /* utf8.o */,  
496 - C27206A015D7FBF700CCCD22 /* util.o */,  
497 - C27206A115D7FBF700CCCD22 /* version.o */,  
498 - );  
499 - path = Debug;  
500 - sourceTree = "<group>";  
501 - };  
502 - C272070815D7FBF700CCCD22 /* pw3270 */ = {  
503 - isa = PBXGroup;  
504 - children = (  
505 - C272070915D7FBF700CCCD22 /* .obj */,  
506 - C272072C15D7FBF700CCCD22 /* actions.c */,  
507 - C272072D15D7FBF700CCCD22 /* colors.c */,  
508 - C272072E15D7FBF700CCCD22 /* common */,  
509 - C272073315D7FBF700CCCD22 /* dialog.c */,  
510 - C272073415D7FBF700CCCD22 /* filetransfer.c */,  
511 - C272073515D7FBF700CCCD22 /* filetransfer.h */,  
512 - C272073615D7FBF700CCCD22 /* fonts.c */,  
513 - C272073715D7FBF700CCCD22 /* globals.h */,  
514 - C272073815D7FBF700CCCD22 /* main.c */,  
515 - C272073915D7FBF700CCCD22 /* Makefile */,  
516 - C272073A15D7FBF700CCCD22 /* Makefile.in */,  
517 - C272073B15D7FBF700CCCD22 /* pixmaps */,  
518 - C272073E15D7FBF700CCCD22 /* print.c */,  
519 - C272073F15D7FBF700CCCD22 /* pw3270-GTK.cbp */,  
520 - C272074015D7FBF700CCCD22 /* pw3270.ico */,  
521 - C272074115D7FBF700CCCD22 /* tools.c */,  
522 - C272074215D7FBF700CCCD22 /* uiparser */,  
523 - C272075715D7FBF700CCCD22 /* v3270 */,  
524 - C272076815D7FBF700CCCD22 /* valgrind.suppression */,  
525 - C272076915D7FBF700CCCD22 /* window.c */,  
526 - );  
527 - path = pw3270;  
528 - sourceTree = "<group>";  
529 - };  
530 - C272070915D7FBF700CCCD22 /* .obj */ = {  
531 - isa = PBXGroup;  
532 - children = (  
533 - C272070A15D7FBF700CCCD22 /* Debug */,  
534 - );  
535 - path = .obj;  
536 - sourceTree = "<group>";  
537 - };  
538 - C272070A15D7FBF700CCCD22 /* Debug */ = {  
539 - isa = PBXGroup;  
540 - children = (  
541 - C272070B15D7FBF700CCCD22 /* actions.o */,  
542 - C272070C15D7FBF700CCCD22 /* colors.o */,  
543 - C272070D15D7FBF700CCCD22 /* common */,  
544 - C272070F15D7FBF700CCCD22 /* dialog.o */,  
545 - C272071015D7FBF700CCCD22 /* filetransfer.o */,  
546 - C272071115D7FBF700CCCD22 /* fonts.o */,  
547 - C272071215D7FBF700CCCD22 /* print.o */,  
548 - C272071315D7FBF700CCCD22 /* tools.o */,  
549 - C272071415D7FBF700CCCD22 /* uiparser */,  
550 - C272072115D7FBF700CCCD22 /* v3270 */,  
551 - C272072B15D7FBF700CCCD22 /* window.o */,  
552 - );  
553 - path = Debug;  
554 - sourceTree = "<group>";  
555 - };  
556 - C272070D15D7FBF700CCCD22 /* common */ = {  
557 - isa = PBXGroup;  
558 - children = (  
559 - C272070E15D7FBF700CCCD22 /* config.o */,  
560 - );  
561 - path = common;  
562 - sourceTree = "<group>";  
563 - };  
564 - C272071415D7FBF700CCCD22 /* uiparser */ = {  
565 - isa = PBXGroup;  
566 - children = (  
567 - C272071515D7FBF700CCCD22 /* accelerator.o */,  
568 - C272071615D7FBF700CCCD22 /* action.o */,  
569 - C272071715D7FBF700CCCD22 /* menu.o */,  
570 - C272071815D7FBF700CCCD22 /* menubar.o */,  
571 - C272071915D7FBF700CCCD22 /* menuitem.o */,  
572 - C272071A15D7FBF700CCCD22 /* parsefile.o */,  
573 - C272071B15D7FBF700CCCD22 /* parser.o */,  
574 - C272071C15D7FBF700CCCD22 /* popup.o */,  
575 - C272071D15D7FBF700CCCD22 /* script.o */,  
576 - C272071E15D7FBF700CCCD22 /* separator.o */,  
577 - C272071F15D7FBF700CCCD22 /* toolbar.o */,  
578 - C272072015D7FBF700CCCD22 /* toolitem.o */,  
579 - );  
580 - path = uiparser;  
581 - sourceTree = "<group>";  
582 - };  
583 - C272072115D7FBF700CCCD22 /* v3270 */ = {  
584 - isa = PBXGroup;  
585 - children = (  
586 - C272072215D7FBF700CCCD22 /* accessible.o */,  
587 - C272072315D7FBF700CCCD22 /* draw.o */,  
588 - C272072415D7FBF700CCCD22 /* iocallback.o */,  
589 - C272072515D7FBF700CCCD22 /* keyboard.o */,  
590 - C272072615D7FBF700CCCD22 /* marshal.o */,  
591 - C272072715D7FBF700CCCD22 /* mouse.o */,  
592 - C272072815D7FBF700CCCD22 /* oia.o */,  
593 - C272072915D7FBF700CCCD22 /* selection.o */,  
594 - C272072A15D7FBF700CCCD22 /* widget.o */,  
595 - );  
596 - path = v3270;  
597 - sourceTree = "<group>";  
598 - };  
599 - C272072E15D7FBF700CCCD22 /* common */ = {  
600 - isa = PBXGroup;  
601 - children = (  
602 - C272072F15D7FBF700CCCD22 /* common.h */,  
603 - C272073015D7FBF700CCCD22 /* common.h.in */,  
604 - C272073115D7FBF700CCCD22 /* config.c */,  
605 - C272073215D7FBF700CCCD22 /* sources.mak */,  
606 - );  
607 - path = common;  
608 - sourceTree = "<group>";  
609 - };  
610 - C272073B15D7FBF700CCCD22 /* pixmaps */ = {  
611 - isa = PBXGroup;  
612 - children = (  
613 - C272073C15D7FBF700CCCD22 /* pw3270-logo.svg */,  
614 - C272073D15D7FBF700CCCD22 /* pw3270.svg */,  
615 - );  
616 - path = pixmaps;  
617 - sourceTree = "<group>";  
618 - };  
619 - C272074215D7FBF700CCCD22 /* uiparser */ = {  
620 - isa = PBXGroup;  
621 - children = (  
622 - C272074315D7FBF700CCCD22 /* accelerator.c */,  
623 - C272074415D7FBF700CCCD22 /* action.c */,  
624 - C272074515D7FBF700CCCD22 /* Makefile */,  
625 - C272074615D7FBF700CCCD22 /* Makefile.in */,  
626 - C272074715D7FBF700CCCD22 /* memchk.sh */,  
627 - C272074815D7FBF700CCCD22 /* menu.c */,  
628 - C272074915D7FBF700CCCD22 /* menubar.c */,  
629 - C272074A15D7FBF700CCCD22 /* menuitem.c */,  
630 - C272074B15D7FBF700CCCD22 /* parsefile.c */,  
631 - C272074C15D7FBF700CCCD22 /* parser.c */,  
632 - C272074D15D7FBF700CCCD22 /* parser.h */,  
633 - C272074E15D7FBF700CCCD22 /* popup.c */,  
634 - C272074F15D7FBF700CCCD22 /* private.h */,  
635 - C272075015D7FBF700CCCD22 /* script.c */,  
636 - C272075115D7FBF700CCCD22 /* separator.c */,  
637 - C272075215D7FBF700CCCD22 /* sources.mak */,  
638 - C272075315D7FBF700CCCD22 /* testprogram.c */,  
639 - C272075415D7FBF700CCCD22 /* toolbar.c */,  
640 - C272075515D7FBF700CCCD22 /* toolitem.c */,  
641 - C272075615D7FBF700CCCD22 /* uiparser.cbp */,  
642 - );  
643 - path = uiparser;  
644 - sourceTree = "<group>";  
645 - };  
646 - C272075715D7FBF700CCCD22 /* v3270 */ = {  
647 - isa = PBXGroup;  
648 - children = (  
649 - C272075815D7FBF700CCCD22 /* accessible.c */,  
650 - C272075915D7FBF700CCCD22 /* accessible.h */,  
651 - C272075A15D7FBF700CCCD22 /* draw.c */,  
652 - C272075B15D7FBF700CCCD22 /* genmarshal */,  
653 - C272075C15D7FBF700CCCD22 /* iocallback.c */,  
654 - C272075D15D7FBF700CCCD22 /* keyboard.c */,  
655 - C272075E15D7FBF700CCCD22 /* locked.xbm */,  
656 - C272075F15D7FBF700CCCD22 /* marshal.c */,  
657 - C272076015D7FBF700CCCD22 /* marshal.h */,  
658 - C272076115D7FBF700CCCD22 /* mouse.c */,  
659 - C272076215D7FBF700CCCD22 /* oia.c */,  
660 - C272076315D7FBF700CCCD22 /* private.h */,  
661 - C272076415D7FBF700CCCD22 /* selection.c */,  
662 - C272076515D7FBF700CCCD22 /* sources.mak */,  
663 - C272076615D7FBF700CCCD22 /* unlocked.xbm */,  
664 - C272076715D7FBF700CCCD22 /* widget.c */,  
665 - );  
666 - path = v3270;  
667 - sourceTree = "<group>";  
668 - };  
669 - C272076A15D7FBF700CCCD22 /* tools */ = {  
670 - isa = PBXGroup;  
671 - children = (  
672 - C272076B15D7FBF700CCCD22 /* Makefile */,  
673 - C272076C15D7FBF700CCCD22 /* Makefile.in */,  
674 - C272076D15D7FBF700CCCD22 /* xml2pot.c */,  
675 - );  
676 - path = tools;  
677 - sourceTree = "<group>";  
678 - };  
679 - C2C3E14715F0547300B02C1C /* Bundle */ = {  
680 - isa = PBXGroup;  
681 - children = (  
682 - C2C3E15015F09BE200B02C1C /* pw3270.bundle */,  
683 - C2C3E14D15F0598900B02C1C /* Info.plist */,  
684 - C2C3E14E15F0598900B02C1C /* launcher.sh */,  
685 - );  
686 - name = Bundle;  
687 - sourceTree = "<group>";  
688 - };  
689 -/* End PBXGroup section */  
690 -  
691 -/* Begin PBXLegacyTarget section */  
692 - C232306215D7F01F00E76E83 /* Debug */ = {  
693 - isa = PBXLegacyTarget;  
694 - buildArgumentsString = Debug;  
695 - buildConfigurationList = C232306515D7F01F00E76E83 /* Build configuration list for PBXLegacyTarget "Debug" */;  
696 - buildPhases = (  
697 - );  
698 - buildToolPath = /usr/bin/make;  
699 - buildWorkingDirectory = "";  
700 - dependencies = (  
701 - );  
702 - name = Debug;  
703 - passBuildSettingsInEnvironment = 1;  
704 - productName = pw3270;  
705 - };  
706 -/* End PBXLegacyTarget section */  
707 -  
708 -/* Begin PBXProject section */  
709 - C232305D15D7F01F00E76E83 /* Project object */ = {  
710 - isa = PBXProject;  
711 - attributes = {  
712 - LastUpgradeCheck = 0440;  
713 - ORGANIZATIONNAME = "Perry Werneck";  
714 - };  
715 - buildConfigurationList = C232306015D7F01F00E76E83 /* Build configuration list for PBXProject "pw3270" */;  
716 - compatibilityVersion = "Xcode 3.2";  
717 - developmentRegion = English;  
718 - hasScannedForEncodings = 0;  
719 - knownRegions = (  
720 - en,  
721 - );  
722 - mainGroup = C232305B15D7F01F00E76E83;  
723 - projectDirPath = "";  
724 - projectRoot = "";  
725 - targets = (  
726 - C232306215D7F01F00E76E83 /* Debug */,  
727 - );  
728 - };  
729 -/* End PBXProject section */  
730 -  
731 -/* Begin XCBuildConfiguration section */  
732 - C232306315D7F01F00E76E83 /* Debug */ = {  
733 - isa = XCBuildConfiguration;  
734 - buildSettings = {  
735 - ALWAYS_SEARCH_USER_PATHS = NO;  
736 - ARCHS = "$(ARCHS_STANDARD_64_BIT)";  
737 - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";  
738 - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;  
739 - COPY_PHASE_STRIP = NO;  
740 - GCC_C_LANGUAGE_STANDARD = gnu99;  
741 - GCC_DYNAMIC_NO_PIC = NO;  
742 - GCC_ENABLE_OBJC_EXCEPTIONS = YES;  
743 - GCC_OPTIMIZATION_LEVEL = 0;  
744 - GCC_PREPROCESSOR_DEFINITIONS = (  
745 - "DEBUG=1",  
746 - "$(inherited)",  
747 - );  
748 - GCC_SYMBOLS_PRIVATE_EXTERN = NO;  
749 - GCC_WARN_64_TO_32_BIT_CONVERSION = YES;  
750 - GCC_WARN_ABOUT_RETURN_TYPE = YES;  
751 - GCC_WARN_UNINITIALIZED_AUTOS = YES;  
752 - GCC_WARN_UNUSED_VARIABLE = YES;  
753 - MACOSX_DEPLOYMENT_TARGET = 10.8;  
754 - ONLY_ACTIVE_ARCH = YES;  
755 - SDKROOT = macosx;  
756 - };  
757 - name = Debug;  
758 - };  
759 - C232306415D7F01F00E76E83 /* Release */ = {  
760 - isa = XCBuildConfiguration;  
761 - buildSettings = {  
762 - ALWAYS_SEARCH_USER_PATHS = NO;  
763 - ARCHS = "$(ARCHS_STANDARD_64_BIT)";  
764 - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";  
765 - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;  
766 - COPY_PHASE_STRIP = YES;  
767 - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";  
768 - GCC_C_LANGUAGE_STANDARD = gnu99;  
769 - GCC_ENABLE_OBJC_EXCEPTIONS = YES;  
770 - GCC_WARN_64_TO_32_BIT_CONVERSION = YES;  
771 - GCC_WARN_ABOUT_RETURN_TYPE = YES;  
772 - GCC_WARN_UNINITIALIZED_AUTOS = YES;  
773 - GCC_WARN_UNUSED_VARIABLE = YES;  
774 - MACOSX_DEPLOYMENT_TARGET = 10.8;  
775 - SDKROOT = macosx;  
776 - };  
777 - name = Release;  
778 - };  
779 - C232306615D7F01F00E76E83 /* Debug */ = {  
780 - isa = XCBuildConfiguration;  
781 - buildSettings = {  
782 - DEBUGGING_SYMBOLS = YES;  
783 - GCC_GENERATE_DEBUGGING_SYMBOLS = YES;  
784 - GCC_OPTIMIZATION_LEVEL = 0;  
785 - OTHER_CFLAGS = "";  
786 - OTHER_LDFLAGS = "";  
787 - PRODUCT_NAME = "$(TARGET_NAME)";  
788 - };  
789 - name = Debug;  
790 - };  
791 - C232306715D7F01F00E76E83 /* Release */ = {  
792 - isa = XCBuildConfiguration;  
793 - buildSettings = {  
794 - OTHER_CFLAGS = "";  
795 - OTHER_LDFLAGS = "";  
796 - PRODUCT_NAME = "$(TARGET_NAME)";  
797 - };  
798 - name = Release;  
799 - };  
800 -/* End XCBuildConfiguration section */  
801 -  
802 -/* Begin XCConfigurationList section */  
803 - C232306015D7F01F00E76E83 /* Build configuration list for PBXProject "pw3270" */ = {  
804 - isa = XCConfigurationList;  
805 - buildConfigurations = (  
806 - C232306315D7F01F00E76E83 /* Debug */,  
807 - C232306415D7F01F00E76E83 /* Release */,  
808 - );  
809 - defaultConfigurationIsVisible = 0;  
810 - defaultConfigurationName = Release;  
811 - };  
812 - C232306515D7F01F00E76E83 /* Build configuration list for PBXLegacyTarget "Debug" */ = {  
813 - isa = XCConfigurationList;  
814 - buildConfigurations = (  
815 - C232306615D7F01F00E76E83 /* Debug */,  
816 - C232306715D7F01F00E76E83 /* Release */,  
817 - );  
818 - defaultConfigurationIsVisible = 0;  
819 - defaultConfigurationName = Release;  
820 - };  
821 -/* End XCConfigurationList section */  
822 - };  
823 - rootObject = C232305D15D7F01F00E76E83 /* Project object */;  
824 -}  
pw3270.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<Workspace  
3 - version = "1.0">  
4 - <FileRef  
5 - location = "self:pw3270.xcodeproj">  
6 - </FileRef>  
7 -</Workspace>  
pw3270.xcodeproj/xcuserdata/perry.xcuserdatad/xcschemes/pw3270.xcscheme
@@ -1,59 +0,0 @@ @@ -1,59 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<Scheme  
3 - LastUpgradeVersion = "0440"  
4 - version = "1.3">  
5 - <BuildAction  
6 - parallelizeBuildables = "YES"  
7 - buildImplicitDependencies = "YES">  
8 - <BuildActionEntries>  
9 - <BuildActionEntry  
10 - buildForTesting = "YES"  
11 - buildForRunning = "YES"  
12 - buildForProfiling = "YES"  
13 - buildForArchiving = "YES"  
14 - buildForAnalyzing = "YES">  
15 - <BuildableReference  
16 - BuildableIdentifier = "primary"  
17 - BlueprintIdentifier = "C232306215D7F01F00E76E83"  
18 - BuildableName = "Debug"  
19 - BlueprintName = "Debug"  
20 - ReferencedContainer = "container:pw3270.xcodeproj">  
21 - </BuildableReference>  
22 - </BuildActionEntry>  
23 - </BuildActionEntries>  
24 - </BuildAction>  
25 - <TestAction  
26 - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"  
27 - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"  
28 - shouldUseLaunchSchemeArgsEnv = "YES"  
29 - buildConfiguration = "Debug">  
30 - <Testables>  
31 - </Testables>  
32 - </TestAction>  
33 - <LaunchAction  
34 - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"  
35 - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"  
36 - launchStyle = "0"  
37 - useCustomWorkingDirectory = "NO"  
38 - buildConfiguration = "Debug"  
39 - ignoresPersistentStateOnLaunch = "NO"  
40 - debugDocumentVersioning = "YES"  
41 - allowLocationSimulation = "YES">  
42 - <AdditionalOptions>  
43 - </AdditionalOptions>  
44 - </LaunchAction>  
45 - <ProfileAction  
46 - shouldUseLaunchSchemeArgsEnv = "YES"  
47 - savedToolIdentifier = ""  
48 - useCustomWorkingDirectory = "NO"  
49 - buildConfiguration = "Release"  
50 - debugDocumentVersioning = "YES">  
51 - </ProfileAction>  
52 - <AnalyzeAction  
53 - buildConfiguration = "Debug">  
54 - </AnalyzeAction>  
55 - <ArchiveAction  
56 - buildConfiguration = "Release"  
57 - revealArchiveInOrganizer = "YES">  
58 - </ArchiveAction>  
59 -</Scheme>  
pw3270.xcodeproj/xcuserdata/perry.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -1,32 +0,0 @@ @@ -1,32 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
3 -<plist version="1.0">  
4 -<dict>  
5 - <key>SchemeUserState</key>  
6 - <dict>  
7 - <key>pw3270 copy.xcscheme</key>  
8 - <dict>  
9 - <key>orderHint</key>  
10 - <integer>1</integer>  
11 - </dict>  
12 - <key>pw3270.xcscheme</key>  
13 - <dict>  
14 - <key>orderHint</key>  
15 - <integer>0</integer>  
16 - </dict>  
17 - </dict>  
18 - <key>SuppressBuildableAutocreation</key>  
19 - <dict>  
20 - <key>C232306215D7F01F00E76E83</key>  
21 - <dict>  
22 - <key>primary</key>  
23 - <true/>  
24 - </dict>  
25 - <key>C272076E15D7FED400CCCD22</key>  
26 - <dict>  
27 - <key>primary</key>  
28 - <true/>  
29 - </dict>  
30 - </dict>  
31 -</dict>  
32 -</plist>  
sdk/Makefile.in
@@ -1,110 +0,0 @@ @@ -1,110 +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 -LIBNAME=@DLLPREFIX@@PACKAGE_TARNAME@@DLLEXT@  
28 -  
29 -#---[ Configuration values ]-------------------------------------------------------------  
30 -  
31 -prefix=@prefix@  
32 -exec_prefix=@exec_prefix@  
33 -includedir=@includedir@  
34 -libdir=@libdir@  
35 -  
36 -BASEDIR=@BASEDIR@  
37 -SRCDIR=$(BASEDIR)/.src/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)  
38 -  
39 -PACKAGE_NAME=@PACKAGE_NAME@  
40 -PACKAGE_VERSION=@PACKAGE_VERSION@  
41 -PACKAGE_TARNAME=@PACKAGE_TARNAME@  
42 -  
43 -MKDIR=@MKDIR_P@  
44 -INSTALL=@INSTALL@  
45 -INSTALL_DATA=@INSTALL_DATA@  
46 -LN_S=@LN_S@  
47 -  
48 -#---[ Rules ]----------------------------------------------------------------------------  
49 -  
50 -$(DESTDIR)$(libdir)/pkgconfig/%.pc: \  
51 - %.pc  
52 -  
53 - @$(MKDIR) `dirname $@`  
54 - @$(INSTALL_DATA) $^ $@  
55 -  
56 -$(DESTDIR)$(includedir)/%.h: \  
57 - $(BASEDIR)/src/include/%.h  
58 -  
59 - @$(MKDIR) `dirname $@`  
60 - @$(INSTALL_DATA) $^ $@  
61 -  
62 -$(SRCDIR)/src/include/%.h: \  
63 - $(BASEDIR)/src/include/%.h  
64 -  
65 - @$(MKDIR) `dirname $@`  
66 - @$(INSTALL_DATA) $^ $@  
67 -  
68 -  
69 -#---[ Targets ]--------------------------------------------------------------------------  
70 -  
71 -install: \  
72 - $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(DESTDIR)$(includedir)/pw3270/$(SRC)) \  
73 - $(DESTDIR)$(includedir)/pw3270.h \  
74 - $(DESTDIR)$(includedir)/pw3270cpp.h  
75 -  
76 - @$(MKDIR) $(DESTDIR)$(libdir)  
77 -  
78 - @$(LN_S) -f \  
79 - $(LIBNAME).@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \  
80 - $(DESTDIR)$(libdir)/$(LIBNAME).@PACKAGE_MAJOR_VERSION@  
81 -  
82 - @$(LN_S) -f \  
83 - $(LIBNAME).@PACKAGE_MAJOR_VERSION@ \  
84 - $(DESTDIR)$(libdir)/$(LIBNAME)  
85 -  
86 - # Install PKG-CONFIG files  
87 -  
88 - @mkdir -p $(DESTDIR)$(libdir)/pkgconfig  
89 -  
90 - @$(INSTALL_DATA) \  
91 - $(BASEDIR)/sdk/*.pc \  
92 - $(DESTDIR)$(libdir)/pkgconfig  
93 -  
94 -  
95 -$(SRCDIR)/sdk: \  
96 - $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/lib3270/*.h)), $(SRCDIR)/src/include/lib3270/$(SRC)) \  
97 - $(foreach SRC, $(notdir $(wildcard $(BASEDIR)/src/include/pw3270/*.h)), $(SRCDIR)/src/include/pw3270/$(SRC)) \  
98 - $(SRCDIR)/src/include/lib3270.h \  
99 - $(SRCDIR)/src/include/pw3270.h \  
100 - $(SRCDIR)/src/include/pw3270cpp.h  
101 -  
102 - @$(MKDIR) $@  
103 - @$(INSTALL_DATA) *.in $@  
104 -  
105 - @$(INSTALL_DATA) \  
106 - $(BASEDIR)/src/include/*.in \  
107 - $(SRCDIR)/src/include  
108 -  
109 -  
110 -  
sdk/pw3270.pc.in
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -prefix=@prefix@  
2 -exec_prefix=@exec_prefix@  
3 -libdir=@libdir@  
4 -includedir=@includedir@  
5 -  
6 -version_major=@PACKAGE_MAJOR_VERSION@  
7 -version_minor=@PACKAGE_MINOR_VERSION@  
8 -gtk_version=@GTK_MODVERSION@  
9 -  
10 -Name: @PACKAGE_TARNAME@  
11 -Description: @PACKAGE@ GTK widgets and support calls for plugin development  
12 -Version: @PACKAGE_VERSION@  
13 -Libs: -L\@libdir@ -l@PACKAGE_TARNAME@  
14 -Libs.private: lib3270  
15 -Cflags: -I@includedir@  
16 -  
src/libpw3270cpp/Makefile.in
@@ -1,222 +0,0 @@ @@ -1,222 +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=libpw3270cpp  
28 -  
29 -SOURCES=session.cc exception.cc local.cc remote.cc service.cc module.cc  
30 -  
31 -#---[ Configuration values ]-------------------------------------------------------------  
32 -  
33 -PACKAGE_NAME=@PACKAGE_NAME@  
34 -PACKAGE_VERSION=@PACKAGE_VERSION@  
35 -PACKAGE_TARNAME=@PACKAGE_TARNAME@  
36 -  
37 -prefix=@prefix@  
38 -exec_prefix=@exec_prefix@  
39 -bindir=@bindir@  
40 -sbindir=@sbindir@  
41 -libdir=@libdir@  
42 -includedir=@includedir@  
43 -  
44 -  
45 -BASEDIR=@BASEDIR@  
46 -SRCDIR=$(BASEDIR)/.src/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)/src/$(MODULE_NAME)  
47 -POTDIR=$(BASEDIR)/.pot/$(PACKAGE_TARNAME)/$(MODULE_NAME)  
48 -  
49 -OBJDIR=.obj  
50 -OBJDBG=$(OBJDIR)/Debug  
51 -OBJRLS=$(OBJDIR)/Release  
52 -  
53 -MKDIR=@MKDIR_P@  
54 -CC=@CXX@  
55 -LD=@CXX@  
56 -AR=@AR@  
57 -XGETTEXT=@XGETTEXT@  
58 -MSGCAT=@MSGCAT@  
59 -INSTALL=@INSTALL@  
60 -VALGRIND=@VALGRIND@  
61 -INSTALL_DATA=@INSTALL_DATA@  
62 -INSTALL_PROGRAM=@INSTALL_PROGRAM@  
63 -  
64 -CFLAGS= \  
65 - @CFLAGS@ \  
66 - -Wno-deprecated-declarations \  
67 - -I$(BASEDIR)/src/include \  
68 - @LIB3270_CFLAGS@ \  
69 - @DBUS_CFLAGS@ \  
70 - @GTK_CFLAGS@  
71 -  
72 -LIBS= \  
73 - @LIBS@ \  
74 - @DBUS_LIBS@ \  
75 - @LIBICONV@  
76 -  
77 -#---[ Rules ]----------------------------------------------------------------------------  
78 -  
79 -DEPENDS=\  
80 - $(BASEDIR)/src/include/*.h \  
81 - $(BASEDIR)/src/include/pw3270/*.h \  
82 - *.h \  
83 - Makefile  
84 -  
85 -$(OBJDBG)/%.o: \  
86 - %.cc \  
87 - $(DEPENDS)  
88 -  
89 - @echo $< ...  
90 - @$(MKDIR) `dirname $@`  
91 - @$(CC) \  
92 - $(CFLAGS) \  
93 - @DBG_CFLAGS@ \  
94 - -DBUILD_DATE=`date +"%Y%m%d"`\  
95 - -o $@ -c $<  
96 -  
97 -$(OBJRLS)/%.o: \  
98 - %.cc \  
99 - $(DEPENDS)  
100 -  
101 - @echo $< ...  
102 - @$(MKDIR) `dirname $@`  
103 - @$(CC) $(CFLAGS) \  
104 - @RLS_CFLAGS@ \  
105 - -DBUILD_DATE=`date +"%Y%m%d"` \  
106 - -o $@ -c $<  
107 -  
108 -$(POTDIR)/%.pot: %.c  
109 -  
110 - @echo $(notdir $@) ...  
111 - @$(MKDIR) `dirname $@`  
112 - @$(XGETTEXT) \  
113 - --default-domain=$(PACKAGE) \  
114 - --language=C \  
115 - --keyword=_ \  
116 - --keyword=N_ \  
117 - --keyword=MSG_:2 \  
118 - --output=$@ \  
119 - $<  
120 -  
121 - @touch $@  
122 -  
123 -#---[ Release Targets ]------------------------------------------------------------------  
124 -  
125 -all: \  
126 - $(BASEDIR)/.bin/Release/$(MODULE_NAME).a  
127 -  
128 -Release: \  
129 - $(BASEDIR)/.bin/Release/$(MODULE_NAME).a  
130 -  
131 -install: \  
132 - $(DESTDIR)$(libdir)/$(MODULE_NAME).a  
133 -  
134 - @$(MKDIR) $(DESTDIR)/$(includedir)/pw3270  
135 - @$(INSTALL_DATA) ../include/pw3270cpp.h $(DESTDIR)/$(includedir)/pw3270  
136 -  
137 -$(DESTDIR)$(libdir)/$(MODULE_NAME).a: \  
138 - $(BASEDIR)/.bin/Release/$(MODULE_NAME).a  
139 -  
140 - @echo $@ ...  
141 - @$(MKDIR) `dirname $@`  
142 - @$(INSTALL_DATA) $^ $@  
143 -  
144 -$(BASEDIR)/.bin/Release/$(MODULE_NAME).a: \  
145 - $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)  
146 -  
147 - @echo $@ ...  
148 - @$(MKDIR) `dirname $@`  
149 - @$(AR) rcs $@ $^  
150 -  
151 -pot: \  
152 - $(BASEDIR)/.pot/$(PACKAGE_TARNAME)/$(MODULE_NAME).pot  
153 -  
154 -$(BASEDIR)/.pot/$(PACKAGE_TARNAME)/$(MODULE_NAME).pot: \  
155 - $(foreach SRC, $(basename $(SOURCES)), $(POTDIR)/$(SRC).pot)  
156 -  
157 - @rm -f $@  
158 - @mkdir -p `dirname $@`  
159 - @$(MSGCAT) --sort-output $^ > $@  
160 -  
161 -$(SRCDIR): \  
162 - clean  
163 -  
164 - @$(MKDIR) $@  
165 - @$(INSTALL_DATA) *.cc *.h *.in *.cbp $@  
166 -  
167 -  
168 -#---[ Debug Targets ]--------------------------------------------------------------------  
169 -  
170 -Debug: \  
171 - $(BASEDIR)/.bin/Debug/$(MODULE_NAME).a  
172 -  
173 -$(BASEDIR)/.bin/Debug/$(MODULE_NAME).a: \  
174 - $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o)  
175 -  
176 - @echo $@ ...  
177 - @$(MKDIR) `dirname $@`  
178 - @$(AR) rcs $@ $^  
179 -  
180 -.bin/Debug/$(MODULE_NAME)@EXEEXT@: \  
181 - $(OBJDBG)/testprogram.o \  
182 - $(BASEDIR)/.bin/Debug/$(MODULE_NAME).a  
183 -  
184 - @$(MKDIR) `dirname $@`  
185 - @$(LD) $(APP_LDFLAGS) -o $@ $^ $(LIBS)  
186 -  
187 -run: \  
188 - .bin/Debug/$(MODULE_NAME)@EXEEXT@  
189 -  
190 -ifeq ($(VALGRIND),no)  
191 - .bin/Debug/$(MODULE_NAME)@EXEEXT@  
192 -else  
193 - @touch valgrind.suppression  
194 - @$(VALGRIND) \  
195 - --leak-check=full \  
196 - --track-origins=yes \  
197 - --gen-suppressions=all \  
198 - --suppressions=valgrind.suppression \  
199 - .bin/Debug/$(MODULE_NAME)@EXEEXT@  
200 -endif  
201 -  
202 -  
203 -#---[ Clean Targets]---------------------------------------------------------------------  
204 -  
205 -cleanDebug:  
206 -  
207 - @rm -fr $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a \  
208 - $(OBJDBG)  
209 - @rm -fr .bin  
210 -  
211 -cleanRelease:  
212 -  
213 - @rm -fr $(BASEDIR)/.obj/Release/$(MODULE_NAME).a \  
214 - $(OBJRLS)  
215 -  
216 - @rm -fr $(POTDIR)  
217 -  
218 -clean: \  
219 - cleanDebug \  
220 - cleanRelease  
221 -  
222 -  
src/libpw3270cpp/classlib.cbp
@@ -1,53 +0,0 @@ @@ -1,53 +0,0 @@
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="pw3270 Class Library" />  
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/libpw3270cpp" 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/pw3270 Class Library" prefix_auto="1" extension_auto="1" />  
21 - <Option working_dir="" />  
22 - <Option object_output=".obj/Release/" />  
23 - <Option type="2" />  
24 - <Option compiler="gcc" />  
25 - <Compiler>  
26 - <Add option="-O2" />  
27 - </Compiler>  
28 - <Linker>  
29 - <Add option="-s" />  
30 - </Linker>  
31 - </Target>  
32 - </Build>  
33 - <Compiler>  
34 - <Add option="-Wall" />  
35 - </Compiler>  
36 - <Unit filename="../include/pw3270/ipcpackets.h" />  
37 - <Unit filename="../include/pw3270cpp.h" />  
38 - <Unit filename="Makefile.in" />  
39 - <Unit filename="exception.cc" />  
40 - <Unit filename="local.cc" />  
41 - <Unit filename="module.cc" />  
42 - <Unit filename="private.h" />  
43 - <Unit filename="remote.cc" />  
44 - <Unit filename="service.cc" />  
45 - <Unit filename="session.cc" />  
46 - <Unit filename="testprogram.cc" />  
47 - <Extensions>  
48 - <envvars />  
49 - <code_completion />  
50 - <debugger />  
51 - </Extensions>  
52 - </Project>  
53 -</CodeBlocks_project_file>  
src/libpw3270cpp/exception.cc
@@ -1,100 +0,0 @@ @@ -1,100 +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 exception.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 <stdarg.h>  
31 - #include <stdio.h>  
32 - #include <string.h>  
33 -  
34 - #include <pw3270cpp.h>  
35 -  
36 -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/  
37 -  
38 - namespace PW3270_NAMESPACE  
39 - {  
40 -  
41 - exception::exception(int syscode)  
42 - {  
43 - snprintf(this->msg,4095,"%s",strerror(syscode));  
44 - }  
45 -  
46 - exception::exception(const char *fmt, ...)  
47 - {  
48 - va_list arg_ptr;  
49 - va_start(arg_ptr, fmt);  
50 - vsnprintf(this->msg,4095,fmt,arg_ptr);  
51 - va_end(arg_ptr);  
52 - }  
53 -  
54 -#ifdef _WIN32  
55 - exception::exception(DWORD error, const char *fmt, ...)  
56 - {  
57 - LPVOID lpMsgBuf = 0;  
58 - char * ptr;  
59 - size_t szPrefix;  
60 -  
61 - va_list arg_ptr;  
62 - va_start(arg_ptr, fmt);  
63 - vsnprintf(this->msg,4095,fmt,arg_ptr);  
64 - va_end(arg_ptr);  
65 -  
66 - szPrefix = strlen(this->msg);  
67 -  
68 - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);  
69 -  
70 - for(ptr= (char *) lpMsgBuf;*ptr && *ptr != '\n';ptr++);  
71 - *ptr = 0;  
72 -  
73 - snprintf(this->msg+szPrefix,4095-szPrefix,": %s (rc=%d)",(char *) lpMsgBuf,(int) error);  
74 -  
75 - LocalFree(lpMsgBuf);  
76 -  
77 - }  
78 -#else  
79 - exception::exception(int error, const char *fmt, ...)  
80 - {  
81 - size_t szPrefix;  
82 -  
83 - va_list arg_ptr;  
84 - va_start(arg_ptr, fmt);  
85 - vsnprintf(this->msg,4095,fmt,arg_ptr);  
86 - va_end(arg_ptr);  
87 -  
88 - szPrefix = strlen(this->msg);  
89 -  
90 - snprintf(this->msg+szPrefix,4095-szPrefix,": %s (rc=%d)",strerror(error),(int) error);  
91 -  
92 - }  
93 -#endif // _WIN32  
94 -  
95 - const char * exception::what() const throw()  
96 - {  
97 - return this->msg;  
98 - }  
99 -  
100 - }  
src/libpw3270cpp/local.cc
@@ -1,615 +0,0 @@ @@ -1,615 +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 local.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 -#ifdef _WIN32  
31 -  
32 - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx  
33 - #ifndef LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
34 - #define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x00001000  
35 - #endif // LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
36 -  
37 - #ifndef LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
38 - #define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x00000100  
39 - #endif // LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
40 -  
41 - #include <windows.h>  
42 -  
43 -#else  
44 -  
45 - #include <dlfcn.h>  
46 -  
47 -#endif  
48 -  
49 -#include "private.h"  
50 -  
51 -#include <lib3270/log.h>  
52 -#include <lib3270/popup.h>  
53 -#include <lib3270/trace.h>  
54 -#include <string.h>  
55 -#include <stdio.h>  
56 -  
57 -#ifdef HAVE_SYSLOG  
58 - #include <syslog.h>  
59 - #include <stdarg.h>  
60 -#endif // HAVE_SYSLOG  
61 -  
62 -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/  
63 -  
64 - extern "C"  
65 - {  
66 - static void loghandler(H3270 *session, const char *module, int rc, const char *fmt, va_list args)  
67 - {  
68 - #ifdef HAVE_SYSLOG  
69 - openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER);  
70 - vsyslog(LOG_INFO,fmt,args);  
71 - closelog();  
72 - #endif // HAVE_SYSLOG  
73 - }  
74 -  
75 - static void tracehandler(H3270 *session, void *dunno, const char *fmt, va_list args)  
76 - {  
77 - #ifdef HAVE_SYSLOG  
78 -  
79 - #define MAX_LOG_LENGTH 200  
80 -  
81 - static char line[MAX_LOG_LENGTH+1];  
82 - char temp[MAX_LOG_LENGTH];  
83 - char * ptr;  
84 - size_t len = strlen(line);  
85 -  
86 - vsnprintf(temp,MAX_LOG_LENGTH-len,fmt,args);  
87 -  
88 - ptr = strchr(temp,'\n');  
89 - if(!ptr)  
90 - {  
91 - strncat(line,temp,MAX_LOG_LENGTH);  
92 - if(strlen(line) >= MAX_LOG_LENGTH)  
93 - {  
94 - openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER);  
95 - syslog(LOG_INFO,"%s",line);  
96 - closelog();  
97 - *line = 0;  
98 - }  
99 - return;  
100 - }  
101 -  
102 - *ptr = 0;  
103 - strncat(line,temp,MAX_LOG_LENGTH);  
104 -  
105 - openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER);  
106 - syslog(LOG_DEBUG,"%s",line);  
107 - closelog();  
108 -  
109 - strncpy(line,ptr+1,MAX_LOG_LENGTH);  
110 -  
111 - #endif // HAVE_SYSLOG  
112 - }  
113 -  
114 - }  
115 -  
116 - namespace PW3270_NAMESPACE  
117 - {  
118 -  
119 - class local : public session, protected module, protected recursive_mutex  
120 - {  
121 - private:  
122 -  
123 - // Lib3270 entry points  
124 - const char * (*_get_version)(void);  
125 - LIB3270_CSTATE (*_get_connection_state)(H3270 *h);  
126 - LIB3270_MESSAGE (*_get_program_message)(H3270 *h);  
127 - LIB3270_SSL_STATE (*_get_secure)(H3270 *h);  
128 -  
129 -  
130 - int (*_disconnect)(H3270 *h);  
131 - int (*_connect)(H3270 *h, const char *url, int wait);  
132 - const char (*_set_url)(H3270 *h, const char *n);  
133 - const char * (*_get_url)(H3270 *h, char *str, int len);  
134 - int (*_is_connected)(H3270 *h);  
135 - void (*_main_iterate)(H3270 *h, int wait);  
136 - int (*_wait)(H3270 *hSession, int seconds);  
137 - int (*_enter)(H3270 *hSession);  
138 - int (*_pfkey)(H3270 *hSession, int key);  
139 - int (*_pakey)(H3270 *hSession, int key);  
140 - int (*_wait_for_ready)(H3270 *hSession, int seconds);  
141 - char * (*_get_text)(H3270 *h, int offset, int len, char lf);  
142 - char * (*_get_text_at)(H3270 *h, int row, int col, int len, char lf);  
143 - int (*_cmp_text_at)(H3270 *h, int row, int col, const char *text, char lf);  
144 - int (*_set_text_at)(H3270 *h, int row, int col, const unsigned char *str);  
145 - int (*_is_ready)(H3270 *h);  
146 - int (*_set_cursor_position)(H3270 *h, int row, int col);  
147 - int (*_set_toggle)(H3270 *h, LIB3270_TOGGLE ix, int value);  
148 - int (*_get_field_start)(H3270 *h, int baddr);  
149 - int (*_get_field_len)(H3270 *h, int baddr);  
150 - int (*_set_cursor_addr)(H3270 *h, int addr);  
151 - int (*_get_cursor_addr)(H3270 *h);  
152 - int (*_emulate_input)(H3270 *session, const char *s, int len, int pasting);  
153 - int (*_get_next_unprotected)(H3270 *hSession, int baddr0);  
154 - int (*_get_is_protected)(H3270 *hSession, int baddr);  
155 - int (*_get_is_protected_at)(H3270 *hSession, int row, int col);  
156 - void (*_popup_va)(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, va_list);  
157 - void * (*_free)(void *);  
158 - const char * (*_get_display_charset)(H3270 *hSession);  
159 - int (*_set_host_charset)(H3270 *hSession, const char *name);  
160 - const char * (*_get_host_charset)(H3270 *hSession);  
161 - int (*_print)(H3270 *hSession);  
162 - int (*_erase)(H3270 *hSession);  
163 - int (*_erase_eof)(H3270 *hSession);  
164 - int (*_erase_eol)(H3270 *hSession);  
165 - int (*_erase_input)(H3270 *hSession);  
166 - int (*_action)(H3270 *hSession, const char *name);  
167 - int (*_set_unlock_delay)(H3270 *hSession, unsigned short ms);  
168 -  
169 - int (*_get_width)(H3270 *hSession);  
170 - int (*_get_height)(H3270 *hSession);  
171 - int (*_get_length)(H3270 *hSession);  
172 -  
173 - const char * (*_ebc2asc)(H3270 *hSession, unsigned char *buffer, int sz);  
174 - const char * (*_asc2ebc)(H3270 *hSession, unsigned char *buffer, int sz);  
175 -  
176 - protected:  
177 -  
178 - H3270 * hSession;  
179 -  
180 - void load_methods() {  
181 -  
182 - void (*set_log_handler)(void (*loghandler)(H3270 *, const char *, int, const char *, va_list));  
183 - void (*set_trace_handler)(H3270 *hSession, LIB3270_TRACE_HANDLER handler, void *userdata);  
184 -  
185 - struct _call  
186 - {  
187 - void **entry;  
188 - const char * name;  
189 - } call[] =  
190 - {  
191 - { (void **) & set_log_handler, "lib3270_set_log_handler" },  
192 - { (void **) & set_trace_handler, "lib3270_set_trace_handler" },  
193 -  
194 - { (void **) & _is_connected, "lib3270_is_connected" },  
195 - { (void **) & _get_connection_state, "lib3270_get_connection_state" },  
196 - { (void **) & _get_program_message, "lib3270_get_program_message" },  
197 - { (void **) & _get_secure, "lib3270_get_secure" },  
198 -  
199 - { (void **) & _get_version, "lib3270_get_version" },  
200 - { (void **) & _disconnect, "lib3270_disconnect" },  
201 - { (void **) & _connect, "lib3270_connect_url" },  
202 - { (void **) & _set_url, "lib3270_set_url" },  
203 - { (void **) & _get_url, "lib3270_get_url" },  
204 - { (void **) & _main_iterate, "lib3270_main_iterate" },  
205 - { (void **) & _wait, "lib3270_wait" },  
206 - { (void **) & _enter, "lib3270_enter" },  
207 - { (void **) & _pfkey, "lib3270_pfkey" },  
208 - { (void **) & _pakey, "lib3270_pakey" },  
209 - { (void **) & _wait_for_ready, "lib3270_wait_for_ready" },  
210 - { (void **) & _get_text, "lib3270_get_string_at_address" },  
211 -  
212 - { (void **) & _get_text_at, "lib3270_get_string_at" },  
213 - { (void **) & _cmp_text_at, "lib3270_cmp_text_at" },  
214 - { (void **) & _set_text_at, "lib3270_set_string_at" },  
215 -  
216 - { (void **) & _is_ready, "lib3270_is_ready" },  
217 - { (void **) & _set_cursor_position, "lib3270_set_cursor_position" },  
218 - { (void **) & _set_toggle, "lib3270_set_toggle" },  
219 - { (void **) & _get_field_start, "lib3270_get_field_start" },  
220 - { (void **) & _get_field_len, "lib3270_get_field_len" },  
221 - { (void **) & _set_cursor_addr, "lib3270_set_cursor_address" },  
222 - { (void **) & _get_cursor_addr, "lib3270_get_cursor_address" },  
223 - { (void **) & _emulate_input, "lib3270_emulate_input" },  
224 - { (void **) & _get_next_unprotected, "lib3270_get_next_unprotected" },  
225 - { (void **) & _get_is_protected, "lib3270_get_is_protected" },  
226 - { (void **) & _get_is_protected_at, "lib3270_get_is_protected_at" },  
227 - { (void **) & _popup_va, "lib3270_popup_va" },  
228 - { (void **) & _free, "lib3270_free" },  
229 - { (void **) & _get_display_charset, "lib3270_get_display_charset" },  
230 - { (void **) & _set_host_charset, "lib3270_set_host_charset" },  
231 - { (void **) & _get_host_charset, "lib3270_get_host_charset" },  
232 -  
233 - { (void **) & _erase, "lib3270_erase" },  
234 - { (void **) & _erase_eof, "lib3270_eraseeof" },  
235 - { (void **) & _erase_eol, "lib3270_eraseeol" },  
236 - { (void **) & _erase_input, "lib3270_eraseinput" },  
237 -  
238 - { (void **) & _print, "lib3270_print" },  
239 - { (void **) & _ebc2asc, "lib3270_ebc2asc" },  
240 - { (void **) & _asc2ebc, "lib3270_asc2ebc" },  
241 -  
242 - { (void **) & _action, "lib3270_action" },  
243 - { (void **) & _set_unlock_delay, "lib3270_set_unlock_delay" },  
244 -  
245 - { (void **) & _get_width, "lib3270_get_width" },  
246 - { (void **) & _get_height, "lib3270_get_height" },  
247 - { (void **) & _get_length, "lib3270_get_length" },  
248 -  
249 - };  
250 -  
251 - for(unsigned int f = 0; f < (sizeof (call) / sizeof ((call)[0]));f++)  
252 - {  
253 - *call[f].entry = (void *) get_symbol(call[f].name);  
254 - if(!*call[f].entry)  
255 - throw exception("Can't find symbol %s",call[f].name);  
256 - }  
257 -  
258 - // Get Session handle, setup base callbacks  
259 - set_log_handler(loghandler);  
260 - set_trace_handler(this->hSession, tracehandler, NULL);  
261 -  
262 - set_display_charset();  
263 -  
264 - }  
265 -  
266 - public:  
267 -  
268 - local() : module(LIB3270_STRINGIZE_VALUE_OF(LIB3270_NAME),PACKAGE_VERSION)  
269 - {  
270 - }  
271 -  
272 - virtual ~local()  
273 - {  
274 - }  
275 -  
276 - bool is_connected(void)  
277 - {  
278 - return _is_connected(hSession);  
279 - }  
280 -  
281 - LIB3270_CSTATE get_cstate(void)  
282 - {  
283 - return _get_connection_state(hSession);  
284 - }  
285 -  
286 - LIB3270_MESSAGE get_program_message(void) {  
287 - return _get_program_message(hSession);  
288 - }  
289 -  
290 - LIB3270_SSL_STATE get_secure(void) {  
291 - return _get_secure(hSession);  
292 - };  
293 -  
294 - int connect(const char *host, time_t wait = 0) {  
295 - this->lock();  
296 - int rc = _connect(hSession,host,wait);  
297 - this->unlock();  
298 - return rc;  
299 - }  
300 -  
301 - int connect() {  
302 - return connect("");  
303 - }  
304 -  
305 - /*  
306 - int connect(void)  
307 - {  
308 - this->lock();  
309 - int rc = _connect(hSession,0);  
310 - this->unlock();  
311 -  
312 - return rc;  
313 - }  
314 - */  
315 -  
316 - int set_url(const char *uri)  
317 - {  
318 - return (_set_url(hSession,uri) == 0);  
319 - }  
320 -  
321 - string get_url()  
322 - {  
323 - char buffer[1024];  
324 - return string(_get_url(hSession,buffer,sizeof(buffer)));  
325 - }  
326 -  
327 - int disconnect(void)  
328 - {  
329 - this->lock();  
330 - int rc = _disconnect(hSession);  
331 - this->unlock();  
332 -  
333 - return rc;  
334 - }  
335 -  
336 - bool is_ready(void)  
337 - {  
338 - return _is_ready(hSession) != 0;  
339 - }  
340 -  
341 - int wait_for_ready(int seconds)  
342 - {  
343 - return _wait_for_ready(hSession,seconds);  
344 - }  
345 -  
346 - int wait(int seconds)  
347 - {  
348 - return _wait(hSession,seconds);  
349 - }  
350 -  
351 - int iterate(bool wait)  
352 - {  
353 - this->lock();  
354 - _main_iterate(hSession,wait);  
355 - this->unlock();  
356 - return 0;  
357 - }  
358 -  
359 - string get_text_at(int row, int col, size_t sz, bool lf)  
360 - {  
361 - string rc;  
362 - char * ptr = _get_text_at(hSession,row,col,sz,lf ? '\n' : 0);  
363 -  
364 - if(ptr)  
365 - {  
366 - rc.assign(ptr);  
367 - _free(ptr);  
368 - }  
369 -  
370 - return rc;  
371 - }  
372 -  
373 - int set_text_at(int row, int col, const char *str)  
374 - {  
375 - return _set_text_at(hSession,row,col,(const unsigned char *) str);  
376 - }  
377 -  
378 - int cmp_text_at(int row, int col, const char *text, bool lf)  
379 - {  
380 - return _cmp_text_at(hSession,row,col,text,lf ? '\n' : 0);  
381 - }  
382 -  
383 - string get_text(int offset, size_t len, bool lf)  
384 - {  
385 - string rc;  
386 - char * ptr = _get_text(hSession,offset,len,lf ? '\n' : 0);  
387 -  
388 - if(ptr)  
389 - {  
390 - rc.assign(ptr);  
391 - _free(ptr);  
392 - }  
393 -  
394 - return rc;  
395 - }  
396 -  
397 - int set_cursor_position(int row, int col)  
398 - {  
399 - return _set_cursor_position(hSession,row,col);  
400 - }  
401 -  
402 - int set_cursor_addr(int addr)  
403 - {  
404 - return _set_cursor_addr(hSession,addr);  
405 - }  
406 -  
407 - int get_cursor_addr(void)  
408 - {  
409 - return _get_cursor_addr(hSession);  
410 - }  
411 -  
412 - int enter(void)  
413 - {  
414 - return _enter(hSession);  
415 - }  
416 -  
417 - int pfkey(int key)  
418 - {  
419 - return _pfkey(hSession,key);  
420 - }  
421 -  
422 - int pakey(int key)  
423 - {  
424 - return _pakey(hSession,key);  
425 - }  
426 -  
427 - int quit(void)  
428 - {  
429 - return EINVAL;  
430 - }  
431 -  
432 - int set_toggle(LIB3270_TOGGLE ix, bool value)  
433 - {  
434 - return _set_toggle(hSession, ix, (int) value);  
435 - }  
436 -  
437 - int emulate_input(const char *str)  
438 - {  
439 - return _emulate_input(hSession,str,-1,1);  
440 - }  
441 -  
442 - int get_field_start(int baddr)  
443 - {  
444 - return _get_field_start(hSession,baddr);  
445 - }  
446 -  
447 - int get_field_len(int baddr)  
448 - {  
449 - return _get_field_len(hSession,baddr);  
450 - }  
451 -  
452 - int get_next_unprotected(int baddr)  
453 - {  
454 - return _get_next_unprotected(hSession,baddr);  
455 - }  
456 -  
457 - int get_is_protected(int baddr)  
458 - {  
459 - return _get_is_protected(hSession,baddr);  
460 - }  
461 -  
462 - int get_is_protected_at(int row, int col)  
463 - {  
464 - return _get_is_protected_at(hSession,row,col);  
465 - }  
466 -  
467 - int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...)  
468 - {  
469 - va_list args;  
470 - va_start(args, fmt);  
471 - _popup_va(hSession, id, title, message, fmt, args);  
472 - va_end(args);  
473 - return 0;  
474 - }  
475 -  
476 - string get_display_charset(void)  
477 - {  
478 - return string(_get_display_charset(hSession));  
479 - }  
480 -  
481 - int set_host_charset(const char *charset)  
482 - {  
483 - return _set_host_charset(hSession,charset);  
484 - }  
485 -  
486 - string get_host_charset(void)  
487 - {  
488 - return string(_get_host_charset(hSession));  
489 - }  
490 -  
491 - int erase(void)  
492 - {  
493 - return _erase(hSession);  
494 - }  
495 -  
496 - int erase_eof(void)  
497 - {  
498 - return _erase_eof(hSession);  
499 - }  
500 -  
501 - int erase_eol(void)  
502 - {  
503 - return _erase_eol(hSession);  
504 - }  
505 -  
506 - int erase_input(void)  
507 - {  
508 - return _erase_input(hSession);  
509 - }  
510 -  
511 - int print(void)  
512 - {  
513 - return _print(hSession);  
514 - }  
515 -  
516 -  
517 - const char * asc2ebc(unsigned char *str, int sz)  
518 - {  
519 - return _asc2ebc(hSession,str,sz);  
520 - }  
521 -  
522 - const char * ebc2asc(unsigned char *str, int sz)  
523 - {  
524 - return _ebc2asc(hSession,str,sz);  
525 - }  
526 -  
527 - int action(const char *name)  
528 - {  
529 - return _action(hSession,name);  
530 - }  
531 -  
532 - void set_unlock_delay(unsigned short ms)  
533 - {  
534 - _set_unlock_delay(hSession,ms);  
535 - }  
536 -  
537 - int get_width(void) {  
538 - return _get_width(hSession);  
539 - }  
540 -  
541 - int get_height(void) {  
542 - return _get_height(hSession);  
543 - }  
544 -  
545 - int get_length(void) {  
546 - return _get_length(hSession);  
547 - }  
548 -  
549 - };  
550 -  
551 - session * session::create_local(void)  
552 - {  
553 - class obj : public local {  
554 - public:  
555 - obj() : local() {  
556 -  
557 - H3270 * (*lib3270_new)(const char *) = (H3270 * (*)(const char *)) get_symbol("lib3270_session_new");  
558 -  
559 - if(!lib3270_new)  
560 - throw exception("Can't find symbol %s","lib3270_session_new");  
561 -  
562 - this->hSession = lib3270_new("");  
563 -  
564 - load_methods();  
565 -  
566 - }  
567 -  
568 - virtual ~obj() {  
569 -  
570 - this->lock();  
571 -  
572 - if(is_connected()) {  
573 - disconnect();  
574 - }  
575 -  
576 - try  
577 - {  
578 - static void (*session_free)(H3270 *h) = (void (*)(H3270 *)) get_symbol("lib3270_session_free");  
579 -  
580 - if(session_free && this->hSession)  
581 - session_free(this->hSession);  
582 -  
583 - this->hSession = 0;  
584 -  
585 - }  
586 - catch(exception e) { }  
587 -  
588 - this->unlock();  
589 -  
590 - }  
591 - };  
592 -  
593 - return new obj();  
594 - }  
595 -  
596 - session * session::create_local(H3270 *hSession)  
597 - {  
598 - class obj : public local {  
599 - public:  
600 - obj(H3270 *hSession) : local()  
601 - {  
602 - this->hSession = hSession;  
603 - load_methods();  
604 - }  
605 -  
606 - virtual ~obj() {  
607 - }  
608 -  
609 - };  
610 -  
611 - return new obj(hSession);  
612 - }  
613 -  
614 - }  
615 -  
src/libpw3270cpp/module.cc
@@ -1,218 +0,0 @@ @@ -1,218 +0,0 @@
1 -/*  
2 - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270  
3 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a  
4 - * aplicativos mainframe. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin  
19 - * St, Fifth Floor, Boston, MA 02110-1301 USA  
20 - *  
21 - * Este programa está nomeado como module.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 -#ifdef _WIN32  
31 -  
32 - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx  
33 - #ifndef LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
34 - #define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x00001000  
35 - #endif // LOAD_LIBRARY_SEARCH_DEFAULT_DIRS  
36 -  
37 - #ifndef LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
38 - #define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x00000100  
39 - #endif // LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR  
40 -  
41 - #include <windows.h>  
42 -  
43 -#else  
44 -  
45 - #include <dlfcn.h>  
46 -  
47 -#endif  
48 -  
49 -#include <pw3270cpp.h>  
50 -  
51 -/*---[ Implement ]----------------------------------------------------------------------------------*/  
52 -  
53 -  
54 -namespace PW3270_NAMESPACE  
55 -{  
56 -  
57 -#ifdef _WIN32  
58 - int module::get_datadir(LPSTR datadir)  
59 - {  
60 - HKEY hKey = 0;  
61 - unsigned long datalen = strlen(datadir);  
62 -  
63 - *datadir = 0;  
64 -  
65 - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)  
66 - {  
67 - unsigned long datatype; // #defined in winnt.h (predefined types 0-11)  
68 - if(RegQueryValueExA(hKey,"datadir",NULL,&datatype,(LPBYTE) datadir,&datalen) != ERROR_SUCCESS)  
69 - *datadir = 0;  
70 - RegCloseKey(hKey);  
71 - }  
72 -  
73 - return *datadir;  
74 - }  
75 -#endif // _WIN32  
76 -  
77 - module::module(const char *name, const char *version)  
78 - {  
79 - string dllname = name;  
80 -  
81 -#ifdef _WIN32  
82 -  
83 - dllname += ".dll";  
84 - if(version)  
85 - {  
86 - dllname += ".";  
87 - dllname += version;  
88 - }  
89 -  
90 - HMODULE kernel;  
91 - HANDLE cookie = NULL;  
92 - DWORD rc;  
93 - HANDLE WINAPI (*AddDllDirectory)(PCWSTR NewDirectory);  
94 - BOOL WINAPI (*RemoveDllDirectory)(HANDLE Cookie);  
95 - UINT errorMode;  
96 - char datadir[4096];  
97 - char buffer[4096];  
98 -  
99 - kernel = LoadLibrary("kernel32.dll");  
100 - AddDllDirectory = (HANDLE WINAPI (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory");  
101 - RemoveDllDirectory = (BOOL WINAPI (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory");  
102 -  
103 - // Notify user in case of error loading protocol DLL  
104 - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621(v=vs.85).aspx  
105 - errorMode = SetErrorMode(1);  
106 -  
107 - memset(datadir,' ',4095);  
108 - datadir[4095] = 0;  
109 -  
110 - if(get_datadir(datadir))  
111 - {  
112 - trace("Datadir=[%s] AddDllDirectory=%p RemoveDllDirectory=%p\n",datadir,AddDllDirectory,RemoveDllDirectory);  
113 -  
114 - if(AddDllDirectory)  
115 - {  
116 - wchar_t *path = (wchar_t *) malloc(4096*sizeof(wchar_t));  
117 - mbstowcs(path, datadir, 4095);  
118 - cookie = AddDllDirectory(path);  
119 - free(path);  
120 - }  
121 -  
122 -#ifdef DEBUG  
123 - snprintf(buffer,4096,"%s\\.bin\\Debug\\%s",datadir,dllname.c_str());  
124 -#else  
125 - snprintf(buffer,4096,"%s\\%s",datadir,dllname.c_str());  
126 -#endif // DEBUG  
127 -  
128 - trace("Loading [%s] [%s]",buffer,datadir);  
129 - hModule = LoadLibrary(buffer);  
130 -  
131 - trace("Module=%p rc=%d",hModule,(int) GetLastError());  
132 -  
133 - if(hModule == NULL)  
134 - {  
135 - // Enable DLL error popup and try again with full path  
136 - SetErrorMode(0);  
137 - hModule = LoadLibraryEx(buffer,NULL,LOAD_LIBRARY_SEARCH_DEFAULT_DIRS|LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR);  
138 - }  
139 -  
140 - rc = GetLastError();  
141 -  
142 - trace("%s hModule=%p rc=%d",buffer,hModule,(int) rc);  
143 - }  
144 - else  
145 - {  
146 - hModule = LoadLibrary(dllname.c_str());  
147 - rc = GetLastError();  
148 - }  
149 -  
150 - SetErrorMode(errorMode);  
151 -  
152 - trace("%s hModule=%p rc=%d",dllname.c_str(),hModule,(int) rc);  
153 -  
154 - if(cookie && RemoveDllDirectory)  
155 - RemoveDllDirectory(cookie);  
156 -  
157 - if(kernel)  
158 - FreeLibrary(kernel);  
159 -  
160 - if(!hModule)  
161 - {  
162 - throw exception("%s: %s",dllname.c_str(),session::win32_strerror(rc).c_str());  
163 - }  
164 -  
165 -#else  
166 - dllname += ".so";  
167 - if(version)  
168 - {  
169 - dllname += ".";  
170 - dllname += version;  
171 - }  
172 -  
173 - dlerror();  
174 -  
175 - trace("Loading %s",dllname.c_str());  
176 - hModule = dlopen(dllname.c_str(), RTLD_NOW);  
177 - if(!hModule)  
178 - throw exception("Can't load lib3270: %s",dllname.c_str());  
179 -  
180 -#endif // _WIN32  
181 -  
182 -  
183 - }  
184 -  
185 - module::~module()  
186 - {  
187 -#ifdef _WIN32  
188 - FreeLibrary(hModule);  
189 -#else  
190 - dlclose(hModule);  
191 -#endif // _WIN32  
192 - }  
193 -  
194 -  
195 - void * module::get_symbol(const char *name)  
196 - {  
197 - void *symbol;  
198 -  
199 -#ifdef _WIN32  
200 -  
201 - symbol = (void *) GetProcAddress(hModule,name);  
202 -  
203 - if(!symbol)  
204 - throw exception("Can't load symbol %s",name);  
205 -  
206 -#else  
207 - symbol = dlsym(hModule,name);  
208 -  
209 - if(!symbol)  
210 - throw exception("Can't load symbol %s dlerror was \"%s\"",name,dlerror());  
211 -  
212 -#endif // _WIN32  
213 -  
214 - return symbol;  
215 - }  
216 -  
217 -}  
218 -  
src/libpw3270cpp/private.h
@@ -1,119 +0,0 @@ @@ -1,119 +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 - */  
29 -  
30 -#ifndef PRIVATE_H_INCLUDED  
31 -  
32 - #define PRIVATE_H_INCLUDED  
33 -  
34 - #include <config.h>  
35 - #include <cstring>  
36 - #include <pw3270cpp.h>  
37 -  
38 - #if defined(_WIN32)  
39 -  
40 - class recursive_mutex {  
41 - private:  
42 - HANDLE hMutex;  
43 -  
44 - public:  
45 - recursive_mutex() {  
46 - hMutex = CreateMutex(NULL,FALSE,NULL);  
47 - };  
48 -  
49 - ~recursive_mutex() {  
50 - CloseHandle(hMutex);  
51 - };  
52 -  
53 - void lock(void) {  
54 - WaitForSingleObject(hMutex,INFINITE);  
55 - };  
56 -  
57 - void unlock(void) {  
58 - ReleaseMutex(hMutex);  
59 - };  
60 -  
61 - bool try_lock(void) {  
62 - if(WaitForSingleObject(hMutex,1) == WAIT_OBJECT_0)  
63 - return true;  
64 - return false;  
65 - };  
66 - };  
67 -  
68 - #elif __cplusplus < 201103L  
69 -  
70 - #define nullptr NULL  
71 -  
72 - class recursive_mutex {  
73 - private:  
74 - pthread_mutex_t mtx;  
75 - pthread_mutexattr_t mtxAttr;  
76 -  
77 - public:  
78 - recursive_mutex() {  
79 -  
80 - memset(&mtx,0,sizeof(mtx));  
81 - memset(&mtxAttr,0,sizeof(mtxAttr));  
82 -  
83 - pthread_mutexattr_init(&mtxAttr);  
84 - pthread_mutexattr_settype(&mtxAttr, PTHREAD_MUTEX_RECURSIVE);  
85 - pthread_mutex_init(&mtx, &mtxAttr);  
86 - };  
87 -  
88 - ~recursive_mutex() {  
89 - pthread_mutex_destroy(&mtx);  
90 - };  
91 -  
92 - void lock(void) {  
93 - pthread_mutex_lock(&mtx);  
94 - };  
95 -  
96 - void unlock(void) {  
97 - pthread_mutex_unlock(&mtx);  
98 - };  
99 -  
100 - bool try_lock(void) {  
101 - return pthread_mutex_trylock(&mtx) == 0;  
102 - };  
103 - };  
104 -  
105 - #else  
106 -  
107 - #include <mutex>  
108 -  
109 - #endif // !c11  
110 -  
111 - namespace PW3270_NAMESPACE  
112 - {  
113 -  
114 - session * create_service_client(const char *session);  
115 -  
116 - }  
117 -  
118 -  
119 -#endif // PRIVATE_H_INCLUDED  
src/libpw3270cpp/remote.cc
@@ -1,1656 +0,0 @@ @@ -1,1656 +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 remote.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 <config.h>  
31 - #include <iostream>  
32 -  
33 - #if defined(HAVE_DBUS)  
34 - #include <stdio.h>  
35 - #include <dbus/dbus.h>  
36 - #include <string.h>  
37 - #include <malloc.h>  
38 - #include <sys/types.h>  
39 - #include <limits.h>  
40 -  
41 - #ifndef DBUS_TIMEOUT_INFINITE  
42 - #define DBUS_TIMEOUT_INFINITE ((int) 0x7fffffff)  
43 - #endif // !DBUS_TIMEOUT_INFINITE  
44 -  
45 - #endif // HAVE_DBUS  
46 -  
47 - #if defined(_WIN32)  
48 - #include <windows.h>  
49 - #include <pw3270/ipcpackets.h>  
50 - #include <process.h>  
51 - #else  
52 - #include <unistd.h>  
53 -  
54 - #define HLLAPI_PACKET_IS_CONNECTED "isConnected"  
55 - #define HLLAPI_PACKET_GET_CSTATE "getConnectionState"  
56 - #define HLLAPI_PACKET_GET_PROGRAM_MESSAGE "getProgramMessage"  
57 - #define HLLAPI_PACKET_GET_SSL_STATE "getSecureState"  
58 - #define HLLAPI_PACKET_IS_READY "isReady"  
59 - #define HLLAPI_PACKET_DISCONNECT "disconnect"  
60 - #define HLLAPI_PACKET_GET_HOST "getURL"  
61 - #define HLLAPI_PACKET_SET_HOST "setURL"  
62 - #define HLLAPI_PACKET_GET_CURSOR "getCursorAddress"  
63 - #define HLLAPI_PACKET_GET_WIDTH "getScreenWidth"  
64 - #define HLLAPI_PACKET_GET_HEIGHT "getScreenHeight"  
65 - #define HLLAPI_PACKET_GET_LENGTH "getScreenLength"  
66 - #define HLLAPI_PACKET_ENTER "enter"  
67 - #define HLLAPI_PACKET_QUIT "quit"  
68 - #define HLLAPI_PACKET_ERASE "erase"  
69 - #define HLLAPI_PACKET_ERASE_EOF "eraseEOF"  
70 - #define HLLAPI_PACKET_ERASE_EOL "eraseEOL"  
71 - #define HLLAPI_PACKET_ERASE_INPUT "eraseInput"  
72 - #define HLLAPI_PACKET_PRINT "print"  
73 - #define HLLAPI_PACKET_ASC2EBC "asc2ebc"  
74 - #define HLLAPI_PACKET_EBC2ASC "ebc2asc"  
75 - #define HLLAPI_PACKET_SET_UNLOCK_DELAY "setUnlockDelay"  
76 - #endif // _WIN32  
77 -  
78 - #include <pw3270cpp.h>  
79 - #include <lib3270/log.h>  
80 -  
81 - #include "private.h"  
82 -  
83 -#if defined(HAVE_DBUS)  
84 - static const char * prefix_dest = "br.com.bb.";  
85 - static const char * prefix_path = "/br/com/bb/";  
86 -#endif // HAVE_DBUS  
87 -  
88 -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/  
89 -  
90 - namespace PW3270_NAMESPACE  
91 - {  
92 -  
93 - class remote : public session  
94 - {  
95 - private:  
96 -  
97 -#if defined(_WIN32)  
98 -  
99 - HANDLE hPipe;  
100 -  
101 - int query_intval(HLLAPI_PACKET id)  
102 - {  
103 - struct hllapi_packet_query query = { id };  
104 - struct hllapi_packet_result response;  
105 - DWORD cbSize = sizeof(query);  
106 - if(TransactNamedPipe(hPipe,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL))  
107 - return response.rc;  
108 -  
109 - throw exception(GetLastError(),"%s","Transaction error");  
110 - }  
111 -  
112 - int query_strval(HLLAPI_PACKET id, unsigned char *buffer, size_t sz)  
113 - {  
114 - DWORD cbSize = sizeof(struct hllapi_packet_text)+sz;  
115 - struct hllapi_packet_text * query;  
116 - struct hllapi_packet_text * response;  
117 - int rc = -1;  
118 -  
119 - query = (struct hllapi_packet_text *) malloc(cbSize+2);  
120 - memset(query,0,cbSize+2);  
121 - query->packet_id = id;  
122 - memcpy(query->text,buffer,sz);  
123 -  
124 - response = (struct hllapi_packet_text *) malloc(cbSize+2);  
125 - memset(response,0,cbSize+2);  
126 -  
127 - if(TransactNamedPipe(hPipe,(LPVOID) query, cbSize, &response, cbSize, &cbSize,NULL))  
128 - {  
129 - if(response->packet_id)  
130 - {  
131 - rc = response->packet_id;  
132 - }  
133 - else  
134 - {  
135 - rc = 0;  
136 - strncpy((char *) buffer,response->text,sz);  
137 - }  
138 - }  
139 -  
140 - free(response);  
141 - free(query);  
142 -  
143 - return rc;  
144 -  
145 - }  
146 -  
147 - string query_string(void *query, size_t szQuery, size_t len)  
148 - {  
149 - struct hllapi_packet_text * response;  
150 - DWORD sz = sizeof(struct hllapi_packet_text)+len;  
151 - DWORD cbSize = (DWORD) sz;  
152 - string s;  
153 - char buffer[sz+2];  
154 -  
155 - memset(buffer,0,sz+2);  
156 -  
157 - response = (struct hllapi_packet_text *) buffer;  
158 -  
159 - if(TransactNamedPipe(hPipe,(LPVOID) query, szQuery, response, sz, &cbSize,NULL))  
160 - {  
161 - buffer[min(cbSize,sz)] = 0;  
162 -  
163 - trace("TransactNamedPipe call %d returns \"%s\"",(int) *( (unsigned char *) query), response->text);  
164 -  
165 - if(!response->packet_id)  
166 - s.assign(response->text);  
167 - }  
168 - else  
169 - {  
170 - trace("TransactNamedPipe error on call %d",(int) *( (unsigned char *) query));  
171 - s.assign("");  
172 - }  
173 -  
174 - return s;  
175 - }  
176 -  
177 - int query_intval(void *pkt, size_t szQuery, bool dynamic = false)  
178 - {  
179 - struct hllapi_packet_result response;  
180 - DWORD cbSize = (DWORD) szQuery;  
181 - BOOL status;  
182 -  
183 - status = TransactNamedPipe(hPipe,(LPVOID) pkt, cbSize, &response, sizeof(response), &cbSize,NULL);  
184 -  
185 - if(dynamic)  
186 - free(pkt);  
187 -  
188 - if(status)  
189 - return response.rc;  
190 -  
191 - throw exception(GetLastError(),"%s","Transaction error");  
192 -  
193 - }  
194 -  
195 - void set_intval(HLLAPI_PACKET id, int value)  
196 - {  
197 - struct hllapi_packet_set_int packet;  
198 - DWORD cbSize = (DWORD) sizeof(packet);  
199 - BOOL status;  
200 -  
201 - memset(&packet,0,sizeof(packet));  
202 - packet.packet_id = id;  
203 - packet.value = value;  
204 -  
205 - status = TransactNamedPipe(hPipe,(LPVOID) &packet, cbSize, &packet, sizeof(packet), &cbSize,NULL);  
206 -  
207 - if(!status)  
208 - throw exception(GetLastError(),"%s","Transaction error");  
209 -  
210 - }  
211 -  
212 -  
213 -#elif defined(HAVE_DBUS)  
214 -  
215 - DBusConnection * conn;  
216 - char * dest;  
217 - char * path;  
218 - char * intf;  
219 - int sequence;  
220 -  
221 - DBusMessage * create_message(const char *method)  
222 - {  
223 - DBusMessage * msg = dbus_message_new_method_call( this->dest, // Destination  
224 - this->path, // Path  
225 - this->intf, // Interface  
226 - method); // method  
227 -  
228 - if (!msg)  
229 - throw exception("Error creating DBUS message for method %s",method);  
230 -  
231 - return msg;  
232 -  
233 - }  
234 -  
235 - DBusMessage * call(DBusMessage *msg)  
236 - {  
237 - DBusMessage * reply;  
238 - DBusError error;  
239 -  
240 - dbus_error_init(&error);  
241 - reply = dbus_connection_send_with_reply_and_block(conn,msg,10000,&error);  
242 - dbus_message_unref(msg);  
243 -  
244 - if(!reply)  
245 - {  
246 - exception e = exception("%s",error.message);  
247 - dbus_error_free(&error);  
248 - throw e;  
249 - }  
250 - return reply;  
251 - }  
252 -  
253 - string get_string(DBusMessage * msg)  
254 - {  
255 - string rc;  
256 -  
257 - if(msg)  
258 - {  
259 - DBusMessageIter iter;  
260 -  
261 - if(dbus_message_iter_init(msg, &iter))  
262 - {  
263 - if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)  
264 - {  
265 - const char * str;  
266 - dbus_message_iter_get_basic(&iter, &str);  
267 - trace("Response: [%s]",str);  
268 - rc.assign(str);  
269 - dbus_message_unref(msg);  
270 - return rc;  
271 - }  
272 -  
273 - exception e = exception("DBUS Return type was %c, expecting %c",dbus_message_iter_get_arg_type(&iter),DBUS_TYPE_INT32);  
274 - dbus_message_unref(msg);  
275 -  
276 - throw e;  
277 -  
278 - }  
279 -  
280 - }  
281 -  
282 - return rc;  
283 - }  
284 -  
285 - string query_string(const char *method)  
286 - {  
287 - return get_string(call(create_message(method)));  
288 - }  
289 -  
290 - int get_intval(DBusMessage * msg)  
291 - {  
292 - if(msg)  
293 - {  
294 - DBusMessageIter iter;  
295 -  
296 - if(dbus_message_iter_init(msg, &iter))  
297 - {  
298 - if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_INT32)  
299 - {  
300 - dbus_int32_t iSigned;  
301 - dbus_message_iter_get_basic(&iter, &iSigned);  
302 - dbus_message_unref(msg);  
303 - return (int) iSigned;  
304 - }  
305 -  
306 - exception e = exception("DBUS Return type was %c, expecting %c",dbus_message_iter_get_arg_type(&iter),DBUS_TYPE_INT32);  
307 -  
308 - dbus_message_unref(msg);  
309 - throw e;  
310 - return -1;  
311 - }  
312 - dbus_message_unref(msg);  
313 - }  
314 - return -1;  
315 - }  
316 -  
317 - int query_intval(const char *method)  
318 - {  
319 - return get_intval(call(create_message(method)));  
320 - }  
321 -  
322 - int query_intval(const char *method, int first_arg_type, ...)  
323 - {  
324 - va_list var_args;  
325 - DBusMessage * msg = dbus_message_new_method_call( this->dest, // Destination  
326 - this->path, // Path  
327 - this->intf, // Interface  
328 - method); // method  
329 -  
330 - if (!msg)  
331 - {  
332 - throw exception("Error creating DBUS message for method %s",method);  
333 - return -1;  
334 - }  
335 -  
336 - va_start(var_args, first_arg_type);  
337 - dbus_message_append_args_valist(msg,first_arg_type,var_args);  
338 - va_end(var_args);  
339 -  
340 - return get_intval(call(msg));  
341 - }  
342 -  
343 - int query_strval(const char *method, unsigned char *buffer, size_t sz)  
344 - {  
345 - DBusMessage * outMsg = create_message(method);  
346 -  
347 - if(outMsg)  
348 - {  
349 - dbus_message_append_args(outMsg, DBUS_TYPE_STRING, &buffer, DBUS_TYPE_INVALID);  
350 -  
351 - DBusMessage * rspMsg = call(outMsg);  
352 - if(rspMsg)  
353 - {  
354 - DBusMessageIter iter;  
355 -  
356 - if(dbus_message_iter_init(rspMsg, &iter))  
357 - {  
358 - if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)  
359 - {  
360 - const char * str;  
361 - dbus_message_iter_get_basic(&iter, &str);  
362 - trace("Response: [%s]",str);  
363 - strncpy((char *) buffer,str,sz);  
364 - dbus_message_unref(rspMsg);  
365 - return 0;  
366 - }  
367 -  
368 - exception e = exception("DBUS Return type was %c, expecting %c",dbus_message_iter_get_arg_type(&iter),DBUS_TYPE_INT32);  
369 - dbus_message_unref(rspMsg);  
370 -  
371 - throw e;  
372 -  
373 - }  
374 - }  
375 - }  
376 -  
377 - return -1;  
378 - }  
379 -  
380 - void set_intval(const char *method, int value)  
381 - {  
382 - DBusMessage * outMsg = create_message(method);  
383 -  
384 - if(outMsg)  
385 - {  
386 - dbus_int32_t v = (dbus_int32_t) value;  
387 -  
388 - dbus_message_append_args(outMsg, DBUS_TYPE_INT32, &v, DBUS_TYPE_INVALID);  
389 -  
390 - DBusMessage * rspMsg = call(outMsg);  
391 - dbus_message_unref(rspMsg);  
392 -  
393 - }  
394 - }  
395 -  
396 -#else  
397 -  
398 -  
399 - int query_intval(const char *method)  
400 - {  
401 - throw exception("Call to unimplemented RPC method \"%s\"",method);  
402 - return -1;  
403 - }  
404 -  
405 - int query_strval(const char *method, unsigned char *buffer, size_t sz)  
406 - {  
407 - throw exception("Call to unimplemented RPC method \"%s\"",method);  
408 - return -1;  
409 - }  
410 -  
411 -  
412 -#endif  
413 -  
414 - public:  
415 -  
416 -#if defined(HAVE_DBUS)  
417 - const char * makeBusName(string &name)  
418 - {  
419 - int val;  
420 -  
421 - // First uses the object ID  
422 - val = this->sequence;  
423 - while(val > 0)  
424 - {  
425 - char str[] = { (char) ('a'+(val % 25)), 0 };  
426 - name.append(str);  
427 - val /= 25;  
428 - }  
429 - name.append(".");  
430 -  
431 - val = (int) getpid();  
432 - while(val > 0)  
433 - {  
434 - #pragma GCC diagnostic push  
435 - #pragma GCC diagnostic ignored "-Wnarrowing"  
436 - char str[] = { 'a'+(val % 25), 0 };  
437 - #pragma GCC diagnostic pop  
438 - name.append(str);  
439 - val /= 25;  
440 - }  
441 - name.append(".");  
442 -  
443 - // And last, the project info  
444 - name.append(intf);  
445 -  
446 - trace("Busname=\"%s\" sequence=%d this=%p",name.c_str(),sequence,this);  
447 -  
448 - return name.c_str();  
449 -  
450 - }  
451 -#endif // HAVE_DBUS  
452 -  
453 -#if defined(_WIN32)  
454 -  
455 - static string getRegistryKey(const char *name)  
456 - {  
457 - char buffer[4096];  
458 - HKEY hKey = 0;  
459 - unsigned long datalen = sizeof(buffer);  
460 -  
461 - debug("%s(%s)",__FUNCTION__,name);  
462 -  
463 - *buffer = 0;  
464 - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) != ERROR_SUCCESS)  
465 - {  
466 - throw exception("Can't open key %s","HKLM\\Software\\pw3270");  
467 - }  
468 - else  
469 - {  
470 - unsigned long datatype; // #defined in winnt.h (predefined types 0-11)  
471 -  
472 - if(RegQueryValueExA(hKey,name,NULL,&datatype,(LPBYTE) buffer,&datalen) != ERROR_SUCCESS)  
473 - *buffer = 0;  
474 - RegCloseKey(hKey);  
475 - }  
476 -  
477 - return string(buffer);  
478 -  
479 - }  
480 -  
481 -#endif // defined  
482 -  
483 - remote(const char *session)  
484 - {  
485 -#if defined(_WIN32)  
486 - static DWORD dwMode = PIPE_READMODE_MESSAGE;  
487 - char buffer[4096];  
488 - char * str;  
489 - char * ptr;  
490 - time_t timer = time(0)+1;  
491 -  
492 - hPipe = INVALID_HANDLE_VALUE;  
493 -  
494 - trace("%s(%s)",__FUNCTION__,session);  
495 -  
496 - if(strcasecmp(session,"start") == 0 || strcasecmp(session,"new") == 0)  
497 - {  
498 - // Start a new session  
499 - string appName = getRegistryKey("appName");  
500 - char buffer[80];  
501 - STARTUPINFO si;  
502 - PROCESS_INFORMATION pi;  
503 -  
504 - // Get application path  
505 -  
506 - if(!appName.size())  
507 - {  
508 - throw exception("key %s\\appName is invalid","HKLM\\Software\\pw3270");  
509 - return;  
510 - }  
511 -  
512 - trace("%s appname=%s\n",__FUNCTION__,appName.c_str());  
513 -  
514 - snprintf(buffer,79,"%s --session=\"H%06d\"",appName.c_str(),getpid());  
515 -  
516 - ZeroMemory( &si, sizeof(si) );  
517 - si.cb = sizeof(si);  
518 - ZeroMemory( &pi, sizeof(pi) );  
519 -  
520 - // si.dwFlags = STARTF_PREVENTPINNING;  
521 - trace("App: %s",appName.c_str());  
522 - trace("CmdLine: %s",buffer);  
523 -  
524 - if(CreateProcess(NULL,buffer,NULL,NULL,0,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi))  
525 - {  
526 - CloseHandle( pi.hProcess );  
527 - CloseHandle( pi.hThread );  
528 - }  
529 - else  
530 - {  
531 - throw exception("Can't start %s",appName.c_str());  
532 - return;  
533 - }  
534 -  
535 - snprintf(buffer,4095,"H%06d_a",getpid());  
536 - str = strdup(buffer);  
537 -  
538 - // Até 20 segundos para o processo iniciar.  
539 - timer = time(0)+20;  
540 -  
541 - }  
542 - else  
543 - {  
544 - // Use an existing session  
545 - str = strdup(session);  
546 -  
547 - // Convert session name  
548 - for(ptr=str;*ptr;ptr++)  
549 - {  
550 - if(*ptr == ':')  
551 - *ptr = '_';  
552 - else  
553 - *ptr = tolower(*ptr);  
554 - }  
555 -  
556 - // Wait?  
557 - int delay;  
558 -  
559 - try  
560 - {  
561 - delay = atoi(getRegistryKey("hllapiWait").c_str());  
562 - }  
563 - catch(std::exception &e)  
564 - {  
565 - delay = 0;  
566 - }  
567 -  
568 - if(delay) {  
569 - timer = time(0) + delay;  
570 - }  
571 -  
572 -  
573 - }  
574 -  
575 - snprintf(buffer,4095,"\\\\.\\pipe\\%s",str);  
576 -  
577 - free(str);  
578 -  
579 - trace("Searching for \"%s\"",buffer);  
580 -  
581 - hPipe = CreateFile(buffer,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);  
582 -  
583 - if(hPipe == INVALID_HANDLE_VALUE)  
584 - {  
585 - // Cant get session, wait.  
586 - while(hPipe == INVALID_HANDLE_VALUE && time(0) < timer)  
587 - {  
588 - hPipe = CreateFile(buffer,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);  
589 - Sleep(1);  
590 - }  
591 - }  
592 -  
593 - if(hPipe == INVALID_HANDLE_VALUE)  
594 - {  
595 - throw exception("Can´t create service pipe %s",buffer);  
596 - }  
597 - else if(!SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL))  
598 - {  
599 - exception e = exception(GetLastError(),"%s","Can´t set pipe state");  
600 - CloseHandle(hPipe);  
601 - hPipe = INVALID_HANDLE_VALUE;  
602 - throw e;  
603 - }  
604 -  
605 -#elif defined(HAVE_DBUS)  
606 -  
607 - static int sq = 0;  
608 - DBusError err;  
609 - int rc;  
610 - char * str = strdup(session);  
611 - char * ptr;  
612 - string busName;  
613 -  
614 -  
615 - this->path = nullptr;  
616 - this->intf = nullptr;  
617 - this->sequence = (++sq) + time(0);  
618 -  
619 - try {  
620 -  
621 - trace("%s str=%p sequence=%d",__FUNCTION__,str,sequence);  
622 -  
623 - for(ptr=str;*ptr;ptr++)  
624 - *ptr = tolower(*ptr);  
625 -  
626 - ptr = strchr(str,':');  
627 -  
628 - if(ptr)  
629 - {  
630 - size_t sz;  
631 -  
632 - *(ptr++) = 0;  
633 -  
634 - // Build destination  
635 - sz = strlen(ptr)+strlen(str)+strlen(prefix_dest)+2;  
636 - dest = (char *) malloc(sz+1);  
637 - strncpy(dest,prefix_dest,sz);  
638 - strncat(dest,str,sz);  
639 - strncat(dest,".",sz);  
640 - strncat(dest,ptr,sz);  
641 -  
642 - // Path and interface always use the same name.  
643 - path = strdup("/br/com/bb/pw3270");  
644 - intf = strdup("br.com.bb.pw3270");  
645 -  
646 - }  
647 - else  
648 - {  
649 - size_t sz;  
650 -  
651 - // Build destination  
652 - sz = strlen(str)+strlen(prefix_dest)+2;  
653 - dest = (char *) malloc(sz+1);  
654 - strncpy(dest,prefix_dest,sz);  
655 - strncat(dest,str,sz);  
656 -  
657 - // Build path  
658 - sz = strlen(str)+strlen(prefix_path);  
659 - path = (char *) malloc(sz+1);  
660 - strncpy(path,prefix_path,sz);  
661 - strncat(path,str,sz);  
662 -  
663 - // Build intf  
664 - sz = strlen(str)+strlen(prefix_dest)+1;  
665 - intf = (char *) malloc(sz+1);  
666 - strncpy(intf,prefix_dest,sz);  
667 - strncat(intf,str,sz);  
668 -  
669 - }  
670 -  
671 - trace("DBUS:\nDestination:\t[%s]\nPath:\t\t[%s]\nInterface:\t[%s]",dest,path,intf);  
672 -  
673 - free(str);  
674 -  
675 - dbus_error_init(&err);  
676 -  
677 - conn = dbus_bus_get(DBUS_BUS_SESSION, &err);  
678 - trace("dbus_bus_get conn=%p",conn);  
679 -  
680 - if (dbus_error_is_set(&err))  
681 - {  
682 - exception e = exception("DBUS Connection Error (%s)", err.message);  
683 - dbus_error_free(&err);  
684 - throw e;  
685 - return;  
686 - }  
687 -  
688 - if(!conn)  
689 - {  
690 - throw exception("%s", "DBUS Connection failed");  
691 - return;  
692 - }  
693 -  
694 -  
695 - rc = dbus_bus_request_name(conn, makeBusName(busName), DBUS_NAME_FLAG_REPLACE_EXISTING , &err);  
696 - trace("dbus_bus_request_name(%s) rc=%d",busName.c_str(),rc);  
697 -  
698 - if (dbus_error_is_set(&err))  
699 - {  
700 - exception e = exception("Name Error (%s)", err.message);  
701 - dbus_error_free(&err);  
702 - throw e;  
703 - return;  
704 - }  
705 -  
706 - if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)  
707 - {  
708 - trace("%s: DBUS request for name %s failed",__FUNCTION__, busName.c_str());  
709 - throw exception("DBUS request for \"%s\" failed",session);  
710 - }  
711 -  
712 - trace("%s: Using DBUS name %s",__FUNCTION__,busName.c_str());  
713 -  
714 - const char * id = "r";  
715 - static const dbus_int32_t flag = 1;  
716 - query_intval("setScript", DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID);  
717 -  
718 - } catch(...) {  
719 -  
720 - if(path) {  
721 - free(path);  
722 - path = nullptr;  
723 - }  
724 -  
725 - if(intf) {  
726 - free(intf);  
727 - intf = nullptr;  
728 - }  
729 -  
730 - }  
731 -  
732 -#else  
733 -  
734 - throw exception("%s","RPC support is incomplete.");  
735 -  
736 -#endif  
737 - }  
738 -  
739 - virtual ~remote()  
740 - {  
741 -#if defined(_WIN32)  
742 -  
743 - if(hPipe != INVALID_HANDLE_VALUE)  
744 - CloseHandle(hPipe);  
745 -  
746 -#elif defined(HAVE_DBUS)  
747 -  
748 - try  
749 - {  
750 - const char * id = "r";  
751 - static const dbus_int32_t flag = 0;  
752 - query_intval("setScript", DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID);  
753 - }  
754 - catch(exception e)  
755 - {  
756 - std::cerr << e.what();  
757 - }  
758 -  
759 - string busName;  
760 - makeBusName(busName);  
761 -  
762 - free(dest);  
763 - free(path);  
764 - free(intf);  
765 -  
766 - DBusError err;  
767 -  
768 - dbus_error_init(&err);  
769 - dbus_bus_release_name(conn,busName.c_str(),&err);  
770 -  
771 - if (dbus_error_is_set(&err))  
772 - {  
773 - //exception e = exception("Error when releasing DBUS name (%s)", err.message);  
774 - std::cerr << err.message;  
775 - dbus_error_free(&err);  
776 - //throw e;  
777 - }  
778 -  
779 -#else  
780 -  
781 -#endif  
782 - }  
783 -  
784 - bool is_connected(void)  
785 - {  
786 - return query_intval(HLLAPI_PACKET_IS_CONNECTED) != 0;  
787 - }  
788 -  
789 - LIB3270_CSTATE get_cstate(void)  
790 - {  
791 - return (LIB3270_CSTATE) query_intval(HLLAPI_PACKET_GET_CSTATE);  
792 - }  
793 -  
794 - LIB3270_MESSAGE get_program_message(void) {  
795 - return (LIB3270_MESSAGE) query_intval(HLLAPI_PACKET_GET_PROGRAM_MESSAGE);  
796 - }  
797 -  
798 - LIB3270_SSL_STATE get_secure(void) {  
799 - return (LIB3270_SSL_STATE) query_intval(HLLAPI_PACKET_GET_SSL_STATE);  
800 - }  
801 -  
802 - virtual int connect()  
803 - {  
804 - return connect("",0);  
805 - }  
806 -  
807 - virtual int connect(const char *url, time_t wait)  
808 - {  
809 - int rc = EINVAL;  
810 -  
811 - debug("%s(%s,%u)",__FUNCTION__,url,(unsigned int) wait);  
812 -  
813 - if(!url) {  
814 - url = "";  
815 - }  
816 -  
817 -#if defined(_WIN32)  
818 -  
819 - size_t cbSize = sizeof(struct hllapi_packet_query) + strlen(url) + 1;  
820 - struct hllapi_packet_query * pkt = (struct hllapi_packet_query *) malloc(cbSize);  
821 -  
822 - memset(pkt,0,cbSize);  
823 -  
824 - pkt->packet_id = HLLAPI_PACKET_CONNECT_URL;  
825 -  
826 - strcpy(((char *) (pkt+1)), url);  
827 -  
828 - rc = query_intval((void *) pkt, cbSize, true);  
829 -  
830 - if(!rc && wait) {  
831 - time_t end = time(0) + wait;  
832 - while(!is_connected()) {  
833 - if(time(0) > end) {  
834 - debug("%s: Timeout",__FUNCTION__);  
835 - return ETIMEDOUT;  
836 - }  
837 - Sleep(500);  
838 - }  
839 - }  
840 -  
841 -#elif defined(HAVE_DBUS)  
842 -  
843 - rc = query_intval("connect", DBUS_TYPE_STRING, &url, DBUS_TYPE_INVALID);  
844 -  
845 - debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc));  
846 -  
847 - if(!rc && wait) {  
848 - time_t end = time(0) + wait;  
849 - while(!is_connected()) {  
850 - if(time(0) > end) {  
851 - debug("%s: Timeout",__FUNCTION__);  
852 - return ETIMEDOUT;  
853 - }  
854 - usleep(500);  
855 - }  
856 - }  
857 -  
858 -#endif  
859 - debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc));  
860 -  
861 - return rc;  
862 -  
863 - }  
864 -  
865 - int set_url(const char *uri)  
866 - {  
867 - int rc;  
868 -  
869 -#if defined(_WIN32)  
870 -  
871 - size_t cbSize = sizeof(struct hllapi_packet_text)+strlen(uri);  
872 - struct hllapi_packet_text * pkt = (struct hllapi_packet_text *) malloc(cbSize);  
873 -  
874 - pkt->packet_id = HLLAPI_PACKET_SET_HOST;  
875 - strcpy(pkt->text,uri);  
876 -  
877 - rc = query_intval((void *) pkt,cbSize,true);  
878 -  
879 -#elif defined(HAVE_DBUS)  
880 -  
881 - rc = query_intval(HLLAPI_PACKET_SET_HOST, DBUS_TYPE_STRING, &uri, DBUS_TYPE_INVALID);  
882 -  
883 -#else  
884 -  
885 - rc = -1;  
886 -  
887 -#endif  
888 -  
889 - return rc;  
890 -  
891 - }  
892 -  
893 - string get_url()  
894 - {  
895 -#if defined(_WIN32)  
896 -  
897 - struct hllapi_packet_query query = { HLLAPI_PACKET_GET_HOST };  
898 - return query_string(&query,sizeof(query),1024);  
899 -  
900 -#elif defined(HAVE_DBUS)  
901 -  
902 - return query_string(HLLAPI_PACKET_GET_HOST);  
903 -  
904 -#else  
905 - return string();  
906 -#endif  
907 - }  
908 -  
909 - int wait_for_ready(int seconds)  
910 - {  
911 -#if defined(_WIN32)  
912 -  
913 - time_t end = time(0)+seconds;  
914 -  
915 - while(time(0) < end)  
916 - {  
917 - if(!is_connected())  
918 - return ENOTCONN;  
919 -  
920 - if(is_ready())  
921 - return 0;  
922 -  
923 - Sleep(250);  
924 - }  
925 -  
926 - return ETIMEDOUT;  
927 -  
928 -#elif defined(HAVE_DBUS)  
929 -  
930 - time_t end = time(0)+seconds;  
931 -  
932 - while(time(0) < end)  
933 - {  
934 - if(!is_connected())  
935 - return ENOTCONN;  
936 -  
937 - if(is_ready())  
938 - return 0;  
939 -  
940 - sleep(1);  
941 - }  
942 -  
943 - return ETIMEDOUT;  
944 -  
945 -#else  
946 -  
947 - return -1;  
948 -  
949 -#endif  
950 -  
951 - }  
952 -  
953 - bool is_ready(void)  
954 - {  
955 - return query_intval(HLLAPI_PACKET_IS_READY) != 0;  
956 - }  
957 -  
958 -  
959 - int disconnect(void)  
960 - {  
961 - return query_intval(HLLAPI_PACKET_DISCONNECT);  
962 - }  
963 -  
964 -  
965 - int wait(int seconds)  
966 - {  
967 -#if defined(_WIN32)  
968 -  
969 - time_t end = time(0)+seconds;  
970 -  
971 - while(time(0) < end)  
972 - {  
973 - if(!is_connected())  
974 - return ENOTCONN;  
975 - Sleep(500);  
976 - }  
977 -  
978 - return 0;  
979 -  
980 -#elif defined(HAVE_DBUS)  
981 -  
982 - time_t end = time(0)+seconds;  
983 -  
984 - while(time(0) < end)  
985 - {  
986 - if(!is_connected())  
987 - return ENOTCONN;  
988 - usleep(500);  
989 - }  
990 -  
991 - return 0;  
992 -  
993 -#else  
994 -  
995 - return -1;  
996 -  
997 -#endif  
998 -  
999 - }  
1000 -  
1001 - int iterate(bool wait)  
1002 - {  
1003 -#if defined(_WIN32)  
1004 - if(wait)  
1005 - Sleep(250);  
1006 - return 0;  
1007 -#elif defined(HAVE_DBUS)  
1008 - if(wait)  
1009 - sleep(1);  
1010 - return 0;  
1011 -#else  
1012 - return -1;  
1013 -#endif  
1014 - }  
1015 -  
1016 - string get_text_at(int row, int col, size_t sz, bool lf)  
1017 - {  
1018 -#if defined(_WIN32)  
1019 -  
1020 - struct hllapi_packet_query_at query = { HLLAPI_PACKET_GET_TEXT_AT, (unsigned short) row, (unsigned short) col, (unsigned short) sz, (lf ? '\n' : (char) 0) };  
1021 -  
1022 - return query_string(&query,sizeof(query),sz);  
1023 -  
1024 -#elif defined(HAVE_DBUS)  
1025 -  
1026 - dbus_int32_t r = (dbus_int32_t) row;  
1027 - dbus_int32_t c = (dbus_int32_t) col;  
1028 - dbus_int32_t l = (dbus_int32_t) sz;  
1029 - unsigned char d = lf ? '\n' : 0;  
1030 -  
1031 - DBusMessage * msg = create_message("getTextAt");  
1032 - if(!msg)  
1033 - return NULL;  
1034 -  
1035 - trace("%s(%d,%d,%d)",__FUNCTION__,r,c,l);  
1036 - dbus_message_append_args(msg, DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_INT32, &l, DBUS_TYPE_BYTE, &d, DBUS_TYPE_INVALID);  
1037 -  
1038 - return get_string(call(msg));  
1039 -  
1040 -#else  
1041 -  
1042 - return string();  
1043 -  
1044 -#endif  
1045 -  
1046 - }  
1047 -  
1048 - int set_text_at(int row, int col, const char *str)  
1049 - {  
1050 -#if defined(_WIN32)  
1051 -  
1052 - struct hllapi_packet_text_at * query;  
1053 - struct hllapi_packet_result response;  
1054 - DWORD cbSize = sizeof(struct hllapi_packet_text_at)+strlen((const char *) str);  
1055 -  
1056 - query = (struct hllapi_packet_text_at *) malloc(cbSize);  
1057 - query->packet_id = HLLAPI_PACKET_SET_TEXT_AT;  
1058 - query->row = row;  
1059 - query->col = col;  
1060 - strcpy(query->text,(const char *) str);  
1061 -  
1062 - TransactNamedPipe(hPipe,(LPVOID) query, cbSize, &response, sizeof(response), &cbSize,NULL);  
1063 -  
1064 - free(query);  
1065 -  
1066 - return response.rc;  
1067 -  
1068 -#elif defined(HAVE_DBUS)  
1069 -  
1070 - dbus_int32_t r = (dbus_int32_t) row;  
1071 - dbus_int32_t c = (dbus_int32_t) col;  
1072 -  
1073 - return query_intval("setTextAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID);  
1074 -  
1075 -#else  
1076 -  
1077 - return -1;  
1078 -  
1079 -#endif  
1080 -  
1081 - }  
1082 -  
1083 - int cmp_text_at(int row, int col, const char *text, bool lf)  
1084 - {  
1085 - debug("%s(%d,%d,\"%s\")",__FUNCTION__,row,col,text);  
1086 -  
1087 -#if defined(_WIN32)  
1088 -  
1089 - struct hllapi_packet_text_at * query;  
1090 - size_t cbSize = sizeof(struct hllapi_packet_text_at)+strlen(text);  
1091 -  
1092 - query = (struct hllapi_packet_text_at *) malloc(cbSize);  
1093 - query->packet_id = HLLAPI_PACKET_CMP_TEXT_AT;  
1094 - query->row = row;  
1095 - query->col = col;  
1096 - query->lf = lf ? '\n' : 0;  
1097 - strcpy(query->text,text);  
1098 -  
1099 - return query_intval((void *) query, cbSize, true);  
1100 -  
1101 -#elif defined(HAVE_DBUS)  
1102 -  
1103 - dbus_int32_t r = (dbus_int32_t) row;  
1104 - dbus_int32_t c = (dbus_int32_t) col;  
1105 - unsigned char d = lf ? '\n' : 0;  
1106 -  
1107 - return query_intval("cmpTextAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &text, DBUS_TYPE_BYTE, &d, DBUS_TYPE_INVALID);  
1108 -  
1109 -#endif  
1110 -  
1111 - return 0;  
1112 - }  
1113 -  
1114 - int wait_for_text_at(int row, int col, const char *key, int timeout)  
1115 - {  
1116 - time_t end = time(0)+timeout;  
1117 -  
1118 - while(time(0) < end)  
1119 - {  
1120 - if(!is_connected())  
1121 - return ENOTCONN;  
1122 -  
1123 - if(!cmp_text_at(row,col,key,false))  
1124 - return 0;  
1125 -  
1126 -#ifdef _WIN32  
1127 - Sleep(500);  
1128 -#else  
1129 - usleep(500);  
1130 -#endif  
1131 - }  
1132 -  
1133 - return ETIMEDOUT;  
1134 - }  
1135 -  
1136 - string get_text(int baddr, size_t len, bool lf)  
1137 - {  
1138 -#if defined(_WIN32)  
1139 -  
1140 - struct hllapi_packet_query_offset query = { HLLAPI_PACKET_GET_TEXT_AT_OFFSET, (unsigned short) baddr, (unsigned short) len, (lf ? '\n' : (char) 0) };  
1141 - return query_string(&query,sizeof(query),len);  
1142 -  
1143 -#elif defined(HAVE_DBUS)  
1144 -  
1145 - dbus_int32_t b = (dbus_int32_t) baddr;  
1146 - dbus_int32_t l = (dbus_int32_t) len;  
1147 - unsigned char d = lf ? '\n' : 0;  
1148 -  
1149 - DBusMessage * msg = create_message("getText");  
1150 - if(!msg)  
1151 - return NULL;  
1152 -  
1153 - trace("%s(%d,%d)",__FUNCTION__,b,l);  
1154 - dbus_message_append_args(msg, DBUS_TYPE_INT32, &b, DBUS_TYPE_INT32, &l, DBUS_TYPE_BYTE, &d, DBUS_TYPE_INVALID);  
1155 -  
1156 - return get_string(call(msg));  
1157 -#else  
1158 - throw exception("%s","IPC support is unavailable");  
1159 - return string();  
1160 -#endif  
1161 - }  
1162 -  
1163 -  
1164 - int set_cursor_position(int row, int col)  
1165 - {  
1166 -#if defined(_WIN32)  
1167 -  
1168 - struct hllapi_packet_cursor query = { HLLAPI_PACKET_SET_CURSOR_POSITION, (unsigned short) row, (unsigned short) col };  
1169 -  
1170 - return query_intval((void *) &query, sizeof(query));  
1171 -  
1172 -#elif defined(HAVE_DBUS)  
1173 -  
1174 - dbus_int32_t r = (dbus_int32_t) row;  
1175 - dbus_int32_t c = (dbus_int32_t) col;  
1176 -  
1177 - return query_intval("setCursorAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_INVALID);  
1178 -  
1179 -#endif  
1180 -  
1181 - return -1;  
1182 - }  
1183 -  
1184 - int set_cursor_addr(int addr)  
1185 - {  
1186 -#if defined(_WIN32)  
1187 -  
1188 - struct hllapi_packet_addr query = { HLLAPI_PACKET_SET_CURSOR, (unsigned short) addr };  
1189 -  
1190 - return query_intval((void *) &query, sizeof(query));  
1191 -  
1192 -#elif defined(HAVE_DBUS)  
1193 -  
1194 - dbus_int32_t k = (dbus_int32_t) addr;  
1195 -  
1196 - return query_intval("setCursorAddress", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1197 -  
1198 -#endif  
1199 -  
1200 - return -1;  
1201 - }  
1202 -  
1203 - int get_cursor_addr(void)  
1204 - {  
1205 - return query_intval(HLLAPI_PACKET_GET_CURSOR);  
1206 - }  
1207 -  
1208 - int get_width(void) {  
1209 - return query_intval(HLLAPI_PACKET_GET_WIDTH);  
1210 - }  
1211 -  
1212 - int get_height(void) {  
1213 - return query_intval(HLLAPI_PACKET_GET_HEIGHT);  
1214 - }  
1215 -  
1216 - int get_length(void) {  
1217 - return query_intval(HLLAPI_PACKET_GET_LENGTH);  
1218 - }  
1219 -  
1220 - int enter(void)  
1221 - {  
1222 - return query_intval(HLLAPI_PACKET_ENTER);  
1223 - }  
1224 -  
1225 - int pfkey(int key)  
1226 - {  
1227 -#if defined(_WIN32)  
1228 -  
1229 - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PFKEY, (unsigned short) key };  
1230 -  
1231 - return query_intval((void *) &query, sizeof(query));  
1232 -  
1233 -#elif defined(HAVE_DBUS)  
1234 -  
1235 - dbus_int32_t k = (dbus_int32_t) key;  
1236 -  
1237 - return query_intval("pfKey", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1238 -  
1239 -#else  
1240 -  
1241 - return -1;  
1242 -  
1243 -#endif  
1244 -  
1245 - }  
1246 -  
1247 - int pakey(int key)  
1248 - {  
1249 -#if defined(_WIN32)  
1250 -  
1251 - struct hllapi_packet_keycode query = { HLLAPI_PACKET_PAKEY, (unsigned short) key };  
1252 -  
1253 - return query_intval((void *) &query, sizeof(query));  
1254 -  
1255 -#elif defined(HAVE_DBUS)  
1256 -  
1257 - dbus_int32_t k = (dbus_int32_t) key;  
1258 -  
1259 - return query_intval("paKey", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1260 -  
1261 -#else  
1262 -  
1263 - return -1;  
1264 -  
1265 -#endif  
1266 -  
1267 - }  
1268 -  
1269 - int quit(void)  
1270 - {  
1271 - return query_intval(HLLAPI_PACKET_QUIT);  
1272 - }  
1273 -  
1274 - int set_toggle(LIB3270_TOGGLE ix, bool value)  
1275 - {  
1276 -#if defined(_WIN32)  
1277 -  
1278 - struct hllapi_packet_set query = { HLLAPI_PACKET_SET_TOGGLE, (unsigned short) ix, (unsigned short) value };  
1279 -  
1280 - return query_intval((void *) &query, sizeof(query));  
1281 -  
1282 -#elif defined(HAVE_DBUS)  
1283 -  
1284 - dbus_int32_t i = (dbus_int32_t) ix;  
1285 - dbus_int32_t v = (dbus_int32_t) value;  
1286 -  
1287 - return query_intval("setToggle", DBUS_TYPE_INT32, &i, DBUS_TYPE_INT32, &v, DBUS_TYPE_INVALID);  
1288 -  
1289 -#else  
1290 - return -1;  
1291 -  
1292 -#endif  
1293 -  
1294 - }  
1295 -  
1296 - int emulate_input(const char *str)  
1297 - {  
1298 -#if defined(_WIN32)  
1299 -  
1300 - size_t len = strlen(str);  
1301 - struct hllapi_packet_emulate_input * query;  
1302 - size_t cbSize = sizeof(struct hllapi_packet_emulate_input)+len;  
1303 -  
1304 - query = (struct hllapi_packet_emulate_input *) malloc(cbSize);  
1305 - query->packet_id = HLLAPI_PACKET_EMULATE_INPUT;  
1306 - query->len = len;  
1307 - query->pasting = 1;  
1308 - strcpy(query->text,str);  
1309 -  
1310 - return query_intval((void *) query, cbSize, true);  
1311 -  
1312 -#elif defined(HAVE_DBUS)  
1313 -  
1314 - return query_intval("input", DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID);  
1315 -#else  
1316 -  
1317 - return -1;  
1318 -  
1319 -#endif  
1320 -  
1321 - }  
1322 -  
1323 - int action(const char *str)  
1324 - {  
1325 -  
1326 -#if defined(_WIN32)  
1327 -  
1328 - size_t len = strlen(str);  
1329 - struct hllapi_packet_text * query;  
1330 - size_t cbSize = sizeof(struct hllapi_packet_text)+len;  
1331 -  
1332 - query = (struct hllapi_packet_text *) malloc(cbSize);  
1333 - query->packet_id = HLLAPI_PACKET_ACTION;  
1334 - strcpy(query->text,str);  
1335 -  
1336 - return query_intval((void *) query, cbSize, true);  
1337 -  
1338 -#elif defined(HAVE_DBUS)  
1339 -  
1340 - return query_intval("action", DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID);  
1341 -#else  
1342 -  
1343 - return -1;  
1344 -  
1345 -#endif  
1346 -  
1347 - }  
1348 -  
1349 -  
1350 - int get_field_start(int baddr)  
1351 - {  
1352 -#if defined(_WIN32)  
1353 -  
1354 - struct hllapi_packet_addr query = { HLLAPI_PACKET_FIELD_START, (unsigned short) baddr };  
1355 -  
1356 - return query_intval((void *) &query, sizeof(query));  
1357 -  
1358 -#elif defined(HAVE_DBUS)  
1359 -  
1360 - dbus_int32_t k = (dbus_int32_t) baddr;  
1361 -  
1362 - return query_intval("getFieldStart", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1363 -  
1364 -#else  
1365 -  
1366 - return -1;  
1367 -  
1368 -#endif  
1369 -  
1370 - }  
1371 -  
1372 - int get_field_len(int baddr)  
1373 - {  
1374 -#if defined(_WIN32)  
1375 -  
1376 - struct hllapi_packet_addr query = { HLLAPI_PACKET_FIELD_LEN, (unsigned short) baddr };  
1377 -  
1378 - return query_intval((void *) &query, sizeof(query));  
1379 -  
1380 -#elif defined(HAVE_DBUS)  
1381 -  
1382 - dbus_int32_t k = (dbus_int32_t) baddr;  
1383 -  
1384 - return query_intval("getFieldLength", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1385 -  
1386 -#else  
1387 -  
1388 - return -1;  
1389 -  
1390 -#endif  
1391 - }  
1392 -  
1393 - int get_next_unprotected(int baddr)  
1394 - {  
1395 -#if defined(_WIN32)  
1396 -  
1397 - struct hllapi_packet_addr query = { HLLAPI_PACKET_NEXT_UNPROTECTED, (unsigned short) baddr };  
1398 -  
1399 - return query_intval((void *) &query, sizeof(query));  
1400 -  
1401 -#elif defined(HAVE_DBUS)  
1402 -  
1403 - dbus_int32_t k = (dbus_int32_t) baddr;  
1404 -  
1405 - DBusMessage * msg = create_message("getNextUnprotected");  
1406 - if(msg)  
1407 - {  
1408 - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1409 - return get_intval(call(msg));  
1410 - }  
1411 -  
1412 - return -1;  
1413 -  
1414 -#else  
1415 -  
1416 - return -1;  
1417 -  
1418 -#endif  
1419 -  
1420 - }  
1421 -  
1422 - int get_is_protected(int baddr)  
1423 - {  
1424 -#if defined(_WIN32)  
1425 -  
1426 - struct hllapi_packet_addr query = { HLLAPI_PACKET_IS_PROTECTED, (unsigned short) baddr };  
1427 -  
1428 - return query_intval((void *) &query, sizeof(query));  
1429 -  
1430 -#elif defined(HAVE_DBUS)  
1431 -  
1432 - dbus_int32_t k = (dbus_int32_t) baddr;  
1433 -  
1434 - DBusMessage * msg = create_message("getIsProtected");  
1435 - if(msg)  
1436 - {  
1437 - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID);  
1438 - return get_intval(call(msg));  
1439 - }  
1440 -  
1441 - return -1;  
1442 -  
1443 -#else  
1444 -  
1445 - return -1;  
1446 -  
1447 -#endif  
1448 -  
1449 - }  
1450 -  
1451 - int get_is_protected_at(int row,int col)  
1452 - {  
1453 -#if defined(_WIN32)  
1454 -  
1455 - struct hllapi_packet_query_at query = { HLLAPI_PACKET_IS_PROTECTED_AT, (unsigned short) row, (unsigned short) col, 0 };  
1456 -  
1457 - return query_intval((void *) &query, sizeof(query));  
1458 -  
1459 -#elif defined(HAVE_DBUS)  
1460 -  
1461 - dbus_int32_t r = (dbus_int32_t) row;  
1462 - dbus_int32_t c = (dbus_int32_t) col;  
1463 -  
1464 - DBusMessage * msg = create_message("getIsProtectedAt");  
1465 - if(msg)  
1466 - {  
1467 - dbus_message_append_args(msg, DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_INVALID);  
1468 - return get_intval(call(msg));  
1469 - }  
1470 -  
1471 - return -1;  
1472 -  
1473 -#else  
1474 -  
1475 - return -1;  
1476 -  
1477 -#endif  
1478 -  
1479 - }  
1480 -  
1481 -  
1482 - int set_host_charset(const char *charset)  
1483 - {  
1484 -#if defined(_WIN32)  
1485 -  
1486 - size_t len = strlen(charset);  
1487 - struct hllapi_packet_set_text * query;  
1488 - size_t cbSize = sizeof(struct hllapi_packet_set_text)+len;  
1489 -  
1490 - query = (struct hllapi_packet_set_text *) malloc(cbSize);  
1491 - query->packet_id = HLLAPI_PACKET_SET_HOST_CHARSET;  
1492 - query->len = len;  
1493 - strcpy(query->text,charset);  
1494 -  
1495 - return query_intval((void *) query, cbSize, true);  
1496 -  
1497 -#elif defined(HAVE_DBUS)  
1498 -  
1499 - return query_intval("setHostCharset", DBUS_TYPE_STRING, &charset, DBUS_TYPE_INVALID);  
1500 -  
1501 -#else  
1502 - return -1;  
1503 -#endif  
1504 - }  
1505 -  
1506 - string get_host_charset(void)  
1507 - {  
1508 -#if defined(_WIN32)  
1509 -  
1510 - struct hllapi_packet_query query = { HLLAPI_PACKET_GET_HOST_CHARSET };  
1511 - return query_string(&query,sizeof(query),100);  
1512 -  
1513 -#elif defined(HAVE_DBUS)  
1514 -  
1515 - return query_string("getHostCharset");  
1516 -  
1517 -#else  
1518 -  
1519 - return NULL;  
1520 -  
1521 -#endif  
1522 - }  
1523 -  
1524 -  
1525 -#if defined(HAVE_DBUS)  
1526 - string get_clipboard(void)  
1527 - {  
1528 - return query_string("getClipboard");  
1529 - }  
1530 -  
1531 - int set_clipboard(const char *text)  
1532 - {  
1533 - return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID);  
1534 - }  
1535 -  
1536 - string get_display_charset(void)  
1537 - {  
1538 - return query_string("getDisplayCharset");  
1539 - }  
1540 -  
1541 - int popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...)  
1542 - {  
1543 - DBusMessage * msg = dbus_message_new_method_call( this->dest, // Destination  
1544 - this->path, // Path  
1545 - this->intf, // Interface  
1546 - "showPopup"); // method  
1547 -  
1548 - if (!msg)  
1549 - {  
1550 - throw exception("%s","Error creating DBUS message for popup");  
1551 - return -1;  
1552 - }  
1553 - else  
1554 - {  
1555 - char text[4096];  
1556 - char * ptr = text;  
1557 - va_list arg_ptr;  
1558 - dbus_int32_t i = (dbus_int32_t) id;  
1559 -  
1560 - va_start(arg_ptr, fmt);  
1561 - vsnprintf(text,4095,fmt,arg_ptr);  
1562 - va_end(arg_ptr);  
1563 -  
1564 - if(!dbus_message_append_args(msg, DBUS_TYPE_INT32, &i, DBUS_TYPE_STRING, &title, DBUS_TYPE_STRING, &message, DBUS_TYPE_STRING, &ptr, DBUS_TYPE_INVALID))  
1565 - {  
1566 - dbus_message_unref(msg);  
1567 - throw exception("%s","Cant append args for popup message");  
1568 - }  
1569 - else  
1570 - {  
1571 - DBusMessage * reply;  
1572 - DBusError error;  
1573 -  
1574 - dbus_error_init(&error);  
1575 - reply = dbus_connection_send_with_reply_and_block(conn,msg,DBUS_TIMEOUT_INFINITE,&error);  
1576 - dbus_message_unref(msg);  
1577 -  
1578 - if(!reply)  
1579 - {  
1580 - exception e = exception("%s",error.message);  
1581 - dbus_error_free(&error);  
1582 - throw e;  
1583 - return -1;  
1584 - }  
1585 -  
1586 - return get_intval(reply);  
1587 -  
1588 - }  
1589 - }  
1590 - return 0;  
1591 - }  
1592 -  
1593 -#endif // HAVE_DBUS  
1594 -  
1595 - int erase(void)  
1596 - {  
1597 - return query_intval(HLLAPI_PACKET_ERASE);  
1598 - }  
1599 -  
1600 - int erase_eof(void)  
1601 - {  
1602 - return query_intval(HLLAPI_PACKET_ERASE_EOF);  
1603 - }  
1604 -  
1605 - int erase_eol(void)  
1606 - {  
1607 - return query_intval(HLLAPI_PACKET_ERASE_EOL);  
1608 - }  
1609 -  
1610 - int erase_input(void)  
1611 - {  
1612 - return query_intval(HLLAPI_PACKET_ERASE_INPUT);  
1613 - }  
1614 -  
1615 - int print(void)  
1616 - {  
1617 - return query_intval(HLLAPI_PACKET_PRINT);  
1618 - }  
1619 -  
1620 - const char * asc2ebc(unsigned char *text, int sz)  
1621 - {  
1622 - query_strval(HLLAPI_PACKET_ASC2EBC,text,sz);  
1623 - return (const char *) text;  
1624 - }  
1625 -  
1626 - const char * ebc2asc(unsigned char *text, int sz)  
1627 - {  
1628 - query_strval(HLLAPI_PACKET_EBC2ASC,text,sz);  
1629 - return (const char *) text;  
1630 - }  
1631 -  
1632 - void set_unlock_delay(unsigned short ms)  
1633 - {  
1634 - set_intval(HLLAPI_PACKET_SET_UNLOCK_DELAY,(int) ms);  
1635 - }  
1636 -  
1637 - };  
1638 -  
1639 - session * session::create_remote(const char *session)  
1640 - {  
1641 - debug("create(%s)",session);  
1642 -  
1643 - if(strncasecmp(session,"service://",10)) {  
1644 - return new remote(session);  
1645 - }  
1646 -  
1647 -#ifdef HAVE_DBUS  
1648 - return create_service_client(session+10);  
1649 -#else  
1650 - throw exception("Can't create session \"%s\"",session);  
1651 -#endif // HAVE_DBUS  
1652 -  
1653 - }  
1654 -  
1655 - }  
1656 -  
src/libpw3270cpp/service.cc
@@ -1,623 +0,0 @@ @@ -1,623 +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 service.cc e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - */  
28 -  
29 - #include <config.h>  
30 -  
31 - #ifdef HAVE_DBUS  
32 -  
33 - #include <iostream>  
34 - #include <stdio.h>  
35 - #include <dbus/dbus.h>  
36 - #include <string.h>  
37 - #include <malloc.h>  
38 - #include <sys/types.h>  
39 - #include <unistd.h>  
40 - #include <limits.h>  
41 -  
42 - #ifndef DBUS_TIMEOUT_INFINITE  
43 - #define DBUS_TIMEOUT_INFINITE ((int) 0x7fffffff)  
44 - #endif // !DBUS_TIMEOUT_INFINITE  
45 -  
46 - #include <pw3270cpp.h>  
47 - #include <lib3270/log.h>  
48 -  
49 -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/  
50 -  
51 - namespace PW3270_NAMESPACE  
52 - {  
53 - DBusConnection * conn;  
54 -  
55 - class client : public session  
56 - {  
57 - private:  
58 -  
59 - #define DBUS_DESTINATION "br.com.bb.pw3270.service"  
60 - #define DBUS_PATH "/br/com/bb/pw3270/service"  
61 - #define DBUS_INTERFACE "br.com.bb.pw3270.service"  
62 -  
63 - DBusConnection * conn;  
64 - string name;  
65 - const char * id;  
66 -  
67 - DBusMessage * createMessage(const char *method)  
68 - {  
69 - DBusMessage * msg = dbus_message_new_method_call( DBUS_DESTINATION, // Destination  
70 - DBUS_PATH, // Path  
71 - DBUS_INTERFACE, // Interface  
72 - method); // method  
73 -  
74 - if (!msg)  
75 - throw exception("Error creating DBUS message for method %s",method);  
76 -  
77 - return msg;  
78 -  
79 - }  
80 -  
81 - DBusMessage * call(DBusMessage *msg)  
82 - {  
83 - DBusMessage * reply;  
84 - DBusError error;  
85 -  
86 - dbus_error_init(&error);  
87 - reply = dbus_connection_send_with_reply_and_block(conn,msg,10000,&error);  
88 - dbus_message_unref(msg);  
89 -  
90 - if(dbus_error_is_set(&error))  
91 - {  
92 - string msg = error.message;  
93 - dbus_error_free(&error);  
94 - throw exception("%s",msg.c_str());  
95 - }  
96 -  
97 - if(!reply)  
98 - {  
99 - throw exception("No reply for %s message","DBUS");  
100 - }  
101 -  
102 - return reply;  
103 - }  
104 -  
105 - string getString(DBusMessage *msg)  
106 - {  
107 - string rc;  
108 -  
109 - if(msg)  
110 - {  
111 - DBusMessageIter iter;  
112 -  
113 - if(dbus_message_iter_init(msg, &iter))  
114 - {  
115 - if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)  
116 - {  
117 - const char * str;  
118 - dbus_message_iter_get_basic(&iter, &str);  
119 - trace("Response: [%s]",str);  
120 - rc.assign(str);  
121 - dbus_message_unref(msg);  
122 - return rc;  
123 - }  
124 -  
125 - exception e = exception("DBUS Return type was %c, expecting %c",dbus_message_iter_get_arg_type(&iter),DBUS_TYPE_INT32);  
126 - dbus_message_unref(msg);  
127 -  
128 - throw e;  
129 -  
130 - }  
131 -  
132 - }  
133 -  
134 - return rc;  
135 -  
136 - }  
137 -  
138 - int getInteger(DBusMessage *msg) {  
139 -  
140 - if(msg)  
141 - {  
142 - DBusMessageIter iter;  
143 -  
144 - if(dbus_message_iter_init(msg, &iter))  
145 - {  
146 - if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_INT32)  
147 - {  
148 - dbus_int32_t iSigned;  
149 - dbus_message_iter_get_basic(&iter, &iSigned);  
150 - dbus_message_unref(msg);  
151 - return (int) iSigned;  
152 - }  
153 -  
154 - exception e = exception("DBUS Return type was %c, expecting %c",dbus_message_iter_get_arg_type(&iter),DBUS_TYPE_INT32);  
155 -  
156 - dbus_message_unref(msg);  
157 - throw e;  
158 - }  
159 - dbus_message_unref(msg);  
160 - }  
161 - return -1;  
162 -  
163 - }  
164 -  
165 - string getString(const char *method)  
166 - {  
167 - return getString(call(createMessage(method)));  
168 - }  
169 -  
170 - int getInteger(const char *method)  
171 - {  
172 - return getInteger(call(createMessage(method)));  
173 - }  
174 -  
175 - int getInteger(const char *method, int first_arg_type, ...)  
176 - {  
177 - va_list var_args;  
178 - DBusMessage * msg = createMessage(method);  
179 -  
180 - va_start(var_args, first_arg_type);  
181 - dbus_message_append_args_valist(msg,first_arg_type,var_args);  
182 - va_end(var_args);  
183 -  
184 - return getInteger(call(msg));  
185 - }  
186 -  
187 - string getString(const char *method, int first_arg_type, ...)  
188 - {  
189 - va_list var_args;  
190 - DBusMessage * msg = createMessage(method);  
191 -  
192 - va_start(var_args, first_arg_type);  
193 - dbus_message_append_args_valist(msg,first_arg_type,var_args);  
194 - va_end(var_args);  
195 -  
196 - return getString(call(msg));  
197 - }  
198 -  
199 - protected:  
200 -  
201 - virtual string get_text(int baddr = 0, size_t len = 1, bool lf = true)  
202 - {  
203 - dbus_int32_t a = (dbus_int32_t) baddr;  
204 - dbus_int32_t s = (dbus_int32_t) len;  
205 - char c = lf ? '\n' : 0;  
206 -  
207 - return getString( "getText",  
208 - DBUS_TYPE_STRING, &this->id,  
209 - DBUS_TYPE_INT32, &a,  
210 - DBUS_TYPE_INT32, &s,  
211 - DBUS_TYPE_BYTE, &c,  
212 - DBUS_TYPE_INVALID);  
213 -  
214 - }  
215 -  
216 - virtual string get_text_at(int row, int col, size_t sz, bool lf = true)  
217 - {  
218 - dbus_int32_t r = (dbus_int32_t) row;  
219 - dbus_int32_t c = (dbus_int32_t) col;  
220 - dbus_int32_t s = (dbus_int32_t) sz;  
221 - char l = lf ? '\n' : 0;  
222 -  
223 - return getString( "getTextAt",  
224 - DBUS_TYPE_STRING, &this->id,  
225 - DBUS_TYPE_INT32, &r,  
226 - DBUS_TYPE_INT32, &c,  
227 - DBUS_TYPE_INT32, &s,  
228 - DBUS_TYPE_BYTE, &l,  
229 - DBUS_TYPE_INVALID);  
230 -  
231 - }  
232 -  
233 - virtual int set_text_at(int row, int col, const char *str)  
234 - {  
235 - dbus_int32_t r = (dbus_int32_t) row;  
236 - dbus_int32_t c = (dbus_int32_t) col;  
237 -  
238 - return getInteger( "setTextAt",  
239 - DBUS_TYPE_STRING, &this->id,  
240 - DBUS_TYPE_INT32, &r,  
241 - DBUS_TYPE_INT32, &c,  
242 - DBUS_TYPE_STRING, &str,  
243 - DBUS_TYPE_INVALID);  
244 - }  
245 -  
246 - virtual int cmp_text_at(int row, int col, const char *str, bool lf)  
247 - {  
248 - dbus_int32_t r = (dbus_int32_t) row;  
249 - dbus_int32_t c = (dbus_int32_t) col;  
250 - char l = lf ? '\n' : 0;  
251 -  
252 - return getInteger( "cmpTextAt",  
253 - DBUS_TYPE_STRING, &this->id,  
254 - DBUS_TYPE_INT32, &r,  
255 - DBUS_TYPE_INT32, &c,  
256 - DBUS_TYPE_STRING, &str,  
257 - DBUS_TYPE_BYTE, &l,  
258 - DBUS_TYPE_INVALID);  
259 - }  
260 -  
261 - virtual int emulate_input(const char *str)  
262 - {  
263 - return getInteger( "input",  
264 - DBUS_TYPE_STRING, &this->id,  
265 - DBUS_TYPE_STRING, &str,  
266 - DBUS_TYPE_INVALID);  
267 -  
268 - }  
269 -  
270 - public:  
271 - client(const char *session)  
272 - {  
273 - DBusError err;  
274 -  
275 - dbus_error_init(&err);  
276 -#ifdef DEBUG  
277 - conn = dbus_bus_get(DBUS_BUS_SESSION, &err);  
278 -#else  
279 - conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);  
280 -#endif  
281 -  
282 - if(dbus_error_is_set(&err))  
283 - {  
284 - exception e = exception("DBUS Connection Error (%s)", err.message);  
285 - dbus_error_free(&err);  
286 - throw e;  
287 - }  
288 -  
289 - if(!conn)  
290 - {  
291 - throw exception("%s", "DBUS Connection failed");  
292 - }  
293 -  
294 - if(*session != '?')  
295 - {  
296 - // Já tem sessão definida, usa.  
297 - int rc = getInteger("chkId",DBUS_TYPE_STRING, &session, DBUS_TYPE_INVALID);  
298 - if(rc) {  
299 - throw exception("%s",strerror(rc));  
300 - }  
301 - this->name = session;  
302 - }  
303 - else  
304 - {  
305 - // Obter um ID de sessão no serviço  
306 - this->name = getString("createSession");  
307 - }  
308 -  
309 - trace("Session=%s",this->name.c_str());  
310 -  
311 - this->id = this->name.c_str();  
312 - }  
313 -  
314 - virtual ~client()  
315 - {  
316 -  
317 - }  
318 -  
319 - virtual string get_session_name(void) const  
320 - {  
321 - string rc = "service://";  
322 - rc += this->name;  
323 - return rc;  
324 - }  
325 -  
326 - virtual bool is_connected(void)  
327 - {  
328 - return getInteger("isConnected", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
329 - }  
330 -  
331 - virtual bool is_ready(void)  
332 - {  
333 - return getInteger("isReady", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
334 - }  
335 -  
336 - virtual int close(void)  
337 - {  
338 - return getInteger("destroySession", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
339 - }  
340 -  
341 - void set_timeout(time_t timeout) {  
342 - dbus_int32_t val = (dbus_int32_t) timeout;  
343 - getInteger("setTimeout", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);  
344 - }  
345 -  
346 - void set_autoclose(time_t timeout) {  
347 - dbus_int32_t val = (dbus_int32_t) timeout;  
348 - getInteger("setAutoClose", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);  
349 - }  
350 -  
351 - virtual LIB3270_CSTATE get_cstate(void)  
352 - {  
353 - return (LIB3270_CSTATE) getInteger("getConnectionState", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
354 - }  
355 -  
356 - virtual LIB3270_MESSAGE get_program_message(void)  
357 - {  
358 - return (LIB3270_MESSAGE) getInteger("getProgramMessage", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
359 - }  
360 -  
361 - virtual LIB3270_SSL_STATE get_secure(void)  
362 - {  
363 - return (LIB3270_SSL_STATE) getInteger("getSecureState", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
364 - }  
365 -  
366 - virtual int get_width(void)  
367 - {  
368 - return getInteger("getScreenWidth", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
369 - }  
370 -  
371 - virtual int get_height(void)  
372 - {  
373 - return getInteger("getScreenHeight", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
374 - }  
375 -  
376 - virtual int get_length(void)  
377 - {  
378 - return getInteger("getScreenLength", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
379 - }  
380 -  
381 - virtual void set_unlock_delay(unsigned short ms)  
382 - {  
383 - dbus_int32_t val = (dbus_int32_t) ms;  
384 - getInteger("setUnlockDelay", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);  
385 - }  
386 -  
387 - virtual int set_host_charset(const char *charset)  
388 - {  
389 - return getInteger("setHostCharset", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_STRING, &charset, DBUS_TYPE_INVALID);  
390 - }  
391 -  
392 - virtual string get_host_charset(void)  
393 - {  
394 - return getString("getHostCharset", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
395 - }  
396 -  
397 - virtual int connect()  
398 - {  
399 - return connect("",0);  
400 - }  
401 -  
402 - virtual int connect(const char *url, time_t wait)  
403 - {  
404 - int rc = getInteger("connect", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_STRING, &url, DBUS_TYPE_INVALID);  
405 -  
406 - debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc));  
407 -  
408 - if(!rc && wait) {  
409 - time_t end = time(0) + wait;  
410 - while(!is_connected()) {  
411 - if(time(0) > end) {  
412 - debug("%s: Timeout",__FUNCTION__);  
413 - return ETIMEDOUT;  
414 - }  
415 - usleep(500);  
416 - }  
417 - }  
418 -  
419 - debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc));  
420 -  
421 - return rc;  
422 -  
423 - }  
424 -  
425 - virtual int set_url(const char *hostname)  
426 - {  
427 - return getInteger("setURL", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_STRING, &hostname, DBUS_TYPE_INVALID);  
428 - }  
429 -  
430 - virtual string get_url()  
431 - {  
432 - return getString("getUrl", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
433 - }  
434 -  
435 - virtual int disconnect(void)  
436 - {  
437 - return getInteger("disconnect", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
438 - }  
439 -  
440 - virtual int wait_for_ready(int seconds)  
441 - {  
442 - time_t end = time(0)+seconds;  
443 -  
444 - debug("%s(%d)",__FUNCTION__,seconds);  
445 - while(time(0) < end)  
446 - {  
447 - if(!is_connected()) {  
448 - debug("%s: %s",__FUNCTION__,strerror(ENOTCONN));  
449 - return ENOTCONN;  
450 - }  
451 -  
452 - if(is_ready())  
453 - return 0;  
454 -  
455 - usleep(500);  
456 - }  
457 -  
458 - debug("%s: Timeout",__FUNCTION__);  
459 - return ETIMEDOUT;  
460 - }  
461 -  
462 - virtual int wait(int seconds)  
463 - {  
464 -  
465 - time_t end = time(0)+seconds;  
466 -  
467 - while(time(0) < end)  
468 - {  
469 - if(!is_connected())  
470 - return ENOTCONN;  
471 - usleep(500);  
472 - }  
473 -  
474 - return 0;  
475 - }  
476 -  
477 - virtual int iterate(bool wait)  
478 - {  
479 - if(wait)  
480 - usleep(100);  
481 - return 0;  
482 - }  
483 -  
484 - virtual const char * asc2ebc(unsigned char *str, int sz = -1)  
485 - {  
486 - return (const char *) str;  
487 - }  
488 -  
489 - virtual const char * ebc2asc(unsigned char *str, int sz = -1)  
490 - {  
491 - return (const char *) str;  
492 - }  
493 -  
494 - virtual int set_cursor_position(int row, int col)  
495 - {  
496 - dbus_int32_t r = (dbus_int32_t) row;  
497 - dbus_int32_t c = (dbus_int32_t) col;  
498 -  
499 - return getInteger( "setCursorAt",  
500 - DBUS_TYPE_STRING, &this->id,  
501 - DBUS_TYPE_INT32, &r,  
502 - DBUS_TYPE_INT32, &c,  
503 - DBUS_TYPE_INVALID);  
504 -  
505 - }  
506 -  
507 - virtual int set_cursor_addr(int addr)  
508 - {  
509 - dbus_int32_t a = (dbus_int32_t) addr;  
510 - return getInteger("setCursorAddr", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &addr, DBUS_TYPE_INVALID);  
511 - }  
512 -  
513 - virtual int get_cursor_addr(void)  
514 - {  
515 - return getInteger("getCursorAddr", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
516 - }  
517 -  
518 - virtual int set_toggle(LIB3270_TOGGLE ix, bool value)  
519 - {  
520 - dbus_int32_t i = (dbus_int32_t) ix;  
521 - dbus_int32_t v = (dbus_int32_t) value;  
522 -  
523 - return getInteger("setToggle",  
524 - DBUS_TYPE_STRING, &this->id,  
525 - DBUS_TYPE_INT32, &i,  
526 - DBUS_TYPE_INT32, &v,  
527 - DBUS_TYPE_INVALID);  
528 -  
529 - }  
530 -  
531 - virtual int enter(void)  
532 - {  
533 - return getInteger("enter", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
534 - }  
535 -  
536 - virtual int pfkey(int key)  
537 - {  
538 - dbus_int32_t val = (dbus_int32_t) key;  
539 - return getInteger("pfKey", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);  
540 - }  
541 -  
542 - virtual int pakey(int key)  
543 - {  
544 - dbus_int32_t val = (dbus_int32_t) key;  
545 - return getInteger("paKey", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);  
546 - }  
547 -  
548 - virtual int quit(void)  
549 - {  
550 - return getInteger("quit",  
551 - DBUS_TYPE_STRING, &this->id,  
552 - DBUS_TYPE_INVALID);  
553 - }  
554 -  
555 - virtual int action(const char *name)  
556 - {  
557 - return getInteger("action",  
558 - DBUS_TYPE_STRING, &this->id,  
559 - DBUS_TYPE_STRING, &name,  
560 - DBUS_TYPE_INVALID);  
561 - }  
562 -  
563 - virtual int erase(void)  
564 - {  
565 - return getInteger("erase", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
566 - }  
567 -  
568 - virtual int erase_eof(void)  
569 - {  
570 - return getInteger("eraseEof", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
571 - }  
572 -  
573 - virtual int erase_eol(void)  
574 - {  
575 - return getInteger("eraseEol", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
576 - }  
577 -  
578 - virtual int erase_input(void)  
579 - {  
580 - return getInteger("eraseInput", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
581 - }  
582 -  
583 - virtual int print(void)  
584 - {  
585 - return getInteger("print", DBUS_TYPE_STRING, &this->id, DBUS_TYPE_INVALID);  
586 - }  
587 -  
588 - virtual int get_field_start(int baddr = -1)  
589 - {  
590 - return -1;  
591 - }  
592 -  
593 - virtual int get_field_len(int baddr = -1)  
594 - {  
595 - return -1;  
596 - }  
597 -  
598 - virtual int get_next_unprotected(int baddr = -1)  
599 - {  
600 - return -1;  
601 - }  
602 -  
603 - virtual int get_is_protected(int baddr = -1)  
604 - {  
605 - return -1;  
606 - }  
607 -  
608 - virtual int get_is_protected_at(int row, int col)  
609 - {  
610 - return -1;  
611 - }  
612 -  
613 -  
614 - };  
615 -  
616 - session * create_service_client(const char *session)  
617 - {  
618 - return new client(session);  
619 - }  
620 -  
621 -  
622 - }  
623 - #endif // HAVE_DBUS  
src/libpw3270cpp/session.cc
@@ -1,765 +0,0 @@ @@ -1,765 +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 session.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 <config.h>  
31 - #include <stdarg.h>  
32 - #include <stdio.h>  
33 - #include <string.h>  
34 - #include <malloc.h>  
35 -  
36 - #include "private.h"  
37 -  
38 -#ifndef WIN32  
39 - #include <unistd.h>  
40 -#endif // !WIN32  
41 -  
42 -#ifdef HAVE_SYSLOG  
43 - #include <syslog.h>  
44 -#endif // HAVE_SYSLOG  
45 -  
46 -  
47 -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/  
48 -  
49 - using namespace PW3270_NAMESPACE;  
50 -  
51 -#if defined(linux)  
52 - static void onLoad() __attribute__((constructor));  
53 - static void onUnLoad() __attribute__((destructor));  
54 -  
55 - static void onLoad()  
56 - {  
57 - session::init();  
58 - }  
59 -  
60 - static void onUnLoad()  
61 - {  
62 - session::deinit();  
63 - }  
64 -  
65 -#endif // linux  
66 -  
67 -#ifdef _WIN32  
68 -  
69 - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)  
70 - {  
71 - switch(fdwReason)  
72 - {  
73 - case DLL_PROCESS_ATTACH:  
74 - session::init();  
75 - break;  
76 -  
77 - case DLL_PROCESS_DETACH:  
78 - session::deinit();  
79 - break;  
80 - }  
81 -  
82 - return TRUE;  
83 - }  
84 -  
85 -#endif // _WIN32  
86 -  
87 -  
88 - namespace PW3270_NAMESPACE {  
89 -  
90 - session * session::first = nullptr;  
91 - session * session::last = nullptr;  
92 - session * (*session::factory)(const char *name) = nullptr;  
93 -  
94 - static recursive_mutex mtx;  
95 -  
96 - inline void lock()  
97 - {  
98 - mtx.lock();  
99 - }  
100 -  
101 - inline void unlock()  
102 - {  
103 - mtx.unlock();  
104 - }  
105 -  
106 - void session::init()  
107 - {  
108 - trace("Loading %s objects",PACKAGE_NAME);  
109 - }  
110 -  
111 - void session::deinit()  
112 - {  
113 - trace("Unloading %s objects",PACKAGE_NAME);  
114 - while(first)  
115 - {  
116 - delete first;  
117 - }  
118 -  
119 - }  
120 -  
121 - session::session()  
122 - {  
123 -  
124 -#ifdef HAVE_ICONV  
125 - this->conv2Local = (iconv_t) (-1);  
126 - this->conv2Host = (iconv_t) (-1);  
127 -#endif  
128 -  
129 - if(first)  
130 - {  
131 - prev = last;  
132 - next = 0;  
133 - last->next = this;  
134 - last = this;  
135 - }  
136 - else  
137 - {  
138 - prev = next = 0;  
139 - first = last = this;  
140 - }  
141 -  
142 - }  
143 -  
144 - session::~session()  
145 - {  
146 -#ifdef HAVE_ICONV  
147 -  
148 - if(this->conv2Local != (iconv_t) (-1))  
149 - iconv_close(this->conv2Local);  
150 -  
151 - if(this->conv2Host != (iconv_t) (-1))  
152 - iconv_close(this->conv2Host);  
153 -  
154 -#endif  
155 -  
156 - if(prev)  
157 - prev->next = next;  
158 - else  
159 - first = next;  
160 -  
161 - if(next)  
162 - next->prev = prev;  
163 - else  
164 - last = prev;  
165 - }  
166 -  
167 - // Factory methods and settings  
168 - session * session::create(const char *name)  
169 - {  
170 - session *rc = nullptr;  
171 -  
172 - trace("%s(%s)",__FUNCTION__,name);  
173 -  
174 - lock();  
175 -  
176 - try  
177 - {  
178 - if(factory)  
179 - rc = factory(name);  
180 - else if(name && *name)  
181 - rc = create_remote(name);  
182 - else  
183 - rc = create_local();  
184 -  
185 - }  
186 - catch(std::exception &e)  
187 - {  
188 - unlock();  
189 - throw exception("%s",e.what());  
190 - }  
191 -  
192 - unlock();  
193 -  
194 - return rc;  
195 - }  
196 -  
197 - session * session::start(const char *name)  
198 - {  
199 - return create(name);  
200 - }  
201 -  
202 - bool session::has_default(void)  
203 - {  
204 - return first != nullptr;  
205 - }  
206 -  
207 - session * session::get_default(void)  
208 - {  
209 - if(first)  
210 - return first;  
211 - return create(NULL);  
212 - }  
213 -  
214 - void session::set_plugin(session * (*factory)(const char *name))  
215 - {  
216 - trace("%s(%p)",__FUNCTION__,factory);  
217 - session::factory = factory;  
218 - }  
219 -  
220 - // Object settings  
221 - void session::set_display_charset(const char *remote, const char *local)  
222 - {  
223 - trace("%s(%s,%s)",__FUNCTION__,remote,local);  
224 -  
225 -#ifdef HAVE_ICONV  
226 -  
227 - string display_charset = this->get_display_charset();  
228 -  
229 - if(this->conv2Local != (iconv_t) (-1))  
230 - iconv_close(this->conv2Local);  
231 -  
232 - if(this->conv2Host != (iconv_t) (-1))  
233 - iconv_close(this->conv2Host);  
234 -  
235 - if(!remote)  
236 - remote = display_charset.c_str();  
237 -  
238 - trace("%s remote=%s local=%s",__FUNCTION__,remote,local);  
239 -  
240 - if(strcmp(local,remote))  
241 - {  
242 - // Local and remote charsets aren't the same, setup conversion  
243 - conv2Local = iconv_open(local, remote);  
244 - conv2Host = iconv_open(remote,local);  
245 - }  
246 - else  
247 - {  
248 - // Same charset, doesn't convert  
249 - conv2Local = conv2Host = (iconv_t)(-1);  
250 - }  
251 -  
252 -#else  
253 -  
254 - throw exception("%s",strerror(ENOSUP));  
255 -  
256 -#endif  
257 -  
258 - }  
259 -  
260 - string session::get_display_charset(void)  
261 - {  
262 - return string(get_encoding());  
263 - }  
264 -  
265 - const char * session::get_encoding(void)  
266 - {  
267 - return "ISO-8859-1";  
268 - }  
269 -  
270 - // 3270 methods  
271 - const string session::get_version(void)  
272 - {  
273 - return string(PACKAGE_VERSION);  
274 - }  
275 -  
276 - const string session::get_revision(void)  
277 - {  
278 -#ifdef PACKAGE_REVISION  
279 - return string(PACKAGE_REVISION);  
280 -#else  
281 - return string(STRINGIZE_VALUE_OF(BUILD_DATE));  
282 -#endif // PACKAGE_REVISION  
283 - }  
284 -  
285 - void session::log(const char *fmt, ...)  
286 - {  
287 - va_list arg_ptr;  
288 - va_start(arg_ptr, fmt);  
289 - this->logva(fmt,arg_ptr);  
290 - va_end(arg_ptr);  
291 - }  
292 -  
293 - void session::logva(const char *fmt, va_list args)  
294 - {  
295 - #ifdef HAVE_SYSLOG  
296 - openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER);  
297 - vsyslog(LOG_INFO,fmt,args);  
298 - closelog();  
299 - #else  
300 - vfprintf(stderr,fmt,args);  
301 - #endif  
302 - }  
303 -  
304 - int session::wait_for_text_at(int row, int col, const char *key, int timeout)  
305 - {  
306 - time_t end = time(0)+timeout;  
307 -  
308 - trace("%s(%d,%d,%s,%d)",__FUNCTION__,row,col,key,timeout);  
309 -  
310 - iterate(false);  
311 - while(time(0) < end)  
312 - {  
313 - trace("Aguardar %d segundos por \"%s\" @%d,%d (%s)",(int) (end - time(0)),key,row,col,get_text_at(row,col,strlen(key)).c_str());  
314 -  
315 - int rc = wait_for_ready(end - time(0));  
316 - if(rc) {  
317 - return rc;  
318 - }  
319 -  
320 - if(!cmp_text_at(row,col,key)) {  
321 - return 0;  
322 - }  
323 -  
324 - iterate(true);  
325 -  
326 - }  
327 -  
328 - trace("Tela:\n%s\n", ((string) *this).c_str());  
329 -  
330 - return ETIMEDOUT;  
331 - }  
332 -  
333 - int session::set_copy(const char *text)  
334 - {  
335 - return EINVAL;  
336 - }  
337 -  
338 - string session::get_copy(void)  
339 - {  
340 - errno = EINVAL;  
341 - return string();  
342 - }  
343 -  
344 - string session::get_clipboard(void)  
345 - {  
346 -#if defined(_WIN32)  
347 -  
348 - if (! OpenClipboard(0))  
349 - {  
350 - throw exception(GetLastError(),"%s","Can´t open system clipboard");  
351 - return NULL;  
352 - }  
353 -  
354 - HANDLE hData = GetClipboardData(CF_TEXT);  
355 - if(!hData)  
356 - {  
357 - throw exception(GetLastError(),"%s","Can´t get clipboard data");  
358 - return NULL;  
359 - }  
360 -  
361 - char * pszText = static_cast<char*>( GlobalLock(hData) );  
362 - if(!pszText)  
363 - {  
364 - throw exception(GetLastError(),"%s","Can´t lock clipboard");  
365 - return NULL;  
366 - }  
367 -  
368 - string text = string ( pszText );  
369 -  
370 - GlobalUnlock( hData );  
371 -  
372 - CloseClipboard();  
373 -  
374 - return text;  
375 -  
376 -#else  
377 - errno = EINVAL;  
378 - return NULL;  
379 -  
380 -#endif // _WIN32  
381 - }  
382 -  
383 - int session::set_clipboard(const char *text)  
384 - {  
385 -#if defined(_WIN32)  
386 - if (! OpenClipboard(0))  
387 - {  
388 - throw exception(GetLastError(),"%s","Can´t open system clipboard");  
389 - return -1;  
390 - }  
391 -  
392 - EmptyClipboard();  
393 -  
394 - size_t size = strlen(text)+1;  
395 - HGLOBAL hClipboardData = GlobalAlloc(GMEM_MOVEABLE , size);  
396 -  
397 - strcpy((char *) GlobalLock(hClipboardData), text);  
398 -  
399 - if(!SetClipboardData(CF_TEXT, hClipboardData))  
400 - {  
401 - GlobalUnlock(hClipboardData);  
402 - CloseClipboard();  
403 - throw exception(GetLastError(),"%s","Can´t set system clipboard");  
404 - }  
405 -  
406 - GlobalUnlock(hClipboardData);  
407 - CloseClipboard();  
408 -  
409 - return 0;  
410 -#else  
411 -  
412 - return EINVAL;  
413 -  
414 -#endif // _WIN32  
415 - }  
416 -  
417 -  
418 - int session::popup_dialog(LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...)  
419 - {  
420 - return -1;  
421 - }  
422 -  
423 - string session::file_chooser_dialog(int action, const char *title, const char *extension, const char *filename)  
424 - {  
425 - return string("");  
426 - }  
427 -  
428 - string session::get_3270_text(const char *str)  
429 - {  
430 - string rc;  
431 -  
432 -#ifdef HAVE_ICONV  
433 - size_t in = strlen(str);  
434 -  
435 - if(in && conv2Host != (iconv_t)(-1))  
436 - {  
437 - size_t out = (in << 1);  
438 - char * ptr;  
439 - char * outBuffer = (char *) malloc(out);  
440 - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;  
441 -  
442 - memset(ptr=outBuffer,0,out);  
443 -  
444 - iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state  
445 -  
446 - if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) == ((size_t) -1)) {  
447 - rc.assign(str);  
448 - } else {  
449 - rc.assign(outBuffer);  
450 - }  
451 -  
452 - free(outBuffer);  
453 - } else {  
454 - rc.assign(str);  
455 - }  
456 -#else  
457 - rc.assign(str);  
458 -#endif // HAVE_ICONV  
459 -  
460 - trace("%s(\"%s\")=\"%s\"",__FUNCTION__,str,rc.c_str());  
461 -  
462 - return rc;  
463 - }  
464 -  
465 - string session::get_local_text(const char *str)  
466 - {  
467 - string rc;  
468 -  
469 -#ifdef HAVE_ICONV  
470 - size_t in = strlen(str);  
471 -  
472 - if(in && conv2Local != (iconv_t)(-1))  
473 - {  
474 - size_t out = (in << 1);  
475 - char * ptr;  
476 - char * outBuffer = (char *) malloc(out);  
477 - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;  
478 -  
479 - memset(ptr=outBuffer,0,out);  
480 -  
481 - iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state  
482 -  
483 - if(iconv(conv2Local,&inBuffer,&in,&ptr,&out) != ((size_t) -1))  
484 - rc.assign(outBuffer);  
485 -  
486 - free(outBuffer);  
487 - }  
488 - else  
489 - {  
490 - char * text = strdup(str);  
491 - for(char *ptr = text;*ptr;ptr++)  
492 - {  
493 - if(*ptr < ' ' || *ptr > 128)  
494 - {  
495 - *ptr = '?';  
496 - }  
497 - }  
498 - rc = text;  
499 - free(text);  
500 - }  
501 -#else  
502 - char * text = strdup(str);  
503 - for(char *ptr = text;*ptr;ptr++)  
504 - {  
505 - if(*ptr < ' ' || *ptr > 128)  
506 - {  
507 - *ptr = '?';  
508 - }  
509 - }  
510 - rc = text;  
511 - free(text);  
512 -#endif // HAVE_ICONV  
513 -  
514 - return rc;  
515 - }  
516 -  
517 - string session::get_string_at(int row, int col, size_t sz, bool lf)  
518 - {  
519 - return this->get_local_text(this->get_text_at(row,col,sz,lf).c_str());  
520 - }  
521 -  
522 - int session::set_string_at(int row, int col, const char *str)  
523 - {  
524 - if(!str)  
525 - return -1;  
526 -  
527 -#ifdef HAVE_ICONV  
528 - if(conv2Host != (iconv_t)(-1))  
529 - {  
530 - size_t in = strlen(str);  
531 - size_t out = (in << 1);  
532 - char * ptr;  
533 - char * outBuffer = (char *) malloc(out);  
534 - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;  
535 -  
536 - memset(ptr=outBuffer,0,out);  
537 -  
538 - iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state  
539 -  
540 - if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) != ((size_t) -1))  
541 - {  
542 - int rc = this->set_text_at(row,col,outBuffer);  
543 - free(outBuffer);  
544 - return rc;  
545 - }  
546 -  
547 - free(outBuffer);  
548 - }  
549 -#endif // HAVE_ICONV  
550 -  
551 - return this->set_text_at(row,col,str);  
552 -  
553 - }  
554 -  
555 - int session::input_string(const char *str)  
556 - {  
557 - if(!str)  
558 - return -1;  
559 -  
560 -#ifdef HAVE_ICONV  
561 - if(conv2Host != (iconv_t)(-1))  
562 - {  
563 - size_t in = strlen(str);  
564 - size_t out = (in << 1);  
565 - char * ptr;  
566 - char * outBuffer = (char *) malloc(out);  
567 - ICONV_CONST char * inBuffer = (ICONV_CONST char *) str;  
568 -  
569 - memset(ptr=outBuffer,0,out);  
570 -  
571 - iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state  
572 -  
573 - if(iconv(conv2Host,&inBuffer,&in,&ptr,&out) != ((size_t) -1))  
574 - {  
575 - int rc = this->emulate_input(outBuffer);  
576 - free(outBuffer);  
577 - return rc;  
578 - }  
579 -  
580 - free(outBuffer);  
581 - }  
582 -#endif // HAVE_ICONV  
583 -  
584 - return this->emulate_input(str);  
585 -  
586 - }  
587 -  
588 - int session::cmp_string_at(int row, int col, const char *text, bool lf)  
589 - {  
590 - return cmp_text_at(row,col,get_3270_text(text).c_str(),lf);  
591 - }  
592 -  
593 - int session::wait_for_string_at(int row, int col, const char *key, int timeout)  
594 - {  
595 - return wait_for_text_at(row,col,get_3270_text(key).c_str(),timeout);  
596 - }  
597 -  
598 - string session::get_string(int baddr, size_t len, bool lf)  
599 - {  
600 - return get_local_text(get_text(baddr,len,lf).c_str());  
601 - }  
602 -  
603 - string session::asc2ebc(string &str)  
604 - {  
605 - size_t sz = str.size();  
606 - unsigned char buffer[sz+1];  
607 -  
608 - memcpy(buffer,str.c_str(),sz);  
609 - return string(asc2ebc(buffer,sz));  
610 - }  
611 -  
612 - string session::ebc2asc(string &str)  
613 - {  
614 - size_t sz = str.size();  
615 - unsigned char buffer[sz+1];  
616 - memcpy(buffer,str.c_str(),sz);  
617 - return string(ebc2asc(buffer,sz));  
618 - }  
619 -  
620 - int session::file_transfer(LIB3270_FT_OPTION options, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft)  
621 - {  
622 - log("Can't transfer %s: File transfer is unavailable", local ? local : "file");  
623 - return EINVAL;  
624 - }  
625 -  
626 - int session::set_host(const char *host)  
627 - {  
628 - return set_url(host);  
629 - }  
630 -  
631 - int session::connect(const char *url, time_t wait)  
632 - {  
633 - int rc = 0;  
634 -  
635 - if(url && *url)  
636 - {  
637 - set_url(url);  
638 - }  
639 -  
640 - rc = connect();  
641 - trace("%s: connect=%d wait=%u",__FUNCTION__,rc,(unsigned int) wait);  
642 -  
643 - if(!rc && wait)  
644 - {  
645 - rc = wait_for_ready(wait);  
646 - }  
647 -  
648 - return rc;  
649 - }  
650 -  
651 -#ifdef _WIN32  
652 - string session::win32_strerror(int e)  
653 - {  
654 - static char buffer[4096];  
655 -  
656 - memset(buffer,0,sizeof(buffer));  
657 -  
658 - if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,e,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),buffer,sizeof(buffer),NULL) == 0)  
659 - {  
660 - snprintf(buffer,4095,"Windows error %d", e);  
661 - }  
662 -  
663 - for(size_t f=0;f<sizeof(buffer);f++)  
664 - {  
665 - if(buffer[f] < ' ')  
666 - {  
667 - buffer[f] = 0;  
668 - break;  
669 - }  
670 - }  
671 -  
672 - return string(buffer);  
673 - }  
674 -#endif // _WIN32  
675 -  
676 - int session::erase(int mode) {  
677 -  
678 - switch(mode) {  
679 - case 0:  
680 - return erase();  
681 -  
682 - case 1:  
683 - return erase_eof();  
684 -  
685 - case 2:  
686 - return erase_eol();  
687 -  
688 - case 3:  
689 - return erase_input();  
690 -  
691 - }  
692 -  
693 - return -1;  
694 - }  
695 -  
696 - string session::get_contents(bool lf)  
697 - {  
698 - string rc = "";  
699 - int rows = get_height();  
700 - int cols = get_width();  
701 -  
702 - for(int r = 0; r < rows; r++)  
703 - {  
704 - rc += get_string_at(r+1,1,cols).c_str();  
705 - if(lf) {  
706 - rc += "\n";  
707 - }  
708 - }  
709 -  
710 - return rc;  
711 - }  
712 -  
713 - size_t session::find_string(const char *str, bool lf) {  
714 -  
715 - int rc = 0;  
716 -  
717 - try  
718 - {  
719 - size_t pos = get_contents(lf).find(str);  
720 -  
721 - if(pos != string::npos) {  
722 - rc = ((int) pos) + 1;  
723 - }  
724 -  
725 - }  
726 - catch(std::exception &e)  
727 - {  
728 - rc = 0;  
729 - }  
730 -  
731 - return rc;  
732 -  
733 - }  
734 -  
735 -  
736 - string session::get_session_name(void) const  
737 - {  
738 - return string();  
739 - }  
740 -  
741 - int session::close(void) {  
742 - return 0;  
743 - }  
744 -  
745 - /**  
746 - * @brief Define após quantos segundos uma sessão IDLE será cancelada.  
747 - *  
748 - * @param timeout Nº de segundos a esperar em sessão inativa.  
749 - *  
750 - */  
751 - void session::set_timeout(time_t timeout) {  
752 - }  
753 -  
754 - /**  
755 - * @brief Define após quantos segundos uma sessão offline será cancelada.  
756 - *  
757 - * @param timeout Nº de segundos a esperar em sessão offline.  
758 - *  
759 - */  
760 - void session::set_autoclose(time_t timeout) {  
761 - }  
762 -  
763 - }  
764 -  
765 -  
src/libpw3270cpp/testprogram.cc
@@ -1,119 +0,0 @@ @@ -1,119 +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 testprogram.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 <pw3270cpp.h>  
31 - #include <unistd.h>  
32 - #include <iostream>  
33 -  
34 - using namespace std;  
35 - using namespace PW3270_NAMESPACE;  
36 -  
37 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
38 -  
39 - int main(int numpar, char *param[])  
40 - {  
41 -  
42 - try  
43 - {  
44 - string s;  
45 - // session *session = session::start("service://?");  
46 - session *session = session::start("");  
47 - // session *session = session::start("pw3270:A");  
48 -  
49 - string name = session->get_session_name();  
50 -  
51 - cout << "pw3270 version: " << session->get_version() << endl;  
52 - cout << "pw3270 revision: " << session->get_revision() << endl;  
53 - cout << "pw3270 session: " << name << endl << endl;  
54 -  
55 - session->set_timeout(60);  
56 - session->set_autoclose(60);  
57 -  
58 - if(session->is_connected())  
59 - cout << "\tConnected to host" << endl;  
60 - else  
61 - cout << "\tDisconnected" << endl;  
62 -  
63 - cout << "\tSession state: " << session->get_cstate() << endl;  
64 -  
65 - // s = session->get_display_charset();  
66 - // cout << "\tDisplay charset: " << s.c_str() << endl;  
67 -  
68 - // s = session->get_host_charset();  
69 - // cout << "\tHost charset: " << s.c_str() << endl;  
70 -  
71 - cout << "Connect: " << session->connect("tn3270://fandezhi.efglobe.com:23",60) << endl << endl;  
72 -  
73 - cout << "\tWaitForReady: " << session->wait_for_ready(10) << endl;  
74 -  
75 - cout << "\tIsConnected: " << session->is_connected() << endl;  
76 - cout << "\tIsReady: " << session->is_ready() << endl;  
77 - cout << "\tString(1,2,26) " << session->get_string_at(1,2,26) << endl;  
78 -  
79 - cout << "Conteúdo:" << endl << session->get_contents() << endl;  
80 -  
81 - delete session;  
82 -  
83 - /*  
84 - session = session::start(name.c_str());  
85 - cout << "Restored session: " << name << endl << endl;  
86 - cout << "\tIsConnected: " << session->is_connected() << endl;  
87 - cout << "\tIsReady: " << session->is_ready() << endl;  
88 -  
89 - session->disconnect();  
90 - session->close();  
91 - delete session;  
92 - */  
93 -  
94 - }  
95 - catch(std::exception &e) {  
96 -  
97 - cerr << e.what() << endl;  
98 - return -1;  
99 - }  
100 -  
101 - // Waits  
102 - sleep(2);  
103 -  
104 - // Create another session  
105 - /*  
106 - {  
107 - session *session = session::start("pw3270:a");  
108 -  
109 - session->disconnect();  
110 - delete session;  
111 -  
112 - }  
113 - */  
114 -  
115 -  
116 - return 0;  
117 - }  
118 -  
119 -  
src/libpw3270cpp/valgrind.suppression
src/plugins/sample/main.c
@@ -1,79 +0,0 @@ @@ -1,79 +0,0 @@
1 -/*  
2 - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270  
3 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a  
4 - * aplicativos mainframe. Registro no INPI sob o nome G3270.  
5 - *  
6 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
7 - *  
8 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
9 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
10 - * Free Software Foundation.  
11 - *  
12 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
13 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
14 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
15 - * obter mais detalhes.  
16 - *  
17 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
18 - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple  
19 - * Place, Suite 330, Boston, MA, 02111-1307, USA  
20 - *  
21 - * Este programa está nomeado como main.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - *  
27 - *  
28 - */  
29 -  
30 - #include <pw3270.h>  
31 - #include <pw3270/plugin.h>  
32 -  
33 -/*--[ Implement ]---------------------------------------------------------------------------------------------------------*/  
34 -  
35 - /**  
36 - * @brief Method called when the terminal connects to host.  
37 - *  
38 - * @param terminal Terminal widget.  
39 - * @param host Connected host.  
40 - * @param window Application window.  
41 - *  
42 - */  
43 - static void connected(GtkWidget *terminal, const gchar *host, GtkWidget * window) {  
44 -  
45 - g_message("%s - %s",__FUNCTION__,host);  
46 -  
47 - }  
48 -  
49 - /**  
50 - * @brief Method called when the terminal loses connection with the host.  
51 - *  
52 - * @param terminal Terminal widget.  
53 - * @param window Application window.  
54 - *  
55 - */  
56 - static void disconnected(GtkWidget *terminal, GtkWidget * window) {  
57 -  
58 - g_message("%s",__FUNCTION__);  
59 -  
60 - }  
61 -  
62 - /**  
63 - * @brief Plugin has started.  
64 - *  
65 - */  
66 - LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window) {  
67 -  
68 - GtkWidget * terminal = pw3270_get_terminal_widget(window);  
69 -  
70 - g_message("%s",__FUNCTION__);  
71 -  
72 - g_signal_connect(terminal,"disconnected",G_CALLBACK(disconnected),window);  
73 - g_signal_connect(terminal,"connected",G_CALLBACK(connected),window);  
74 -  
75 - return 0;  
76 - }  
77 -  
78 -  
79 -  
src/plugins/sample/sample.cbp
@@ -1,52 +0,0 @@ @@ -1,52 +0,0 @@
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="PW3270 - Sample plugin" />  
6 - <Option pch_mode="2" />  
7 - <Option default_target="Release" />  
8 - <Option compiler="gcc" />  
9 - <Build>  
10 - <Target title="Debug">  
11 - <Option output=".bin/Debug/sample3270" imp_lib="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="0" extension_auto="1" />  
12 - <Option object_output=".obj/Debug/" />  
13 - <Option type="3" />  
14 - <Option compiler="gcc" />  
15 - <Option parameters="--pluginpath=${PWD}/.bin/Debug" />  
16 - <Option host_application="pw3270" />  
17 - <Option run_host_application_in_terminal="1" />  
18 - <Compiler>  
19 - <Add option="-g" />  
20 - </Compiler>  
21 - </Target>  
22 - <Target title="Release">  
23 - <Option output=".bin/Release/sample3270" imp_lib="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="0" extension_auto="1" />  
24 - <Option object_output=".obj/Release/" />  
25 - <Option type="3" />  
26 - <Option compiler="gcc" />  
27 - <Compiler>  
28 - <Add option="-O2" />  
29 - </Compiler>  
30 - <Linker>  
31 - <Add option="-s" />  
32 - </Linker>  
33 - </Target>  
34 - </Build>  
35 - <Compiler>  
36 - <Add option="-Wall" />  
37 - <Add option="`pkg-config gtk+-2.0 --cflags`" />  
38 - <Add option="-fPIC" />  
39 - </Compiler>  
40 - <Linker>  
41 - <Add option="`pkg-config gtk+-2.0 --libs`" />  
42 - </Linker>  
43 - <Unit filename="main.c">  
44 - <Option compilerVar="CC" />  
45 - </Unit>  
46 - <Extensions>  
47 - <code_completion />  
48 - <envvars />  
49 - <debugger />  
50 - </Extensions>  
51 - </Project>  
52 -</CodeBlocks_project_file>  
src/sample/Makefile.in
@@ -1,44 +0,0 @@ @@ -1,44 +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 -# 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 -LIB3270_CFLAGS=`pkg-config --cflags lib3270`  
28 -LIB3270_LIBS=`pkg-config --libs lib3270`  
29 -  
30 -EXEEXT=@EXEEXT@  
31 -MKDIR=@MKDIR_P@  
32 -CC=@CC@  
33 -LD=@CC@  
34 -  
35 -CFLAGS=-g -Wall  
36 -  
37 -#---[ Targets ]----------------------------------------------------------------  
38 -  
39 -all: connect$(EXEEXT)  
40 -  
41 -connect$(EXEEXT): connect.c  
42 - $(CC) $(CFLAGS) $(LIB3270_CFLAGS) -o $@ $^ $(LIB3270_LIBS)  
43 -  
44 -  
src/sample/connect.c
@@ -1,87 +0,0 @@ @@ -1,87 +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 connect.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - * licinio@bb.com.br (Licínio Luis Branco)  
28 - * kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
29 - *  
30 - */  
31 -  
32 - #include <stdio.h>  
33 - #include <stdlib.h>  
34 - #include <string.h>  
35 - #include <lib3270.h>  
36 -  
37 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
38 -  
39 - int main(int numpar, char *param[])  
40 - {  
41 - H3270 *hSession;  
42 - int rc;  
43 -  
44 - if(numpar != 2)  
45 - {  
46 - fprintf(stderr,"Inform host URI as argument\n");  
47 - exit(-1);  
48 - }  
49 -  
50 - /* Get session handle */  
51 - hSession = lib3270_session_new("");  
52 -  
53 - /* Connect to the requested URI, wait for 3270 negotiation */  
54 - rc = lib3270_connect(hSession,param[1],1);  
55 - if(rc)  
56 - {  
57 - fprintf(stderr,"Can't connect to %s: %s\n",param[1],strerror(rc));  
58 - return rc;  
59 - }  
60 -  
61 - printf("Connected to LU %s\n",lib3270_get_luname(hSession));  
62 -  
63 - /* Wait until the host is ready for commands */  
64 - rc = lib3270_wait_for_ready(hSession,60);  
65 - if(rc)  
66 - {  
67 - fprintf(stderr,"Error waiting for session negotiation: %s\n",strerror(rc));  
68 - return rc;  
69 - }  
70 - else  
71 - {  
72 - /* Host is ready, get screen contents */  
73 - char *text = lib3270_get_string_at_address(hSession,0,-1);  
74 -  
75 - printf("\nScreen contents:\n%s\n",text);  
76 -  
77 - lib3270_free(text);  
78 - }  
79 -  
80 -  
81 -  
82 -  
83 - /* Release session handle */  
84 - lib3270_session_free(hSession);  
85 - return 0;  
86 - }  
87 -  
src/sample/sample.cbp
@@ -1,32 +0,0 @@ @@ -1,32 +0,0 @@
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="pw3270 Samples" />  
6 - <Option makefile_is_custom="1" />  
7 - <Option pch_mode="2" />  
8 - <Option compiler="gcc" />  
9 - <Build>  
10 - <Target title="connect">  
11 - <Option output="connect" 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 - </Build>  
20 - <Compiler>  
21 - <Add option="-Wall" />  
22 - </Compiler>  
23 - <Unit filename="Makefile.in" />  
24 - <Unit filename="connect.c">  
25 - <Option compilerVar="CC" />  
26 - </Unit>  
27 - <Extensions>  
28 - <code_completion />  
29 - <debugger />  
30 - </Extensions>  
31 - </Project>  
32 -</CodeBlocks_project_file>  
src/tests/Makefile
@@ -1,63 +0,0 @@ @@ -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., 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 -# licinio@bb.com.br (Licínio Luis Branco)  
26 -# kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
27 -#  
28 -  
29 -include ../include/rules.mak  
30 -include ../lib3270/sources.mak  
31 -  
32 -DEBUG_CFLAGS=-DDEBUG=1 -g -Wall  
33 -LIBS=-lm -lssl -lcrypto  
34 -  
35 -#---[ Rules ]------------------------------------------------------------------  
36 -  
37 -$(OBJDBG)/%.o: %.c  
38 - @echo " CC `basename $@`"  
39 - @$(MKDIR) `dirname $@`  
40 - @$(CC) $(DEBUG_CFLAGS) $(CFLAGS) $(SSL_CFLAGS) -I../include -I../lib3270 -o $@ -c $<  
41 -  
42 -  
43 -$(OBJDBG)/%.o: ../lib3270/%.c  
44 - @echo " CC `basename $@`"  
45 - @$(MKDIR) `dirname $@`  
46 - @$(CC) $(DEBUG_CFLAGS) $(CFLAGS) $(SSL_CFLAGS) -I../include -I../lib3270 -o $@ -c $<  
47 -  
48 -#---[ Tags ]-------------------------------------------------------------------  
49 -  
50 -Debug: $(BINDBG)/rpqtest$(EXEEXT)  
51 -  
52 -$(BINDBG)/rpqtest$(EXEEXT): $(OBJDBG)/rpqtest$(OBJEXT) $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT))  
53 - @echo " CCLD `basename $@`"  
54 - @$(MKDIR) `dirname $@`  
55 - @$(LD) -o $@ $(OBJDBG)/rpqtest$(OBJEXT) $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)$(OBJEXT)) $(LIBS)  
56 -  
57 -cleanDebug:  
58 - @rm -fr $(OBJDBG)  
59 - @rm -fr $(BINDBG)  
60 -  
61 -clean:  
62 - @rm -fr $(OBJDBG)  
63 - @rm -fr $(BINDBG)  
src/tests/rpqtest.c
@@ -1,61 +0,0 @@ @@ -1,61 +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. 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 rpqtest.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 -  
31 -#include <stdio.h>  
32 -#include <string.h>  
33 -  
34 -#include <stdio.h>  
35 -#include <string.h>  
36 -#include <pthread.h>  
37 -#include <3270ds.h>  
38 -  
39 -#include "globals.h"  
40 -#include <sf.h>  
41 -#include <ctlrc.h>  
42 -  
43 -static int dump_buffer(H3270 *hSession, unsigned const char *buf, int len)  
44 -{  
45 - return 0;  
46 -}  
47 -  
48 -int main(int numpar, char *param[])  
49 -{  
50 - unsigned char buffer[] = { 0xf3, 0x00, 0x05, 0x01, 0xff, 0x02 };  
51 -  
52 - H3270 *hSession = lib3270_session_new("");  
53 - hSession->write = dump_buffer;  
54 -  
55 - lib3270_set_toggle(hSession,LIB3270_TOGGLE_DS_TRACE,1);  
56 -  
57 - write_structured_field(hSession, buffer, 6);  
58 -  
59 - lib3270_session_free(hSession);  
60 - return 0;  
61 -}  
src/tests/tests.cbp
@@ -1,60 +0,0 @@ @@ -1,60 +0,0 @@
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="pw3270tests" />  
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/rpqtest" 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/pw3270tests" 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/lib3270/session.h" />  
36 - <Unit filename="../lib3270/ctlr.c">  
37 - <Option compilerVar="CC" />  
38 - </Unit>  
39 - <Unit filename="../lib3270/rpq.c">  
40 - <Option compilerVar="CC" />  
41 - </Unit>  
42 - <Unit filename="../lib3270/session.c">  
43 - <Option compilerVar="CC" />  
44 - </Unit>  
45 - <Unit filename="../lib3270/sf.c">  
46 - <Option compilerVar="CC" />  
47 - </Unit>  
48 - <Unit filename="../lib3270/toggles.c">  
49 - <Option compilerVar="CC" />  
50 - </Unit>  
51 - <Unit filename="Makefile" />  
52 - <Unit filename="rpqtest.c">  
53 - <Option compilerVar="CC" />  
54 - </Unit>  
55 - <Extensions>  
56 - <code_completion />  
57 - <debugger />  
58 - </Extensions>  
59 - </Project>  
60 -</CodeBlocks_project_file>  
versions.in
@@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
1 -PACKAGE=@PACKAGE@  
2 -PACKAGE_NAME=@PACKAGE_NAME@  
3 -PACKAGE_TARNAME=@PACKAGE_TARNAME@  
4 -PACKAGE_VERSION=@PACKAGE_VERSION@  
5 -GTK_MODVERSION=@GTK_MODVERSION@  
6 -host_cpu=@host_cpu@  
7 -