Commit 981dd162807dd8490849dcc2ae67df9ea9e5cf37

Authored by Perry Werneck
1 parent 56b8c549
Exists in master and in 1 other branch develop

Refactoring test method.

@@ -36,12 +36,25 @@ PLUGIN_SOURCES= \ @@ -36,12 +36,25 @@ PLUGIN_SOURCES= \
36 $(wildcard src/$(PLUGIN_NAME)/@OSNAME@/*.rc) 36 $(wildcard src/$(PLUGIN_NAME)/@OSNAME@/*.rc)
37 37
38 PLUGIN_TEST_SOURCES= \ 38 PLUGIN_TEST_SOURCES= \
39 - src/testprograms/plugin.c 39 + src/testprograms/$(PLUGIN_NAME).c
  40 +
  41 +#---[ Library configuration ]------------------------------------------------------------
  42 +
  43 +LIBRARY_NAME=hllapi
  44 +
  45 +LIBRARY_SOURCES= \
  46 + $(wildcard src/$(LIBRARY_NAME)/*.c) \
  47 + $(wildcard src/$(LIBRARY_NAME)/@OSNAME@/*.c) \
  48 + $(wildcard src/$(LIBRARY_NAME)/@OSNAME@/*.rc)
  49 +
  50 +LIBRARY_TEST_SOURCES= \
  51 + src/testprograms/$(LIBRARY_NAME).c
40 52
41 #---[ Tools ]---------------------------------------------------------------------------- 53 #---[ Tools ]----------------------------------------------------------------------------
42 54
43 CC=@CC@ 55 CC=@CC@
44 LD=@CC@ 56 LD=@CC@
  57 +CXX=@CXX@
45 LN_S=@LN_S@ 58 LN_S=@LN_S@
46 MKDIR=@MKDIR_P@ 59 MKDIR=@MKDIR_P@
47 INSTALL=@INSTALL@ 60 INSTALL=@INSTALL@
@@ -190,7 +203,8 @@ all: \ @@ -190,7 +203,8 @@ all: \
190 $(POTDIR)/$(PLUGIN_NAME).pot 203 $(POTDIR)/$(PLUGIN_NAME).pot
191 204
192 Release: \ 205 Release: \
193 - $(BINRLS)/$(PLUGIN_NAME)@DLLEXT@ 206 + $(BINRLS)/$(PLUGIN_NAME)@DLLEXT@ \
  207 + $(BINRLS)/lib$(LIBRARY_NAME)@DLLEXT@
194 208
195 $(BINRLS)/$(PLUGIN_NAME)@DLLEXT@: \ 209 $(BINRLS)/$(PLUGIN_NAME)@DLLEXT@: \
196 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o) 210 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o)
@@ -240,36 +254,41 @@ run-plugin: \ @@ -240,36 +254,41 @@ run-plugin: \
240 254
241 $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@ 255 $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@
242 256
243 -#---[ Debug Targets ]-------------------------------------------------------------------- 257 +run-library: \
  258 + $(BINDBG)/$(LIBRARY_NAME)@DLLEXT@ \
  259 + $(BINDBG)/$(LIBRARY_NAME)@EXEEXT@
244 260
245 -Debug: \  
246 - $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@ \  
247 - $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@ 261 + $(BINDBG)/$(LIBRARY_NAME)@EXEEXT@
248 262
249 -$(BINDBG)/lib$(PLUGIN_NAME).a: \  
250 - $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJDBG)/$(SRC).o) 263 +#---[ Debug Targets ]--------------------------------------------------------------------
251 264
252 - @$(MKDIR) $(@D)  
253 - @echo $< ... 265 +Debug: \
  266 + Debug-plugin \
  267 + Debug-library
254 268
255 - @$(AR) rcs $@ $^ 269 +Debug-plugin: \
  270 + $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@
256 271
  272 +Debug-library: \
  273 + $(BINDBG)/$(LIBRARY_NAME)@EXEEXT@
257 274
258 $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@: \ 275 $(BINDBG)/$(PLUGIN_NAME)@EXEEXT@: \
259 - $(foreach SRC, $(basename $(PLUGIN_TEST_SOURCES)), $(OBJDBG)/$(SRC).o) 276 + $(foreach SRC, $(basename $(PLUGIN_TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
  277 + $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@
260 278
261 @$(MKDIR) $(@D) 279 @$(MKDIR) $(@D)
262 @echo $< ... 280 @echo $< ...
263 @$(LD) \ 281 @$(LD) \
264 -o $@ \ 282 -o $@ \
265 - $^ \ 283 + $(foreach SRC, $(basename $(PLUGIN_TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
266 -L$(BINDBG) \ 284 -L$(BINDBG) \
267 -Wl,-rpath,$(BINDBG) \ 285 -Wl,-rpath,$(BINDBG) \
268 $(LDFLAGS) \ 286 $(LDFLAGS) \
269 $(LIBS) \ 287 $(LIBS) \
270 $(V3270_LIBS) \ 288 $(V3270_LIBS) \
271 $(GTK_LIBS) \ 289 $(GTK_LIBS) \
272 - $(GLIB_LIBS) 290 + $(GLIB_LIBS) \
  291 + $(DBUS_LIBS)
273 292
274 $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@: \ 293 $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@: \
275 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) 294 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o)
@@ -279,14 +298,48 @@ $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@: \ @@ -279,14 +298,48 @@ $(BINDBG)/$(PLUGIN_NAME)@DLLEXT@: \
279 @$(LD) \ 298 @$(LD) \
280 -shared -Wl,-soname,$(@F) \ 299 -shared -Wl,-soname,$(@F) \
281 -o $@ \ 300 -o $@ \
282 - $(LDFLAGS) \  
283 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) \ 301 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) \
  302 + $(LDFLAGS) \
284 -L$(BINDBG) \ 303 -L$(BINDBG) \
  304 + $(LIBS) \
285 $(V3270_LIBS) \ 305 $(V3270_LIBS) \
  306 + $(GTK_LIBS) \
  307 + $(GLIB_LIBS) \
  308 + $(DBUS_LIBS)
  309 +
  310 +$(BINDBG)/$(LIBRARY_NAME)@EXEEXT@: \
  311 + $(foreach SRC, $(basename $(LIBRARY_TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
  312 + $(BINDBG)/lib$(LIBRARY_NAME)@DLLEXT@
  313 +
  314 + @$(MKDIR) $(@D)
  315 + @echo $< ...
  316 + @$(CXX) \
  317 + -o $@ \
  318 + $(foreach SRC, $(basename $(LIBRARY_TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
  319 + -Wl,-rpath,$(BINDBG) \
  320 + $(LDFLAGS) \
  321 + -L$(BINDBG) \
  322 + -l$(LIBRARY_NAME) \
286 $(LIBS) \ 323 $(LIBS) \
  324 + $(V3270_LIBS) \
287 $(GTK_LIBS) \ 325 $(GTK_LIBS) \
  326 + $(GLIB_LIBS) \
288 $(DBUS_LIBS) 327 $(DBUS_LIBS)
289 328
  329 +$(BINDBG)/lib$(LIBRARY_NAME)@DLLEXT@: \
  330 + $(foreach SRC, $(basename $(LIBRARY_SOURCES)), $(OBJDBG)/$(SRC).o)
  331 +
  332 + @$(MKDIR) $(@D)
  333 + @echo $< ...
  334 + @$(CXX) \
  335 + -shared -Wl,-soname,$(@F) \
  336 + -o $@ \
  337 + $(LDFLAGS) \
  338 + $(foreach SRC, $(basename $(LIBRARY_SOURCES)), $(OBJDBG)/$(SRC).o) \
  339 + -lpw3270cpp \
  340 + -L$(BINDBG) \
  341 + $(LIBS) \
  342 + $(DBUS_LIBS)
290 343
291 #---[ Clean Targets ]-------------------------------------------------------------------- 344 #---[ Clean Targets ]--------------------------------------------------------------------
292 345
src/hllapi/testprogram.c
@@ -1,169 +0,0 @@ @@ -1,169 +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 testprogram.c e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 - #include <stdio.h>  
31 - #include <string.h>  
32 - #include <time.h>  
33 - #include <pw3270/hllapi.h>  
34 -  
35 - #if defined(DEBUG) && defined(_WIN32)  
36 - #undef trace  
37 - #define trace( fmt, ... ) { FILE *out = fopen("c:\\Users\\Perry\\hllapi.log","a"); if(out) { fprintf(out, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fclose(out); } }  
38 - #endif // DEBUG  
39 -  
40 - #define MAX_DATA_SIZE 8000 //< Maximum data size for this application.  
41 -  
42 - static CHAR hllapi_data[MAX_DATA_SIZE];  
43 -  
44 -/*---[ Implement ]--------------------------------------------------------------------------------*/  
45 -  
46 - static void connect_ps(const char *session)  
47 - {  
48 - WORD len;  
49 - WORD fn = HLLAPI_CMD_CONNECTPS;  
50 - WORD rc = 0;  
51 -  
52 - strncpy(hllapi_data,session,MAX_DATA_SIZE);  
53 -  
54 - len = strlen(session);  
55 - hllapi(&fn,hllapi_data,&len,&rc);  
56 -  
57 - /*  
58 - if(rc)  
59 - {  
60 - trace("HLLAPI_CMD_CONNECTPS(%s) exits with rc=%d", session, (int) rc);  
61 - }  
62 - */  
63 -  
64 - }  
65 -  
66 - int main(int numpar, char *param[])  
67 - {  
68 - const char *session = "pw3270:A";  
69 -  
70 - connect_ps(session);  
71 -  
72 - /*  
73 -  
74 - printf("init(%s)=%d\n",session,(int) hllapi_init((LPSTR) session));  
75 - printf("revision=%d\n",(int) hllapi_get_revision());  
76 - printf("connect=%d\n",(int) hllapi_connect((char *) "fandezhi.efglobe.com:23",1));  
77 - printf("wait_for_ready=%d\n",(int) hllapi_wait_for_ready(10));  
78 - printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No");  
79 -  
80 -// printf("disconnect=%d\n",(int) hllapi_disconnect());  
81 -  
82 -  
83 - printf("deinit=%d\n",(int) hllapi_deinit());  
84 -  
85 - DWORD revision;  
86 - int rc;  
87 -  
88 - rc = hllapi_init("");  
89 - if(rc)  
90 - {  
91 - printf("Init exits with rc=%d\n",rc);  
92 - return rc;  
93 - }  
94 -  
95 - if(!hllapi_get_revision(&revision))  
96 - printf("Library revision is %d\n",(int) revision);  
97 -  
98 -  
99 - printf("Deinit exits with rc=%d\n",rc);  
100 - rc = hllapi_deinit();  
101 -*/  
102 - return 0;  
103 - }  
104 -  
105 -/*  
106 - int main(int numpar, char *param[])  
107 - {  
108 - char buffer[BUFFER_LENGTH];  
109 - unsigned short rc;  
110 - unsigned short len;  
111 - unsigned long fn;  
112 -  
113 - static const struct _cmd  
114 - {  
115 - const char * name;  
116 - unsigned short fn;  
117 - const char * arg;  
118 - } cmd[] =  
119 - {  
120 - { "GetRevision", HLLAPI_CMD_GETREVISION, " " },  
121 - { "ConnectPS", HLLAPI_CMD_CONNECTPS, "pw3270A" },  
122 - { "InputString", HLLAPI_CMD_INPUTSTRING, "test" },  
123 -  
124 - };  
125 -  
126 - int f;  
127 -  
128 -  
129 - for(f=0;f< (sizeof(cmd)/sizeof(struct _cmd)); f++)  
130 - {  
131 - len = strlen(cmd[f].arg);  
132 - memcpy(buffer,cmd[f].arg,len);  
133 - hllapi((LPWORD) &cmd[f].fn,buffer,&len,&rc);  
134 - printf("%s exits with rc=%d\n[%s]\n",cmd[f].name,rc,buffer);  
135 - }  
136 -  
137 - len = 80;  
138 - rc = 1040;  
139 - fn = HLLAPI_CMD_COPYPSTOSTR;  
140 - hllapi((LPWORD) &fn,buffer,&len,&rc);  
141 - printf("%s exits with rc=%d\n%s\n","HLLAPI_CMD_COPYPSTOSTR",rc,buffer);  
142 -  
143 - // Performance  
144 - len = strlen(cmd[0].arg);  
145 - memcpy(buffer,cmd[0].arg,len);  
146 - if(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0)  
147 - {  
148 - time_t end = time(0) + 5;  
149 - int qtd = 0;  
150 - do  
151 - {  
152 - qtd++;  
153 - } while(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0 && time(0)<end);  
154 - printf("%d interacoes em 5 segundos (rc=%d)\n",qtd,rc);  
155 -  
156 - }  
157 -  
158 - // Disconnect  
159 - len = 10;  
160 - rc = 1;  
161 - fn = HLLAPI_CMD_DISCONNECTPS;  
162 - *buffer = 0;  
163 - hllapi((LPWORD) &fn,buffer,&len,&rc);  
164 - printf("%s exits with rc=%d\n[%s]\n","HLLAPI_CMD_DISCONNECTPS",rc,buffer);  
165 -  
166 -  
167 - return 0;  
168 - }  
169 -*/  
src/testprograms/hllapi.c 0 → 100644
@@ -0,0 +1,169 @@ @@ -0,0 +1,169 @@
  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 testprogram.c e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 + #include <stdio.h>
  31 + #include <string.h>
  32 + #include <time.h>
  33 + #include <pw3270/hllapi.h>
  34 +
  35 + #if defined(DEBUG) && defined(_WIN32)
  36 + #undef trace
  37 + #define trace( fmt, ... ) { FILE *out = fopen("c:\\Users\\Perry\\hllapi.log","a"); if(out) { fprintf(out, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fclose(out); } }
  38 + #endif // DEBUG
  39 +
  40 + #define MAX_DATA_SIZE 8000 //< Maximum data size for this application.
  41 +
  42 + static CHAR hllapi_data[MAX_DATA_SIZE];
  43 +
  44 +/*---[ Implement ]--------------------------------------------------------------------------------*/
  45 +
  46 + static void connect_ps(const char *session)
  47 + {
  48 + WORD len;
  49 + WORD fn = HLLAPI_CMD_CONNECTPS;
  50 + WORD rc = 0;
  51 +
  52 + strncpy(hllapi_data,session,MAX_DATA_SIZE);
  53 +
  54 + len = strlen(session);
  55 + hllapi(&fn,hllapi_data,&len,&rc);
  56 +
  57 + /*
  58 + if(rc)
  59 + {
  60 + trace("HLLAPI_CMD_CONNECTPS(%s) exits with rc=%d", session, (int) rc);
  61 + }
  62 + */
  63 +
  64 + }
  65 +
  66 + int main(int numpar, char *param[])
  67 + {
  68 + const char *session = "pw3270:A";
  69 +
  70 + connect_ps(session);
  71 +
  72 + /*
  73 +
  74 + printf("init(%s)=%d\n",session,(int) hllapi_init((LPSTR) session));
  75 + printf("revision=%d\n",(int) hllapi_get_revision());
  76 + printf("connect=%d\n",(int) hllapi_connect((char *) "fandezhi.efglobe.com:23",1));
  77 + printf("wait_for_ready=%d\n",(int) hllapi_wait_for_ready(10));
  78 + printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No");
  79 +
  80 +// printf("disconnect=%d\n",(int) hllapi_disconnect());
  81 +
  82 +
  83 + printf("deinit=%d\n",(int) hllapi_deinit());
  84 +
  85 + DWORD revision;
  86 + int rc;
  87 +
  88 + rc = hllapi_init("");
  89 + if(rc)
  90 + {
  91 + printf("Init exits with rc=%d\n",rc);
  92 + return rc;
  93 + }
  94 +
  95 + if(!hllapi_get_revision(&revision))
  96 + printf("Library revision is %d\n",(int) revision);
  97 +
  98 +
  99 + printf("Deinit exits with rc=%d\n",rc);
  100 + rc = hllapi_deinit();
  101 +*/
  102 + return 0;
  103 + }
  104 +
  105 +/*
  106 + int main(int numpar, char *param[])
  107 + {
  108 + char buffer[BUFFER_LENGTH];
  109 + unsigned short rc;
  110 + unsigned short len;
  111 + unsigned long fn;
  112 +
  113 + static const struct _cmd
  114 + {
  115 + const char * name;
  116 + unsigned short fn;
  117 + const char * arg;
  118 + } cmd[] =
  119 + {
  120 + { "GetRevision", HLLAPI_CMD_GETREVISION, " " },
  121 + { "ConnectPS", HLLAPI_CMD_CONNECTPS, "pw3270A" },
  122 + { "InputString", HLLAPI_CMD_INPUTSTRING, "test" },
  123 +
  124 + };
  125 +
  126 + int f;
  127 +
  128 +
  129 + for(f=0;f< (sizeof(cmd)/sizeof(struct _cmd)); f++)
  130 + {
  131 + len = strlen(cmd[f].arg);
  132 + memcpy(buffer,cmd[f].arg,len);
  133 + hllapi((LPWORD) &cmd[f].fn,buffer,&len,&rc);
  134 + printf("%s exits with rc=%d\n[%s]\n",cmd[f].name,rc,buffer);
  135 + }
  136 +
  137 + len = 80;
  138 + rc = 1040;
  139 + fn = HLLAPI_CMD_COPYPSTOSTR;
  140 + hllapi((LPWORD) &fn,buffer,&len,&rc);
  141 + printf("%s exits with rc=%d\n%s\n","HLLAPI_CMD_COPYPSTOSTR",rc,buffer);
  142 +
  143 + // Performance
  144 + len = strlen(cmd[0].arg);
  145 + memcpy(buffer,cmd[0].arg,len);
  146 + if(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0)
  147 + {
  148 + time_t end = time(0) + 5;
  149 + int qtd = 0;
  150 + do
  151 + {
  152 + qtd++;
  153 + } while(hllapi((LPWORD) &cmd[0].fn,buffer,&len,&rc) == 0 && rc == 0 && time(0)<end);
  154 + printf("%d interacoes em 5 segundos (rc=%d)\n",qtd,rc);
  155 +
  156 + }
  157 +
  158 + // Disconnect
  159 + len = 10;
  160 + rc = 1;
  161 + fn = HLLAPI_CMD_DISCONNECTPS;
  162 + *buffer = 0;
  163 + hllapi((LPWORD) &fn,buffer,&len,&rc);
  164 + printf("%s exits with rc=%d\n[%s]\n","HLLAPI_CMD_DISCONNECTPS",rc,buffer);
  165 +
  166 +
  167 + return 0;
  168 + }
  169 +*/
src/testprograms/ipc3270c.c 0 → 100644
@@ -0,0 +1,248 @@ @@ -0,0 +1,248 @@
  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
  5 + * o nome G3270.
  6 + *
  7 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  8 + *
  9 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  10 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  11 + * Free Software Foundation.
  12 + *
  13 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  14 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  15 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  16 + * obter mais detalhes.
  17 + *
  18 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  19 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  20 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  21 + *
  22 + * Este programa está nomeado como testprogram.c e possui - linhas de 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 +
  32 + /**
  33 + * @brief Test program for pw3270 HLLAPI compatibility plugin.
  34 + *
  35 + */
  36 +
  37 + #include <config.h>
  38 + #include <v3270.h>
  39 + #include <v3270/trace.h>
  40 + #include <pw3270/plugin.h>
  41 + #include <string.h>
  42 + #include <stdlib.h>
  43 + #include <pw3270.h>
  44 +
  45 + /*---[ Globals ]------------------------------------------------------------------------------------*/
  46 +
  47 + const gchar * plugin_path = ".bin/Debug";
  48 + const gchar * session_name = "pw3270";
  49 + const gchar * plugin_name = "ipc3270c." G_MODULE_SUFFIX;
  50 +
  51 + /*---[ Implement ]----------------------------------------------------------------------------------*/
  52 +
  53 + static void close_module(GtkWidget *widget, GModule *module)
  54 + {
  55 + g_message("Closing module %p",module);
  56 +
  57 + static void (*stop)(GtkWidget *window, GtkWidget *terminal) = NULL;
  58 + if(!g_module_symbol(module,"pw3270_plugin_stop",(void **) &stop))
  59 + {
  60 + g_message("Can't get stop method from plugin: %s",g_module_error());
  61 + }
  62 + else
  63 + {
  64 + stop(gtk_widget_get_toplevel(widget),widget);
  65 + }
  66 +
  67 + g_module_close(module);
  68 + g_message("Module %p was closed",module);
  69 + }
  70 +
  71 + static void toggle_ds_trace(GtkToggleToolButton *button, GtkWidget *terminal)
  72 + {
  73 + v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_tool_button_get_active(button));
  74 + }
  75 +
  76 + static void toggle_event_trace(GtkToggleToolButton *button, GtkWidget *terminal)
  77 + {
  78 + v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_tool_button_get_active(button));
  79 + }
  80 +
  81 + static void toggle_ssl_trace(GtkToggleToolButton *button, GtkWidget *terminal)
  82 + {
  83 + v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_tool_button_get_active(button));
  84 + }
  85 +
  86 + static void toggle_screen_trace(GtkToggleToolButton *button, GtkWidget *terminal)
  87 + {
  88 + v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_tool_button_get_active(button));
  89 + }
  90 +
  91 + static void toggle_started_trace(GtkToggleToolButton *button, GModule *module)
  92 + {
  93 + if(!module)
  94 + return;
  95 +
  96 + GtkWidget * terminal = GTK_WIDGET(g_object_get_data(G_OBJECT(button),"terminal"));
  97 +
  98 + const gchar * method_name = (gtk_toggle_tool_button_get_active(button) ? "pw3270_plugin_start" : "pw3270_plugin_stop");
  99 +
  100 + static void (*call)(GtkWidget *window, GtkWidget *terminal) = NULL;
  101 + if(!g_module_symbol(module,method_name,(void **) &call))
  102 + {
  103 + g_message("Can't get method \"%s\": %s",method_name,g_module_error());
  104 + return;
  105 + }
  106 +
  107 + g_message("Calling %s",method_name);
  108 + call(gtk_widget_get_toplevel(terminal), GTK_WIDGET(terminal));
  109 +
  110 + }
  111 +
  112 + static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback)
  113 + {
  114 + GtkToolItem * item = gtk_toggle_tool_button_new();
  115 + gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label);
  116 +
  117 + g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal);
  118 +
  119 + if(tooltip)
  120 + gtk_widget_set_tooltip_text(GTK_WIDGET(item),tooltip);
  121 +
  122 + return item;
  123 + }
  124 +
  125 + static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
  126 +
  127 + GtkWidget * window = gtk_application_window_new(app);
  128 + GtkWidget * terminal = v3270_new();
  129 + GtkWidget * notebook = gtk_notebook_new();
  130 + GModule * module = NULL;
  131 +
  132 + gtk_widget_set_name(window,session_name);
  133 +
  134 + // Setup tabs
  135 + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),terminal,gtk_label_new(v3270_get_session_name(terminal)));
  136 +
  137 + // Load plugin
  138 + {
  139 + g_autofree gchar * plugin = g_build_filename(plugin_path,plugin_name,NULL);
  140 +
  141 + g_message("Loading %s",plugin);
  142 +
  143 + module = g_module_open(plugin,G_MODULE_BIND_LOCAL);
  144 +
  145 + if(module)
  146 + {
  147 + g_signal_connect (terminal, "destroy", G_CALLBACK(close_module), module);
  148 + }
  149 + else
  150 + {
  151 + g_message("Can't open \"%s\": %s",plugin,g_module_error());
  152 + gtk_main_quit();
  153 + }
  154 +
  155 + }
  156 + // Create trace window
  157 + {
  158 + GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
  159 + GtkWidget * trace = v3270_trace_new(terminal);
  160 + GtkWidget * toolbar = gtk_toolbar_new();
  161 + GtkToolItem * start = gtk_toggle_tool_button_new();
  162 +
  163 + gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL);
  164 +
  165 + g_object_set_data(G_OBJECT(start),"terminal",terminal);
  166 +
  167 + gtk_tool_button_set_label(GTK_TOOL_BUTTON(start),"Enable");
  168 + g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started_trace), module);
  169 + gtk_widget_set_tooltip_text(GTK_WIDGET(start),"Start/Stop plugin module");
  170 +
  171 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), start, -1);
  172 +
  173 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),gtk_separator_tool_item_new(),-1);
  174 +
  175 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),-1);
  176 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),-1);
  177 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),-1);
  178 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),-1);
  179 +
  180 + gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0);
  181 + gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0);
  182 + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace"));
  183 + }
  184 +
  185 + // Setup and show main window
  186 + gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  187 + gtk_window_set_default_size (GTK_WINDOW (window), 800, 500);
  188 + gtk_container_add(GTK_CONTAINER(window),notebook);
  189 + gtk_widget_show_all (window);
  190 +
  191 + // Setup title.
  192 + const gchar *url = lib3270_get_url(v3270_get_session(terminal));
  193 + if(url) {
  194 +
  195 + v3270_set_url(terminal,url);
  196 + v3270_reconnect(terminal);
  197 +
  198 + gchar * title = g_strdup_printf("%s - %s", v3270_get_session_name(terminal), url);
  199 + gtk_window_set_title(GTK_WINDOW(window), title);
  200 + g_free(title);
  201 +
  202 + } else {
  203 +
  204 + gtk_window_set_title(GTK_WINDOW(window), v3270_get_session_name(terminal));
  205 +
  206 + }
  207 +
  208 +}
  209 +
  210 +int main (int argc, char **argv) {
  211 +
  212 + /*
  213 + GVariantBuilder builder;
  214 +
  215 + g_variant_builder_init(&builder,G_VARIANT_TYPE("(isi)"));
  216 +
  217 + g_variant_builder_add(&builder, "i", 10);
  218 + g_variant_builder_add(&builder, "s", "teste");
  219 + g_variant_builder_add(&builder, "i", 20);
  220 +
  221 + GVariant *value = g_variant_builder_end(&builder);
  222 +
  223 + size_t szPacket = 0;
  224 + g_autofree unsigned char * buffer = ipc3270_pack("teste", value, &szPacket);
  225 + g_variant_unref(value);
  226 +
  227 + debug("Package \"%s\" was created with %u bytes", buffer, (unsigned int) szPacket);
  228 +
  229 + value = ipc3270_unpack(buffer);
  230 +
  231 + g_variant_unref(value);
  232 + */
  233 +
  234 + GtkApplication *app;
  235 + int status;
  236 +
  237 + app = gtk_application_new ("br.com.bb.pw3270",G_APPLICATION_FLAGS_NONE);
  238 +
  239 + g_signal_connect (app, "activate", G_CALLBACK(activate), NULL);
  240 +
  241 + status = g_application_run (G_APPLICATION (app), argc, argv);
  242 + g_object_unref (app);
  243 +
  244 + g_message("rc=%d",status);
  245 + return status;
  246 +
  247 +}
  248 +
src/testprograms/plugin.c
@@ -1,248 +0,0 @@ @@ -1,248 +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  
5 - * o nome G3270.  
6 - *  
7 - * Copyright (C) <2008> <Banco do Brasil S.A.>  
8 - *  
9 - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob  
10 - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela  
11 - * Free Software Foundation.  
12 - *  
13 - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER  
14 - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO  
15 - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para  
16 - * obter mais detalhes.  
17 - *  
18 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este  
19 - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin  
20 - * St, Fifth Floor, Boston, MA 02110-1301 USA  
21 - *  
22 - * Este programa está nomeado como testprogram.c e possui - linhas de 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 -  
32 - /**  
33 - * @brief Test program for pw3270 HLLAPI compatibility plugin.  
34 - *  
35 - */  
36 -  
37 - #include <config.h>  
38 - #include <v3270.h>  
39 - #include <v3270/trace.h>  
40 - #include <pw3270/plugin.h>  
41 - #include <string.h>  
42 - #include <stdlib.h>  
43 - #include <pw3270.h>  
44 -  
45 - /*---[ Globals ]------------------------------------------------------------------------------------*/  
46 -  
47 - const gchar * plugin_path = ".bin/Debug";  
48 - const gchar * session_name = "pw3270";  
49 - const gchar * plugin_name = "ipc3270c." G_MODULE_SUFFIX;  
50 -  
51 - /*---[ Implement ]----------------------------------------------------------------------------------*/  
52 -  
53 - static void close_module(GtkWidget *widget, GModule *module)  
54 - {  
55 - g_message("Closing module %p",module);  
56 -  
57 - static void (*stop)(GtkWidget *window, GtkWidget *terminal) = NULL;  
58 - if(!g_module_symbol(module,"pw3270_plugin_stop",(void **) &stop))  
59 - {  
60 - g_message("Can't get stop method from plugin: %s",g_module_error());  
61 - }  
62 - else  
63 - {  
64 - stop(gtk_widget_get_toplevel(widget),widget);  
65 - }  
66 -  
67 - g_module_close(module);  
68 - g_message("Module %p was closed",module);  
69 - }  
70 -  
71 - static void toggle_ds_trace(GtkToggleToolButton *button, GtkWidget *terminal)  
72 - {  
73 - v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_tool_button_get_active(button));  
74 - }  
75 -  
76 - static void toggle_event_trace(GtkToggleToolButton *button, GtkWidget *terminal)  
77 - {  
78 - v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_tool_button_get_active(button));  
79 - }  
80 -  
81 - static void toggle_ssl_trace(GtkToggleToolButton *button, GtkWidget *terminal)  
82 - {  
83 - v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_tool_button_get_active(button));  
84 - }  
85 -  
86 - static void toggle_screen_trace(GtkToggleToolButton *button, GtkWidget *terminal)  
87 - {  
88 - v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_tool_button_get_active(button));  
89 - }  
90 -  
91 - static void toggle_started_trace(GtkToggleToolButton *button, GModule *module)  
92 - {  
93 - if(!module)  
94 - return;  
95 -  
96 - GtkWidget * terminal = GTK_WIDGET(g_object_get_data(G_OBJECT(button),"terminal"));  
97 -  
98 - const gchar * method_name = (gtk_toggle_tool_button_get_active(button) ? "pw3270_plugin_start" : "pw3270_plugin_stop");  
99 -  
100 - static void (*call)(GtkWidget *window, GtkWidget *terminal) = NULL;  
101 - if(!g_module_symbol(module,method_name,(void **) &call))  
102 - {  
103 - g_message("Can't get method \"%s\": %s",method_name,g_module_error());  
104 - return;  
105 - }  
106 -  
107 - g_message("Calling %s",method_name);  
108 - call(gtk_widget_get_toplevel(terminal), GTK_WIDGET(terminal));  
109 -  
110 - }  
111 -  
112 - static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback)  
113 - {  
114 - GtkToolItem * item = gtk_toggle_tool_button_new();  
115 - gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label);  
116 -  
117 - g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal);  
118 -  
119 - if(tooltip)  
120 - gtk_widget_set_tooltip_text(GTK_WIDGET(item),tooltip);  
121 -  
122 - return item;  
123 - }  
124 -  
125 - static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {  
126 -  
127 - GtkWidget * window = gtk_application_window_new(app);  
128 - GtkWidget * terminal = v3270_new();  
129 - GtkWidget * notebook = gtk_notebook_new();  
130 - GModule * module = NULL;  
131 -  
132 - gtk_widget_set_name(window,session_name);  
133 -  
134 - // Setup tabs  
135 - gtk_notebook_append_page(GTK_NOTEBOOK(notebook),terminal,gtk_label_new(v3270_get_session_name(terminal)));  
136 -  
137 - // Load plugin  
138 - {  
139 - g_autofree gchar * plugin = g_build_filename(plugin_path,plugin_name,NULL);  
140 -  
141 - g_message("Loading %s",plugin);  
142 -  
143 - module = g_module_open(plugin,G_MODULE_BIND_LOCAL);  
144 -  
145 - if(module)  
146 - {  
147 - g_signal_connect (terminal, "destroy", G_CALLBACK(close_module), module);  
148 - }  
149 - else  
150 - {  
151 - g_message("Can't open \"%s\": %s",plugin,g_module_error());  
152 - gtk_main_quit();  
153 - }  
154 -  
155 - }  
156 - // Create trace window  
157 - {  
158 - GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);  
159 - GtkWidget * trace = v3270_trace_new(terminal);  
160 - GtkWidget * toolbar = gtk_toolbar_new();  
161 - GtkToolItem * start = gtk_toggle_tool_button_new();  
162 -  
163 - gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL);  
164 -  
165 - g_object_set_data(G_OBJECT(start),"terminal",terminal);  
166 -  
167 - gtk_tool_button_set_label(GTK_TOOL_BUTTON(start),"Enable");  
168 - g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started_trace), module);  
169 - gtk_widget_set_tooltip_text(GTK_WIDGET(start),"Start/Stop plugin module");  
170 -  
171 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), start, -1);  
172 -  
173 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),gtk_separator_tool_item_new(),-1);  
174 -  
175 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),-1);  
176 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),-1);  
177 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),-1);  
178 - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),-1);  
179 -  
180 - gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0);  
181 - gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0);  
182 - gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace"));  
183 - }  
184 -  
185 - // Setup and show main window  
186 - gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);  
187 - gtk_window_set_default_size (GTK_WINDOW (window), 800, 500);  
188 - gtk_container_add(GTK_CONTAINER(window),notebook);  
189 - gtk_widget_show_all (window);  
190 -  
191 - // Setup title.  
192 - const gchar *url = lib3270_get_url(v3270_get_session(terminal));  
193 - if(url) {  
194 -  
195 - v3270_set_url(terminal,url);  
196 - v3270_reconnect(terminal);  
197 -  
198 - gchar * title = g_strdup_printf("%s - %s", v3270_get_session_name(terminal), url);  
199 - gtk_window_set_title(GTK_WINDOW(window), title);  
200 - g_free(title);  
201 -  
202 - } else {  
203 -  
204 - gtk_window_set_title(GTK_WINDOW(window), v3270_get_session_name(terminal));  
205 -  
206 - }  
207 -  
208 -}  
209 -  
210 -int main (int argc, char **argv) {  
211 -  
212 - /*  
213 - GVariantBuilder builder;  
214 -  
215 - g_variant_builder_init(&builder,G_VARIANT_TYPE("(isi)"));  
216 -  
217 - g_variant_builder_add(&builder, "i", 10);  
218 - g_variant_builder_add(&builder, "s", "teste");  
219 - g_variant_builder_add(&builder, "i", 20);  
220 -  
221 - GVariant *value = g_variant_builder_end(&builder);  
222 -  
223 - size_t szPacket = 0;  
224 - g_autofree unsigned char * buffer = ipc3270_pack("teste", value, &szPacket);  
225 - g_variant_unref(value);  
226 -  
227 - debug("Package \"%s\" was created with %u bytes", buffer, (unsigned int) szPacket);  
228 -  
229 - value = ipc3270_unpack(buffer);  
230 -  
231 - g_variant_unref(value);  
232 - */  
233 -  
234 - GtkApplication *app;  
235 - int status;  
236 -  
237 - app = gtk_application_new ("br.com.bb.pw3270",G_APPLICATION_FLAGS_NONE);  
238 -  
239 - g_signal_connect (app, "activate", G_CALLBACK(activate), NULL);  
240 -  
241 - status = g_application_run (G_APPLICATION (app), argc, argv);  
242 - g_object_unref (app);  
243 -  
244 - g_message("rc=%d",status);  
245 - return status;  
246 -  
247 -}  
248 -