Commit a2ea3a5742c06e513ff1b62758a4ec3813baa4da

Authored by perry.werneck@gmail.com
1 parent d546495b

Implementando comunicação com o host através de sockets java

android/Makefile
@@ -32,12 +32,16 @@ CONVERT=rsvg-convert @@ -32,12 +32,16 @@ CONVERT=rsvg-convert
32 32
33 RESOLUTION=xhdpi mdpi ldpi hdpi 33 RESOLUTION=xhdpi mdpi ldpi hdpi
34 34
35 -Debug: jni/lib3270jni.h $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/ic_launcher.png) 35 +Debug: jni/lib3270jni.h icons
36 @$(NDKBUILD) 36 @$(NDKBUILD)
37 37
  38 +icons: $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/ic_launcher.png)
  39 +
38 clean: 40 clean:
39 @rm -fr obj 41 @rm -fr obj
40 @rm -f jni/lib3270jni.h 42 @rm -f jni/lib3270jni.h
  43 + @rm -f sigs.txt
  44 + @rm -f bin/classes/$(CLASSPATH)/lib3270.class
41 @rm -f $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/ic_launcher.png) 45 @rm -f $(foreach DIR, $(RESOLUTION), res/drawable-$(DIR)/ic_launcher.png)
42 46
43 res/drawable-xhdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg 47 res/drawable-xhdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg
@@ -60,6 +64,9 @@ res/drawable-hdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg @@ -60,6 +64,9 @@ res/drawable-hdpi/ic_launcher.png: ../src/pw3270/pixmaps/pw3270.svg
60 @$(MKDIR) `dirname $@` 64 @$(MKDIR) `dirname $@`
61 @$(CONVERT) --format=png --width=72 --height=72 --output=$@ $< 65 @$(CONVERT) --format=png --width=72 --height=72 --output=$@ $<
62 66
  67 +sigs.txt: ./bin/classes/br/com/bb/pw3270/lib3270.class
  68 + @javap -classpath ./bin/classes -s -p br.com.bb.pw3270.lib3270 > $@
  69 +
63 jni/lib3270jni.h: bin/classes/$(CLASSPATH)/lib3270.class 70 jni/lib3270jni.h: bin/classes/$(CLASSPATH)/lib3270.class
64 @echo " GEN `basename $@`" 71 @echo " GEN `basename $@`"
65 @$(JAVAH) -o $@ -classpath bin/classes $(subst /,.,$(CLASSPATH)).lib3270 72 @$(JAVAH) -o $@ -classpath bin/classes $(subst /,.,$(CLASSPATH)).lib3270
android/jni/main.cpp
@@ -28,6 +28,7 @@ @@ -28,6 +28,7 @@
28 28
29 #include "globals.h" 29 #include "globals.h"
30 #include <lib3270/popup.h> 30 #include <lib3270/popup.h>
  31 + #include <lib3270/internals.h>
31 32
32 /*--[ Globals ]--------------------------------------------------------------------------------------*/ 33 /*--[ Globals ]--------------------------------------------------------------------------------------*/
33 34
@@ -69,7 +70,7 @@ static int popuphandler(H3270 *session, void *terminal, LIB3270_NOTIFY type, con @@ -69,7 +70,7 @@ static int popuphandler(H3270 *session, void *terminal, LIB3270_NOTIFY type, con
69 JNIEnv * env = ((INFO *) session->widget)->env; 70 JNIEnv * env = ((INFO *) session->widget)->env;
70 jobject obj = ((INFO *) session->widget)->obj; 71 jobject obj = ((INFO *) session->widget)->obj;
71 jclass cls = env->GetObjectClass(obj); 72 jclass cls = env->GetObjectClass(obj);
72 - jmethodID mid = env->GetMethodID(cls, "postPopup", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); 73 + jmethodID mid = env->GetMethodID(cls, "popupMessage", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
73 char * descr; 74 char * descr;
74 75
75 descr = lib3270_vsprintf(fmt, args); 76 descr = lib3270_vsprintf(fmt, args);
@@ -91,6 +92,30 @@ static void ctlr_done(H3270 *session) @@ -91,6 +92,30 @@ static void ctlr_done(H3270 *session)
91 post_message(session,4); 92 post_message(session,4);
92 } 93 }
93 94
  95 +static int write_buffer(H3270 *session, unsigned const char *buf, int len)
  96 +{
  97 + int rc = -1;
  98 +
  99 + if(session->widget)
  100 + {
  101 + JNIEnv * env = ((INFO *) session->widget)->env;
  102 + jobject obj = ((INFO *) session->widget)->obj;
  103 + jclass cls = env->GetObjectClass(obj);
  104 + jmethodID mid = env->GetMethodID(cls, "send_data", "([BI)I");
  105 + jbyteArray buffer = env->NewByteArray(len);
  106 +
  107 + env->SetByteArrayRegion(buffer, 0, len, (jbyte*) buf);
  108 +
  109 + rc = env->CallIntMethod(obj, mid, buffer, (jint) len );
  110 + }
  111 + else
  112 + {
  113 + __android_log_print(ANDROID_LOG_VERBOSE, PACKAGE_NAME, "Can't send %d bytes, no jni env for active session",len);
  114 + }
  115 +
  116 + return rc;
  117 +}
  118 +
94 JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass obj) 119 JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass obj)
95 { 120 {
96 H3270 * session = lib3270_session_new(""); 121 H3270 * session = lib3270_session_new("");
@@ -99,6 +124,7 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass ob @@ -99,6 +124,7 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_init(JNIEnv *env, jclass ob
99 124
100 lib3270_set_popup_handler(popuphandler); 125 lib3270_set_popup_handler(popuphandler);
101 126
  127 + session->write = write_buffer;
102 session->changed = changed; 128 session->changed = changed;
103 session->update_status = update_status; 129 session->update_status = update_status;
104 session->erase = erase; 130 session->erase = erase;
@@ -150,3 +176,18 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_do_1connect(JNIEnv *env, jo @@ -150,3 +176,18 @@ JNIEXPORT jint JNICALL Java_br_com_bb_pw3270_lib3270_do_1connect(JNIEnv *env, jo
150 return (jint) rc; 176 return (jint) rc;
151 } 177 }
152 178
  179 +JNIEXPORT void JNICALL Java_br_com_bb_pw3270_lib3270_procRecvdata(JNIEnv *env, jobject obj, jbyteArray buffer, jint sz)
  180 +{
  181 + unsigned char *netrbuf = (unsigned char *) env->GetByteArrayElements(buffer,NULL);
  182 +
  183 + session_request(env,obj);
  184 +
  185 + trace("Processando %d bytes",(size_t) sz);
  186 +
  187 + lib3270_data_recv(session, (size_t) sz, netrbuf);
  188 +
  189 + env->ReleaseByteArrayElements(buffer, (signed char *) netrbuf, 0);
  190 +
  191 + session_release();
  192 +
  193 +}
android/lib3270NDK.cbp
@@ -34,13 +34,18 @@ @@ -34,13 +34,18 @@
34 </Compiler> 34 </Compiler>
35 <Unit filename="../src/include/lib3270.h" /> 35 <Unit filename="../src/include/lib3270.h" />
36 <Unit filename="../src/include/lib3270/html.h" /> 36 <Unit filename="../src/include/lib3270/html.h" />
  37 + <Unit filename="../src/include/lib3270/internals.h" />
37 <Unit filename="../src/lib3270/html.c"> 38 <Unit filename="../src/lib3270/html.c">
38 <Option compilerVar="CC" /> 39 <Option compilerVar="CC" />
39 </Unit> 40 </Unit>
  41 + <Unit filename="../src/lib3270/telnet.c">
  42 + <Option compilerVar="CC" />
  43 + </Unit>
40 <Unit filename="Makefile" /> 44 <Unit filename="Makefile" />
41 <Unit filename="jni/Android.mk" /> 45 <Unit filename="jni/Android.mk" />
42 <Unit filename="jni/globals.h" /> 46 <Unit filename="jni/globals.h" />
43 <Unit filename="jni/html.cpp" /> 47 <Unit filename="jni/html.cpp" />
  48 + <Unit filename="jni/lib3270jni.h" />
44 <Unit filename="jni/main.cpp" /> 49 <Unit filename="jni/main.cpp" />
45 <Unit filename="jni/misc.cpp" /> 50 <Unit filename="jni/misc.cpp" />
46 <Unit filename="src/br/com/bb/pw3270/lib3270.java" /> 51 <Unit filename="src/br/com/bb/pw3270/lib3270.java" />
android/src/br/com/bb/pw3270/PW3270Activity.java
@@ -16,12 +16,11 @@ public class PW3270Activity extends Activity implements View.OnClickListener @@ -16,12 +16,11 @@ public class PW3270Activity extends Activity implements View.OnClickListener
16 { 16 {
17 private class terminal extends lib3270 17 private class terminal extends lib3270
18 { 18 {
19 - private static final String TAG = "pw3270"; 19 +// private static final String TAG = "pw3270";
20 20
21 TextView msgbox; 21 TextView msgbox;
22 Activity Main; 22 Activity Main;
23 -  
24 - 23 +
25 terminal(TextView msgbox, Activity Main) 24 terminal(TextView msgbox, Activity Main)
26 { 25 {
27 this.msgbox = msgbox; 26 this.msgbox = msgbox;
@@ -36,7 +35,7 @@ public class PW3270Activity extends Activity implements View.OnClickListener @@ -36,7 +35,7 @@ public class PW3270Activity extends Activity implements View.OnClickListener
36 } catch(Exception e) { this.msgbox.setText("Estado inesperado"); } 35 } catch(Exception e) { this.msgbox.setText("Estado inesperado"); }
37 } 36 }
38 37
39 - public void popupMessage(int type, String title, String text, String info) 38 + protected void popupMessage(int type, String title, String text, String info)
40 { 39 {
41 AlertDialog d = new AlertDialog.Builder(Main).create(); 40 AlertDialog d = new AlertDialog.Builder(Main).create();
42 41
@@ -46,13 +45,15 @@ public class PW3270Activity extends Activity implements View.OnClickListener @@ -46,13 +45,15 @@ public class PW3270Activity extends Activity implements View.OnClickListener
46 d.setCancelable(true); 45 d.setCancelable(true);
47 d.show(); 46 d.show();
48 } 47 }
  48 +
  49 + /*
49 50
50 protected void redraw() 51 protected void redraw()
51 { 52 {
52 String text = getHTML(); 53 String text = getHTML();
53 Log.i(TAG,text); 54 Log.i(TAG,text);
54 } 55 }
55 - 56 + */
56 57
57 58
58 }; 59 };
@@ -88,7 +89,7 @@ public class PW3270Activity extends Activity implements View.OnClickListener @@ -88,7 +89,7 @@ public class PW3270Activity extends Activity implements View.OnClickListener
88 public void onClick(View v) 89 public void onClick(View v)
89 { 90 {
90 // Perform action on click 91 // Perform action on click
91 - host.setHost(uri.getText().toString()); 92 + // host.setHost(uri.getText().toString());
92 host.connect(); 93 host.connect();
93 } 94 }
94 95
android/src/br/com/bb/pw3270/lib3270.java
@@ -4,12 +4,26 @@ import java.lang.Thread; @@ -4,12 +4,26 @@ import java.lang.Thread;
4 import android.os.Handler; 4 import android.os.Handler;
5 import android.os.Message; 5 import android.os.Message;
6 import android.util.Log; 6 import android.util.Log;
  7 +import javax.net.SocketFactory;
  8 +import java.net.Socket;
  9 +import javax.net.ssl.SSLSocketFactory;
  10 +import java.io.DataInputStream;
  11 +import java.io.DataOutputStream;
7 12
8 public class lib3270 13 public class lib3270
9 { 14 {
10 private NetworkThread mainloop; 15 private NetworkThread mainloop;
11 private static final String TAG = "lib3270"; 16 private static final String TAG = "lib3270";
12 - private boolean changed; 17 +
  18 + private boolean changed;
  19 + private boolean connected = false;
  20 +
  21 + DataOutputStream outData = null;
  22 + DataInputStream inData = null;
  23 +
  24 + private String hostname = "3270.df.bb";
  25 + private int port = 8023;
  26 + private boolean ssl = false;
13 27
14 static 28 static
15 { 29 {
@@ -37,27 +51,127 @@ public class lib3270 @@ -37,27 +51,127 @@ public class lib3270
37 } 51 }
38 } 52 }
39 53
  54 + protected int send_data(byte[] data, int len)
  55 + {
  56 + Log.i(TAG,"Bytes a enviar: " + len);
  57 +
  58 + try
  59 + {
  60 + outData.write(data,0,len);
  61 + outData.flush();
  62 + } catch( Exception e )
  63 + {
  64 + String msg = e.getLocalizedMessage();
  65 +
  66 + if(msg == null)
  67 + msg = e.toString();
  68 +
  69 + if(msg == null)
  70 + msg = "Erro indefinido";
  71 +
  72 + Log.i(TAG,"Erro ao enviar dados: " + msg);
  73 +
  74 + postPopup(0,"Erro na comunicação","Não foi possível enviar dados",msg);
  75 +
  76 + }
  77 + return -1;
  78 + }
  79 +
  80 +
40 // Main Thread 81 // Main Thread
41 private class NetworkThread extends Thread 82 private class NetworkThread extends Thread
42 { 83 {
43 - Handler mHandler; 84 + Handler mHandler;
  85 + Socket sock = null;
44 86
45 NetworkThread(Handler h) 87 NetworkThread(Handler h)
46 { 88 {
47 mHandler = h; 89 mHandler = h;
48 } 90 }
49 91
  92 + private boolean connect()
  93 + {
  94 + // Connecta no host
  95 + SocketFactory socketFactory;
  96 + if(ssl)
  97 + {
  98 + // Host é SSL
  99 + socketFactory = SSLSocketFactory.getDefault();
  100 + }
  101 + else
  102 + {
  103 + socketFactory = SocketFactory.getDefault();
  104 + }
  105 +
  106 + try
  107 + {
  108 + sock = socketFactory.createSocket(hostname,port);
  109 + outData = new DataOutputStream(sock.getOutputStream());
  110 + inData = new DataInputStream(sock.getInputStream());
  111 +
  112 + } catch( Exception e )
  113 + {
  114 + String msg = e.getLocalizedMessage();
  115 +
  116 + if(msg == null)
  117 + msg = e.toString();
  118 +
  119 + if(msg == null)
  120 + msg = "Erro indefinido";
  121 +
  122 + Log.i(TAG,"Erro ao conectar: " + msg);
  123 +
  124 + postPopup(0,"Erro na conexão","Não foi possível conectar",msg);
  125 +
  126 + postMessage(0,0,0);
  127 +
  128 + return false;
  129 + }
  130 +
  131 + Log.i(TAG,"Conectado ao host");
  132 + return true;
  133 +
  134 + }
  135 +
50 public void run() 136 public void run()
51 { 137 {
52 - int rc; 138 +
53 info(TAG,"Network thread started"); 139 info(TAG,"Network thread started");
54 postMessage(0,1,0); 140 postMessage(0,1,0);
55 - rc = do_connect();  
56 - info(TAG,"do_connect exits with rc="+rc);  
57 - while(isConnected())  
58 - processEvents();  
59 - postMessage(0,0,0);  
60 - info(TAG,"Network thread stopped"); 141 + connected = connect();
  142 +
  143 + while(connected)
  144 + {
  145 + byte[] in = new byte[4096];
  146 + int sz = -1;
  147 +
  148 + try
  149 + {
  150 + sz = inData.read(in,0,4096);
  151 + } catch( Exception e ) { sz = -1; }
  152 +
  153 + if(sz < 0)
  154 + {
  155 + connected = false;
  156 + }
  157 + else if(sz > 0)
  158 + {
  159 + Log.d(TAG,sz + " bytes recebidos");
  160 + procRecvdata(in,sz);
  161 + }
  162 + }
  163 +
  164 + try
  165 + {
  166 + sock.close();
  167 + } catch( Exception e ) { }
  168 +
  169 + sock = null;
  170 + outData = null;
  171 + inData = null;
  172 + postMessage(0,0,0);
  173 +
  174 + info(TAG,"Network thread stopped");
61 } 175 }
62 176
63 public void postMessage(int what, int arg1, int arg2) 177 public void postMessage(int what, int arg1, int arg2)
@@ -141,7 +255,7 @@ public class lib3270 @@ -141,7 +255,7 @@ public class lib3270
141 { 255 {
142 } 256 }
143 257
144 - public void popupMessage(int type, String title, String text, String info) 258 + protected void popupMessage(int type, String title, String text, String info)
145 { 259 {
146 } 260 }
147 261
@@ -170,12 +284,12 @@ public class lib3270 @@ -170,12 +284,12 @@ public class lib3270
170 { 284 {
171 if(mainloop == null) 285 if(mainloop == null)
172 { 286 {
173 - info("jni","Starting comm thread"); 287 + info(TAG,"Starting comm thread");
174 mainloop = new NetworkThread(handler); 288 mainloop = new NetworkThread(handler);
175 mainloop.start(); 289 mainloop.start();
176 return 0; 290 return 0;
177 } 291 }
178 - error("jni","Comm thread already active during connect"); 292 + error(TAG,"Comm thread already active during connect");
179 return -1; 293 return -1;
180 } 294 }
181 295
@@ -190,6 +304,9 @@ public class lib3270 @@ -190,6 +304,9 @@ public class lib3270
190 public native String getVersion(); 304 public native String getVersion();
191 public native String getRevision(); 305 public native String getRevision();
192 306
  307 + // Network I/O
  308 + public native void procRecvdata( byte[] data, int len);
  309 +
193 // Connect/Disconnect status 310 // Connect/Disconnect status
194 public native void setHost(String host); 311 public native void setHost(String host);
195 public native String getHost(); 312 public native String getHost();
@@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
9 <Option compiler="gcc" /> 9 <Option compiler="gcc" />
10 <Build> 10 <Build>
11 <Target title="Debug"> 11 <Target title="Debug">
12 - <Option output=".bin\Debug\pw3270" prefix_auto="1" extension_auto="1" />  
13 - <Option object_output=".obj\Debug\" /> 12 + <Option output=".bin/Debug/pw3270" prefix_auto="1" extension_auto="1" />
  13 + <Option object_output=".obj/Debug/" />
14 <Option type="1" /> 14 <Option type="1" />
15 <Option compiler="gcc" /> 15 <Option compiler="gcc" />
16 <Option use_console_runner="0" /> 16 <Option use_console_runner="0" />
@@ -20,8 +20,8 @@ @@ -20,8 +20,8 @@
20 </Compiler> 20 </Compiler>
21 </Target> 21 </Target>
22 <Target title="Release"> 22 <Target title="Release">
23 - <Option output=".bin\Release\pw3270" prefix_auto="1" extension_auto="1" />  
24 - <Option object_output=".obj\Release\" /> 23 + <Option output=".bin/Release/pw3270" prefix_auto="1" extension_auto="1" />
  24 + <Option object_output=".obj/Release/" />
25 <Option type="0" /> 25 <Option type="0" />
26 <Option compiler="gcc" /> 26 <Option compiler="gcc" />
27 <Compiler> 27 <Compiler>
@@ -35,292 +35,291 @@ @@ -35,292 +35,291 @@
35 <Compiler> 35 <Compiler>
36 <Add option="-Wall" /> 36 <Add option="-Wall" />
37 <Add option="`pkg-config gtk+-3.0 lib3270 --cflags`" /> 37 <Add option="`pkg-config gtk+-3.0 lib3270 --cflags`" />
38 - <Add directory="src\include" /> 38 + <Add directory="src/include" />
39 </Compiler> 39 </Compiler>
40 <Linker> 40 <Linker>
41 <Add option="`pkg-config gtk+-3.0 lib3270 --libs`" /> 41 <Add option="`pkg-config gtk+-3.0 lib3270 --libs`" />
42 </Linker> 42 </Linker>
43 <Unit filename="Makefile.in" /> 43 <Unit filename="Makefile.in" />
44 - <Unit filename="android\Makefile" />  
45 - <Unit filename="android\jni\Android.mk" />  
46 - <Unit filename="android\jni\globals.h" />  
47 - <Unit filename="android\jni\main.cpp" />  
48 - <Unit filename="android\jni\misc.cpp" />  
49 - <Unit filename="android\src\br\com\bb\pw3270\PW3270Activity.java" />  
50 - <Unit filename="android\src\br\com\bb\pw3270\lib3270.java" /> 44 + <Unit filename="android/Makefile" />
  45 + <Unit filename="android/jni/Android.mk" />
  46 + <Unit filename="android/jni/globals.h" />
  47 + <Unit filename="android/jni/main.cpp" />
  48 + <Unit filename="android/jni/misc.cpp" />
  49 + <Unit filename="android/src/br/com/bb/pw3270/PW3270Activity.java" />
  50 + <Unit filename="android/src/br/com/bb/pw3270/lib3270.java" />
51 <Unit filename="autogen.sh" /> 51 <Unit filename="autogen.sh" />
52 <Unit filename="colors.conf" /> 52 <Unit filename="colors.conf" />
53 <Unit filename="configure.ac" /> 53 <Unit filename="configure.ac" />
54 <Unit filename="pw3270.spec.in" /> 54 <Unit filename="pw3270.spec.in" />
55 - <Unit filename="src\include\lib3270.h" />  
56 - <Unit filename="src\include\lib3270\action_table.h" />  
57 - <Unit filename="src\include\lib3270\actions.h" />  
58 - <Unit filename="src\include\lib3270\config.h.in" />  
59 - <Unit filename="src\include\lib3270\filetransfer.h" />  
60 - <Unit filename="src\include\lib3270\html.h" />  
61 - <Unit filename="src\include\lib3270\log.h" />  
62 - <Unit filename="src\include\lib3270\macros.h" />  
63 - <Unit filename="src\include\lib3270\popup.h" />  
64 - <Unit filename="src\include\lib3270\selection.h" />  
65 - <Unit filename="src\include\lib3270\session.h" />  
66 - <Unit filename="src\include\lib3270\trace.h" />  
67 - <Unit filename="src\include\lib3270\v3270.h" />  
68 - <Unit filename="src\include\pw3270.h" />  
69 - <Unit filename="src\include\rules.mak.in" />  
70 - <Unit filename="src\lib3270\3270ds.h" />  
71 - <Unit filename="src\lib3270\Makefile.in" />  
72 - <Unit filename="src\lib3270\X11keysym.h" />  
73 - <Unit filename="src\lib3270\actionsc.h" />  
74 - <Unit filename="src\lib3270\ansi.c"> 55 + <Unit filename="src/include/lib3270.h" />
  56 + <Unit filename="src/include/lib3270/action_table.h" />
  57 + <Unit filename="src/include/lib3270/actions.h" />
  58 + <Unit filename="src/include/lib3270/config.h.in" />
  59 + <Unit filename="src/include/lib3270/filetransfer.h" />
  60 + <Unit filename="src/include/lib3270/html.h" />
  61 + <Unit filename="src/include/lib3270/log.h" />
  62 + <Unit filename="src/include/lib3270/macros.h" />
  63 + <Unit filename="src/include/lib3270/popup.h" />
  64 + <Unit filename="src/include/lib3270/selection.h" />
  65 + <Unit filename="src/include/lib3270/session.h" />
  66 + <Unit filename="src/include/lib3270/trace.h" />
  67 + <Unit filename="src/include/lib3270/v3270.h" />
  68 + <Unit filename="src/include/pw3270.h" />
  69 + <Unit filename="src/include/rules.mak.in" />
  70 + <Unit filename="src/lib3270/Makefile.in" />
  71 + <Unit filename="src/lib3270/X11keysym.h" />
  72 + <Unit filename="src/lib3270/actionsc.h" />
  73 + <Unit filename="src/lib3270/ansi.c">
75 <Option compilerVar="CC" /> 74 <Option compilerVar="CC" />
76 </Unit> 75 </Unit>
77 - <Unit filename="src\lib3270\ansic.h" />  
78 - <Unit filename="src\lib3270\api.h" />  
79 - <Unit filename="src\lib3270\arpa_telnet.h" />  
80 - <Unit filename="src\lib3270\bounds.c"> 76 + <Unit filename="src/lib3270/ansic.h" />
  77 + <Unit filename="src/lib3270/api.h" />
  78 + <Unit filename="src/lib3270/arpa_telnet.h" />
  79 + <Unit filename="src/lib3270/bounds.c">
81 <Option compilerVar="CC" /> 80 <Option compilerVar="CC" />
82 </Unit> 81 </Unit>
83 - <Unit filename="src\lib3270\cg.h" />  
84 - <Unit filename="src\lib3270\charset.c"> 82 + <Unit filename="src/lib3270/cg.h" />
  83 + <Unit filename="src/lib3270/charset.c">
85 <Option compilerVar="CC" /> 84 <Option compilerVar="CC" />
86 </Unit> 85 </Unit>
87 - <Unit filename="src\lib3270\charsetc.h" />  
88 - <Unit filename="src\lib3270\childc.h" />  
89 - <Unit filename="src\lib3270\ctlr.c"> 86 + <Unit filename="src/lib3270/charsetc.h" />
  87 + <Unit filename="src/lib3270/childc.h" />
  88 + <Unit filename="src/lib3270/ctlr.c">
90 <Option compilerVar="CC" /> 89 <Option compilerVar="CC" />
91 </Unit> 90 </Unit>
92 - <Unit filename="src\lib3270\ctlrc.h" />  
93 - <Unit filename="src\lib3270\ft.c"> 91 + <Unit filename="src/lib3270/ctlrc.h" />
  92 + <Unit filename="src/lib3270/ft.c">
94 <Option compilerVar="CC" /> 93 <Option compilerVar="CC" />
95 </Unit> 94 </Unit>
96 - <Unit filename="src\lib3270\ft_cut.c"> 95 + <Unit filename="src/lib3270/ft_cut.c">
97 <Option compilerVar="CC" /> 96 <Option compilerVar="CC" />
98 </Unit> 97 </Unit>
99 - <Unit filename="src\lib3270\ft_cut_ds.h" />  
100 - <Unit filename="src\lib3270\ft_cutc.h" />  
101 - <Unit filename="src\lib3270\ft_dft.c"> 98 + <Unit filename="src/lib3270/ft_cut_ds.h" />
  99 + <Unit filename="src/lib3270/ft_cutc.h" />
  100 + <Unit filename="src/lib3270/ft_dft.c">
102 <Option compilerVar="CC" /> 101 <Option compilerVar="CC" />
103 </Unit> 102 </Unit>
104 - <Unit filename="src\lib3270\ft_dft_ds.h" />  
105 - <Unit filename="src\lib3270\ft_dftc.h" />  
106 - <Unit filename="src\lib3270\ftc.h" />  
107 - <Unit filename="src\lib3270\globals.h" />  
108 - <Unit filename="src\lib3270\glue.c"> 103 + <Unit filename="src/lib3270/ft_dft_ds.h" />
  104 + <Unit filename="src/lib3270/ft_dftc.h" />
  105 + <Unit filename="src/lib3270/ftc.h" />
  106 + <Unit filename="src/lib3270/globals.h" />
  107 + <Unit filename="src/lib3270/glue.c">
109 <Option compilerVar="CC" /> 108 <Option compilerVar="CC" />
110 </Unit> 109 </Unit>
111 - <Unit filename="src\lib3270\gluec.h" />  
112 - <Unit filename="src\lib3270\host.c"> 110 + <Unit filename="src/lib3270/gluec.h" />
  111 + <Unit filename="src/lib3270/host.c">
113 <Option compilerVar="CC" /> 112 <Option compilerVar="CC" />
114 </Unit> 113 </Unit>
115 - <Unit filename="src\lib3270\hostc.h" />  
116 - <Unit filename="src\lib3270\html.c"> 114 + <Unit filename="src/lib3270/hostc.h" />
  115 + <Unit filename="src/lib3270/html.c">
117 <Option compilerVar="CC" /> 116 <Option compilerVar="CC" />
118 </Unit> 117 </Unit>
119 - <Unit filename="src\lib3270\icmdc.h" />  
120 - <Unit filename="src\lib3270\iocalls.c"> 118 + <Unit filename="src/lib3270/icmdc.h" />
  119 + <Unit filename="src/lib3270/iocalls.c">
121 <Option compilerVar="CC" /> 120 <Option compilerVar="CC" />
122 </Unit> 121 </Unit>
123 - <Unit filename="src\lib3270\keypadc.h" />  
124 - <Unit filename="src\lib3270\kybd.c"> 122 + <Unit filename="src/lib3270/keypadc.h" />
  123 + <Unit filename="src/lib3270/kybd.c">
125 <Option compilerVar="CC" /> 124 <Option compilerVar="CC" />
126 </Unit> 125 </Unit>
127 - <Unit filename="src\lib3270\kybdc.h" />  
128 - <Unit filename="src\lib3270\localdefs.h" />  
129 - <Unit filename="src\lib3270\log.c"> 126 + <Unit filename="src/lib3270/kybdc.h" />
  127 + <Unit filename="src/lib3270/localdefs.h" />
  128 + <Unit filename="src/lib3270/log.c">
130 <Option compilerVar="CC" /> 129 <Option compilerVar="CC" />
131 </Unit> 130 </Unit>
132 - <Unit filename="src\lib3270\macros.c"> 131 + <Unit filename="src/lib3270/macros.c">
133 <Option compilerVar="CC" /> 132 <Option compilerVar="CC" />
134 </Unit> 133 </Unit>
135 - <Unit filename="src\lib3270\mkfb.c"> 134 + <Unit filename="src/lib3270/mkfb.c">
136 <Option compilerVar="CC" /> 135 <Option compilerVar="CC" />
137 </Unit> 136 </Unit>
138 - <Unit filename="src\lib3270\objects.h" />  
139 - <Unit filename="src\lib3270\paste.c"> 137 + <Unit filename="src/lib3270/objects.h" />
  138 + <Unit filename="src/lib3270/paste.c">
140 <Option compilerVar="CC" /> 139 <Option compilerVar="CC" />
141 </Unit> 140 </Unit>
142 - <Unit filename="src\lib3270\popupsc.h" />  
143 - <Unit filename="src\lib3270\printc.h" />  
144 - <Unit filename="src\lib3270\printerc.h" />  
145 - <Unit filename="src\lib3270\proxy.c"> 141 + <Unit filename="src/lib3270/popupsc.h" />
  142 + <Unit filename="src/lib3270/printc.h" />
  143 + <Unit filename="src/lib3270/printerc.h" />
  144 + <Unit filename="src/lib3270/proxy.c">
146 <Option compilerVar="CC" /> 145 <Option compilerVar="CC" />
147 </Unit> 146 </Unit>
148 - <Unit filename="src\lib3270\proxyc.h" />  
149 - <Unit filename="src\lib3270\resolver.c"> 147 + <Unit filename="src/lib3270/proxyc.h" />
  148 + <Unit filename="src/lib3270/resolver.c">
150 <Option compilerVar="CC" /> 149 <Option compilerVar="CC" />
151 </Unit> 150 </Unit>
152 - <Unit filename="src\lib3270\resolverc.h" />  
153 - <Unit filename="src\lib3270\resources.c"> 151 + <Unit filename="src/lib3270/resolverc.h" />
  152 + <Unit filename="src/lib3270/resources.c">
154 <Option compilerVar="CC" /> 153 <Option compilerVar="CC" />
155 </Unit> 154 </Unit>
156 - <Unit filename="src\lib3270\resources.h" />  
157 - <Unit filename="src\lib3270\rpq.c"> 155 + <Unit filename="src/lib3270/resources.h" />
  156 + <Unit filename="src/lib3270/rpq.c">
158 <Option compilerVar="CC" /> 157 <Option compilerVar="CC" />
159 </Unit> 158 </Unit>
160 - <Unit filename="src\lib3270\savec.h" />  
161 - <Unit filename="src\lib3270\screen.c"> 159 + <Unit filename="src/lib3270/savec.h" />
  160 + <Unit filename="src/lib3270/screen.c">
162 <Option compilerVar="CC" /> 161 <Option compilerVar="CC" />
163 </Unit> 162 </Unit>
164 - <Unit filename="src\lib3270\screen.h" />  
165 - <Unit filename="src\lib3270\screenc.h" />  
166 - <Unit filename="src\lib3270\scrollc.h" />  
167 - <Unit filename="src\lib3270\see.c"> 163 + <Unit filename="src/lib3270/screen.h" />
  164 + <Unit filename="src/lib3270/screenc.h" />
  165 + <Unit filename="src/lib3270/scrollc.h" />
  166 + <Unit filename="src/lib3270/see.c">
168 <Option compilerVar="CC" /> 167 <Option compilerVar="CC" />
169 </Unit> 168 </Unit>
170 - <Unit filename="src\lib3270\seec.h" />  
171 - <Unit filename="src\lib3270\selection.c"> 169 + <Unit filename="src/lib3270/seec.h" />
  170 + <Unit filename="src/lib3270/selection.c">
172 <Option compilerVar="CC" /> 171 <Option compilerVar="CC" />
173 </Unit> 172 </Unit>
174 - <Unit filename="src\lib3270\session.c"> 173 + <Unit filename="src/lib3270/session.c">
175 <Option compilerVar="CC" /> 174 <Option compilerVar="CC" />
176 </Unit> 175 </Unit>
177 - <Unit filename="src\lib3270\sf.c"> 176 + <Unit filename="src/lib3270/sf.c">
178 <Option compilerVar="CC" /> 177 <Option compilerVar="CC" />
179 </Unit> 178 </Unit>
180 - <Unit filename="src\lib3270\sf.h" />  
181 - <Unit filename="src\lib3270\shlobj_missing.h" />  
182 - <Unit filename="src\lib3270\sources.mak" />  
183 - <Unit filename="src\lib3270\state.c"> 179 + <Unit filename="src/lib3270/sf.h" />
  180 + <Unit filename="src/lib3270/shlobj_missing.h" />
  181 + <Unit filename="src/lib3270/sources.mak" />
  182 + <Unit filename="src/lib3270/state.c">
184 <Option compilerVar="CC" /> 183 <Option compilerVar="CC" />
185 </Unit> 184 </Unit>
186 - <Unit filename="src\lib3270\statusc.h" />  
187 - <Unit filename="src\lib3270\tables.c"> 185 + <Unit filename="src/lib3270/statusc.h" />
  186 + <Unit filename="src/lib3270/tables.c">
188 <Option compilerVar="CC" /> 187 <Option compilerVar="CC" />
189 </Unit> 188 </Unit>
190 - <Unit filename="src\lib3270\tablesc.h" />  
191 - <Unit filename="src\lib3270\telnet.c"> 189 + <Unit filename="src/lib3270/tablesc.h" />
  190 + <Unit filename="src/lib3270/telnet.c">
192 <Option compilerVar="CC" /> 191 <Option compilerVar="CC" />
193 </Unit> 192 </Unit>
194 - <Unit filename="src\lib3270\telnetc.h" />  
195 - <Unit filename="src\lib3270\testprogram.c"> 193 + <Unit filename="src/lib3270/telnetc.h" />
  194 + <Unit filename="src/lib3270/testprogram.c">
196 <Option compilerVar="CC" /> 195 <Option compilerVar="CC" />
197 </Unit> 196 </Unit>
198 - <Unit filename="src\lib3270\tn3270e.h" />  
199 - <Unit filename="src\lib3270\toggle.h" />  
200 - <Unit filename="src\lib3270\toggles.c"> 197 + <Unit filename="src/lib3270/tn3270e.h" />
  198 + <Unit filename="src/lib3270/toggle.h" />
  199 + <Unit filename="src/lib3270/toggles.c">
201 <Option compilerVar="CC" /> 200 <Option compilerVar="CC" />
202 </Unit> 201 </Unit>
203 - <Unit filename="src\lib3270\togglesc.h" />  
204 - <Unit filename="src\lib3270\trace_ds.c"> 202 + <Unit filename="src/lib3270/togglesc.h" />
  203 + <Unit filename="src/lib3270/trace_ds.c">
205 <Option compilerVar="CC" /> 204 <Option compilerVar="CC" />
206 </Unit> 205 </Unit>
207 - <Unit filename="src\lib3270\trace_dsc.h" />  
208 - <Unit filename="src\lib3270\utf8.c"> 206 + <Unit filename="src/lib3270/trace_dsc.h" />
  207 + <Unit filename="src/lib3270/utf8.c">
209 <Option compilerVar="CC" /> 208 <Option compilerVar="CC" />
210 </Unit> 209 </Unit>
211 - <Unit filename="src\lib3270\utf8c.h" />  
212 - <Unit filename="src\lib3270\util.c"> 210 + <Unit filename="src/lib3270/utf8c.h" />
  211 + <Unit filename="src/lib3270/util.c">
213 <Option compilerVar="CC" /> 212 <Option compilerVar="CC" />
214 </Unit> 213 </Unit>
215 - <Unit filename="src\lib3270\utilc.h" />  
216 - <Unit filename="src\lib3270\w3miscc.h" />  
217 - <Unit filename="src\lib3270\widec.h" />  
218 - <Unit filename="src\lib3270\winversc.h" />  
219 - <Unit filename="src\lib3270\xioc.h" />  
220 - <Unit filename="src\lib3270\xl.h" />  
221 - <Unit filename="src\pw3270\Makefile.in" />  
222 - <Unit filename="src\pw3270\actions.c"> 214 + <Unit filename="src/lib3270/utilc.h" />
  215 + <Unit filename="src/lib3270/w3miscc.h" />
  216 + <Unit filename="src/lib3270/widec.h" />
  217 + <Unit filename="src/lib3270/winversc.h" />
  218 + <Unit filename="src/lib3270/xioc.h" />
  219 + <Unit filename="src/lib3270/xl.h" />
  220 + <Unit filename="src/pw3270/Makefile.in" />
  221 + <Unit filename="src/pw3270/actions.c">
223 <Option compilerVar="CC" /> 222 <Option compilerVar="CC" />
224 </Unit> 223 </Unit>
225 - <Unit filename="src\pw3270\colors.c"> 224 + <Unit filename="src/pw3270/colors.c">
226 <Option compilerVar="CC" /> 225 <Option compilerVar="CC" />
227 </Unit> 226 </Unit>
228 - <Unit filename="src\pw3270\common\common.h.in" />  
229 - <Unit filename="src\pw3270\common\config.c"> 227 + <Unit filename="src/pw3270/common/common.h.in" />
  228 + <Unit filename="src/pw3270/common/config.c">
230 <Option compilerVar="CC" /> 229 <Option compilerVar="CC" />
231 </Unit> 230 </Unit>
232 - <Unit filename="src\pw3270\common\sources.mak" />  
233 - <Unit filename="src\pw3270\dialog.c"> 231 + <Unit filename="src/pw3270/common/sources.mak" />
  232 + <Unit filename="src/pw3270/dialog.c">
234 <Option compilerVar="CC" /> 233 <Option compilerVar="CC" />
235 </Unit> 234 </Unit>
236 - <Unit filename="src\pw3270\filetransfer.c"> 235 + <Unit filename="src/pw3270/filetransfer.c">
237 <Option compilerVar="CC" /> 236 <Option compilerVar="CC" />
238 </Unit> 237 </Unit>
239 - <Unit filename="src\pw3270\filetransfer.h" />  
240 - <Unit filename="src\pw3270\fonts.c"> 238 + <Unit filename="src/pw3270/filetransfer.h" />
  239 + <Unit filename="src/pw3270/fonts.c">
241 <Option compilerVar="CC" /> 240 <Option compilerVar="CC" />
242 </Unit> 241 </Unit>
243 - <Unit filename="src\pw3270\globals.h" />  
244 - <Unit filename="src\pw3270\main.c"> 242 + <Unit filename="src/pw3270/globals.h" />
  243 + <Unit filename="src/pw3270/main.c">
245 <Option compilerVar="CC" /> 244 <Option compilerVar="CC" />
246 </Unit> 245 </Unit>
247 - <Unit filename="src\pw3270\print.c"> 246 + <Unit filename="src/pw3270/print.c">
248 <Option compilerVar="CC" /> 247 <Option compilerVar="CC" />
249 </Unit> 248 </Unit>
250 - <Unit filename="src\pw3270\uiparser\Makefile.in" />  
251 - <Unit filename="src\pw3270\uiparser\accelerator.c"> 249 + <Unit filename="src/pw3270/uiparser/Makefile.in" />
  250 + <Unit filename="src/pw3270/uiparser/accelerator.c">
252 <Option compilerVar="CC" /> 251 <Option compilerVar="CC" />
253 </Unit> 252 </Unit>
254 - <Unit filename="src\pw3270\uiparser\action.c"> 253 + <Unit filename="src/pw3270/uiparser/action.c">
255 <Option compilerVar="CC" /> 254 <Option compilerVar="CC" />
256 </Unit> 255 </Unit>
257 - <Unit filename="src\pw3270\uiparser\menu.c"> 256 + <Unit filename="src/pw3270/uiparser/menu.c">
258 <Option compilerVar="CC" /> 257 <Option compilerVar="CC" />
259 </Unit> 258 </Unit>
260 - <Unit filename="src\pw3270\uiparser\menubar.c"> 259 + <Unit filename="src/pw3270/uiparser/menubar.c">
261 <Option compilerVar="CC" /> 260 <Option compilerVar="CC" />
262 </Unit> 261 </Unit>
263 - <Unit filename="src\pw3270\uiparser\menuitem.c"> 262 + <Unit filename="src/pw3270/uiparser/menuitem.c">
264 <Option compilerVar="CC" /> 263 <Option compilerVar="CC" />
265 </Unit> 264 </Unit>
266 - <Unit filename="src\pw3270\uiparser\parsefile.c"> 265 + <Unit filename="src/pw3270/uiparser/parsefile.c">
267 <Option compilerVar="CC" /> 266 <Option compilerVar="CC" />
268 </Unit> 267 </Unit>
269 - <Unit filename="src\pw3270\uiparser\parser.c"> 268 + <Unit filename="src/pw3270/uiparser/parser.c">
270 <Option compilerVar="CC" /> 269 <Option compilerVar="CC" />
271 </Unit> 270 </Unit>
272 - <Unit filename="src\pw3270\uiparser\parser.h" />  
273 - <Unit filename="src\pw3270\uiparser\popup.c"> 271 + <Unit filename="src/pw3270/uiparser/parser.h" />
  272 + <Unit filename="src/pw3270/uiparser/popup.c">
274 <Option compilerVar="CC" /> 273 <Option compilerVar="CC" />
275 </Unit> 274 </Unit>
276 - <Unit filename="src\pw3270\uiparser\private.h" />  
277 - <Unit filename="src\pw3270\uiparser\script.c"> 275 + <Unit filename="src/pw3270/uiparser/private.h" />
  276 + <Unit filename="src/pw3270/uiparser/script.c">
278 <Option compilerVar="CC" /> 277 <Option compilerVar="CC" />
279 </Unit> 278 </Unit>
280 - <Unit filename="src\pw3270\uiparser\separator.c"> 279 + <Unit filename="src/pw3270/uiparser/separator.c">
281 <Option compilerVar="CC" /> 280 <Option compilerVar="CC" />
282 </Unit> 281 </Unit>
283 - <Unit filename="src\pw3270\uiparser\sources.mak" />  
284 - <Unit filename="src\pw3270\uiparser\toolbar.c"> 282 + <Unit filename="src/pw3270/uiparser/sources.mak" />
  283 + <Unit filename="src/pw3270/uiparser/toolbar.c">
285 <Option compilerVar="CC" /> 284 <Option compilerVar="CC" />
286 </Unit> 285 </Unit>
287 - <Unit filename="src\pw3270\uiparser\toolitem.c"> 286 + <Unit filename="src/pw3270/uiparser/toolitem.c">
288 <Option compilerVar="CC" /> 287 <Option compilerVar="CC" />
289 </Unit> 288 </Unit>
290 - <Unit filename="src\pw3270\v3270\accessible.c"> 289 + <Unit filename="src/pw3270/v3270/accessible.c">
291 <Option compilerVar="CC" /> 290 <Option compilerVar="CC" />
292 </Unit> 291 </Unit>
293 - <Unit filename="src\pw3270\v3270\accessible.h" />  
294 - <Unit filename="src\pw3270\v3270\draw.c"> 292 + <Unit filename="src/pw3270/v3270/accessible.h" />
  293 + <Unit filename="src/pw3270/v3270/draw.c">
295 <Option compilerVar="CC" /> 294 <Option compilerVar="CC" />
296 </Unit> 295 </Unit>
297 - <Unit filename="src\pw3270\v3270\genmarshal" />  
298 - <Unit filename="src\pw3270\v3270\iocallback.c"> 296 + <Unit filename="src/pw3270/v3270/genmarshal" />
  297 + <Unit filename="src/pw3270/v3270/iocallback.c">
299 <Option compilerVar="CC" /> 298 <Option compilerVar="CC" />
300 </Unit> 299 </Unit>
301 - <Unit filename="src\pw3270\v3270\keyboard.c"> 300 + <Unit filename="src/pw3270/v3270/keyboard.c">
302 <Option compilerVar="CC" /> 301 <Option compilerVar="CC" />
303 </Unit> 302 </Unit>
304 - <Unit filename="src\pw3270\v3270\mouse.c"> 303 + <Unit filename="src/pw3270/v3270/mouse.c">
305 <Option compilerVar="CC" /> 304 <Option compilerVar="CC" />
306 </Unit> 305 </Unit>
307 - <Unit filename="src\pw3270\v3270\oia.c"> 306 + <Unit filename="src/pw3270/v3270/oia.c">
308 <Option compilerVar="CC" /> 307 <Option compilerVar="CC" />
309 </Unit> 308 </Unit>
310 - <Unit filename="src\pw3270\v3270\private.h" />  
311 - <Unit filename="src\pw3270\v3270\selection.c"> 309 + <Unit filename="src/pw3270/v3270/private.h" />
  310 + <Unit filename="src/pw3270/v3270/selection.c">
312 <Option compilerVar="CC" /> 311 <Option compilerVar="CC" />
313 </Unit> 312 </Unit>
314 - <Unit filename="src\pw3270\v3270\sources.mak" />  
315 - <Unit filename="src\pw3270\v3270\widget.c"> 313 + <Unit filename="src/pw3270/v3270/sources.mak" />
  314 + <Unit filename="src/pw3270/v3270/widget.c">
316 <Option compilerVar="CC" /> 315 <Option compilerVar="CC" />
317 </Unit> 316 </Unit>
318 - <Unit filename="src\pw3270\window.c"> 317 + <Unit filename="src/pw3270/window.c">
319 <Option compilerVar="CC" /> 318 <Option compilerVar="CC" />
320 </Unit> 319 </Unit>
321 - <Unit filename="src\tools\Makefile.in" />  
322 - <Unit filename="ui\00default.xml" />  
323 - <Unit filename="ui\99debug.xml" /> 320 + <Unit filename="src/tools/Makefile.in" />
  321 + <Unit filename="ui/00default.xml" />
  322 + <Unit filename="ui/99debug.xml" />
324 <Unit filename="updateChangeLog.sh" /> 323 <Unit filename="updateChangeLog.sh" />
325 <Extensions> 324 <Extensions>
326 <code_completion /> 325 <code_completion />