Commit 05595ed8df6563f4c0f2674b0d4fe91a23444ba3

Authored by Perry Werneck
Committed by GitHub
2 parents d4e1bfad c4300650

Merge pull request #10 from PerryWerneck/develop

Fix windows build and keytable issues.
.gitignore
... ... @@ -60,3 +60,4 @@ certs
60 60 confdefs.h
61 61 conftest.*
62 62 mstest.*
  63 +*.cscope_file_list
... ...
Makefile.in
... ... @@ -115,6 +115,9 @@ CFLAGS= \
115 115 @LDAP_CFLAGS@ \
116 116 @LIBCURL_CFLAGS@
117 117  
  118 +LDFLAGS= \
  119 + @LDFLAGS@
  120 +
118 121 LIBS= \
119 122 @LIBS@ \
120 123 @LIBSSL_LIBS@ \
... ...
configure.ac
... ... @@ -203,11 +203,13 @@ sccs_user=$USER
203 203  
204 204 AC_DEFINE_UNQUOTED(RPQ_BUILD_DATE,"$rpq_build_date")
205 205 AC_DEFINE_UNQUOTED(RPQ_TIMESTAMP_VALUE,"$rpq_timestamp")
206   -AC_DEFINE_UNQUOTED(RPQ_REVISION,"$rpq_revision")
207 206  
208 207 AC_DEFINE_UNQUOTED(SCCS_USER,"$USER")
209 208 AC_DEFINE_UNQUOTED(SCCS_DATE,"$sccs_date")
210 209  
  210 +AC_DEFINE_UNQUOTED(RPQ_REVISION,"$rpq_revision")
  211 +AC_SUBST(RPQ_REVISION,"$rpq_revision")
  212 +
211 213 dnl ---------------------------------------------------------------------------
212 214 dnl Check for libintl
213 215 dnl ---------------------------------------------------------------------------
... ... @@ -241,6 +243,8 @@ AC_CHECK_HEADER(libintl.h, [
241 243  
242 244 esac
243 245  
  246 +], [
  247 + AC_MSG_ERROR([Can't find required file libintl.h])
244 248 ])
245 249  
246 250 AC_SUBST(INTL_LIBS)
... ... @@ -559,7 +563,7 @@ dnl ---------------------------------------------------------------------------
559 563 dnl Check for SSL
560 564 dnl ---------------------------------------------------------------------------
561 565  
562   -PKG_CHECK_MODULES( [LIBSSL], [libssl libcrypto], AC_DEFINE(HAVE_LIBSSL), AC_MSG_NOTICE([libssl not present.]) )
  566 +PKG_CHECK_MODULES( [LIBSSL], [libssl libcrypto], AC_DEFINE(HAVE_LIBSSL), AC_MSG_ERROR([libssl not present.]) )
563 567  
564 568 AC_SUBST(LIBSSL_LIBS)
565 569 AC_SUBST(LIBSSL_CFLAGS)
... ...
lib3270.cbp
... ... @@ -212,9 +212,6 @@
212 212 <Unit filename="src/core/util.c">
213 213 <Option compilerVar="CC" />
214 214 </Unit>
215   - <Unit filename="src/core/version.c">
216   - <Option compilerVar="CC" />
217   - </Unit>
218 215 <Unit filename="src/core/wait.c">
219 216 <Option compilerVar="CC" />
220 217 </Unit>
... ... @@ -233,7 +230,9 @@
233 230 <Unit filename="src/core/windows/registry.c">
234 231 <Option compilerVar="CC" />
235 232 </Unit>
236   - <Unit filename="src/core/windows/resources.rc" />
  233 + <Unit filename="src/core/windows/resources.rc">
  234 + <Option compilerVar="WINDRES" />
  235 + </Unit>
237 236 <Unit filename="src/core/windows/util.c">
238 237 <Option compilerVar="CC" />
239 238 </Unit>
... ...
locale/pt_BR.po
... ... @@ -5,7 +5,7 @@ msgid &quot;&quot;
5 5 msgstr ""
6 6 "Project-Id-Version: pw3270 5.0\n"
7 7 "Report-Msgid-Bugs-To: \n"
8   -"POT-Creation-Date: 2020-07-04 14:53-0300\n"
  8 +"POT-Creation-Date: 2020-07-09 20:22-0300\n"
9 9 "PO-Revision-Date: 2020-05-08 00:52-0300\n"
10 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 11 "Language-Team: Português <>\n"
... ... @@ -265,8 +265,8 @@ msgstr &quot;Não foi possível criar requisição HTTP&quot;
265 265 msgid "Can't decode CRL"
266 266 msgstr "Não foi possível decodificar arquivo CRL"
267 267  
268   -#: src/ssl/windows/ldap.c:259 src/ssl/windows/http.c:74
269   -#: src/ssl/windows/curl.c:264
  268 +#: src/ssl/windows/curl.c:264 src/ssl/windows/http.c:74
  269 +#: src/ssl/windows/ldap.c:259
270 270 msgid "Can't decode certificate revocation list"
271 271 msgstr "Não foi possível decodificar a lista de certificados revogados"
272 272  
... ... @@ -371,7 +371,7 @@ msgstr &quot;Não foi possível iniciar transferência de arquivo.&quot;
371 371 msgid "Can't use winsock version %d.%d"
372 372 msgstr "Não posso usar versão winsock %d.%d"
373 373  
374   -#: src/ssl/negotiate.c:370 src/ssl/crl.c:165
  374 +#: src/ssl/crl.c:165 src/ssl/negotiate.c:370
375 375 msgid "Can't verify."
376 376 msgstr "Não foi possível verificar"
377 377  
... ... @@ -637,12 +637,12 @@ msgstr &quot;Apagar campos&quot;
637 637 msgid "Error"
638 638 msgstr "Erro"
639 639  
640   -#: src/core/ft/ft_dft.c:454 src/core/ft/ft_cut.c:423
  640 +#: src/core/ft/ft_cut.c:423 src/core/ft/ft_dft.c:454
641 641 #, c-format
642 642 msgid "Error \"%s\" reading from local file (rc=%d)"
643 643 msgstr "Erro \"%s\" lendo arquivo local (rc=%d)"
644 644  
645   -#: src/core/ft/ft_dft.c:332 src/core/ft/ft_cut.c:528
  645 +#: src/core/ft/ft_cut.c:528 src/core/ft/ft_dft.c:332
646 646 #, c-format
647 647 msgid "Error \"%s\" writing to local file (rc=%d)"
648 648 msgstr "Erro \"%s\" gravando arquivo local (rc=%d)"
... ... @@ -1006,8 +1006,8 @@ msgstr &quot;Move o cursor para o primeiro branco após o último não branco no camp
1006 1006 msgid "Move to first unprotected field on screen"
1007 1007 msgstr "Move para o primeiro campo desprotegido"
1008 1008  
1009   -#: src/core/telnet.c:320 src/core/windows/event_dispatcher.c:149
1010   -#: src/core/windows/connect.c:78
  1009 +#: src/core/telnet.c:320 src/core/windows/connect.c:78
  1010 +#: src/core/windows/event_dispatcher.c:149
1011 1011 msgid "Network error"
1012 1012 msgstr "Erro de rede"
1013 1013  
... ... @@ -1282,22 +1282,22 @@ msgstr &quot;Pesquisa não produziu nenhum valor&quot;
1282 1282 msgid "Secure connection was successful."
1283 1283 msgstr "Conexão segura efetuada com sucesso."
1284 1284  
1285   -#: src/ssl/negotiate.c:107 src/ssl/negotiate.c:241 src/ssl/negotiate.c:275
1286   -#: src/ssl/negotiate.c:369 src/ssl/negotiate.c:391 src/ssl/negotiate.c:412
1287   -#: src/ssl/crl.c:164 src/ssl/windows/ldap.c:108 src/ssl/windows/ldap.c:122
1288   -#: src/ssl/windows/ldap.c:151 src/ssl/windows/ldap.c:165
1289   -#: src/ssl/windows/ldap.c:180 src/ssl/windows/ldap.c:210
1290   -#: src/ssl/windows/ldap.c:222 src/ssl/windows/ldap.c:234
1291   -#: src/ssl/windows/ldap.c:258 src/ssl/windows/init.c:91
1292   -#: src/ssl/windows/init.c:112 src/ssl/windows/init.c:138
1293   -#: src/ssl/windows/init.c:149 src/ssl/windows/http.c:57
1294   -#: src/ssl/windows/http.c:73 src/ssl/windows/getcrl.c:57
1295   -#: src/ssl/windows/getcrl.c:74 src/ssl/windows/getcrl.c:86
1296   -#: src/ssl/windows/getcrl.c:118 src/ssl/windows/curl.c:188
  1285 +#: src/ssl/crl.c:164 src/ssl/negotiate.c:107 src/ssl/negotiate.c:241
  1286 +#: src/ssl/negotiate.c:275 src/ssl/negotiate.c:369 src/ssl/negotiate.c:391
  1287 +#: src/ssl/negotiate.c:412 src/ssl/windows/curl.c:188
1297 1288 #: src/ssl/windows/curl.c:218 src/ssl/windows/curl.c:242
1298 1289 #: src/ssl/windows/curl.c:263 src/ssl/windows/curl.c:272
1299 1290 #: src/ssl/windows/curl.c:300 src/ssl/windows/curl.c:333
1300   -#: src/ssl/windows/curl.c:369
  1291 +#: src/ssl/windows/curl.c:369 src/ssl/windows/getcrl.c:57
  1292 +#: src/ssl/windows/getcrl.c:74 src/ssl/windows/getcrl.c:86
  1293 +#: src/ssl/windows/getcrl.c:118 src/ssl/windows/http.c:57
  1294 +#: src/ssl/windows/http.c:73 src/ssl/windows/init.c:91
  1295 +#: src/ssl/windows/init.c:112 src/ssl/windows/init.c:138
  1296 +#: src/ssl/windows/init.c:149 src/ssl/windows/ldap.c:108
  1297 +#: src/ssl/windows/ldap.c:122 src/ssl/windows/ldap.c:151
  1298 +#: src/ssl/windows/ldap.c:165 src/ssl/windows/ldap.c:180
  1299 +#: src/ssl/windows/ldap.c:210 src/ssl/windows/ldap.c:222
  1300 +#: src/ssl/windows/ldap.c:234 src/ssl/windows/ldap.c:258
1301 1301 msgid "Security error"
1302 1302 msgstr "Erro de segurança"
1303 1303  
... ... @@ -1781,8 +1781,8 @@ msgstr &quot;Mostrar posição do cursor&quot;
1781 1781 msgid "Transfer cancelled by host"
1782 1782 msgstr "Transferência cancelada pelo host"
1783 1783  
1784   -#: src/core/ft/ft_dft.c:230 src/core/ft/ft_dft.c:373 src/core/ft/ft_cut.c:400
1785   -#: src/core/ft/ft_cut.c:495
  1784 +#: src/core/ft/ft_cut.c:400 src/core/ft/ft_cut.c:495 src/core/ft/ft_dft.c:230
  1785 +#: src/core/ft/ft_dft.c:373
1786 1786 msgid "Transfer cancelled by user"
1787 1787 msgstr "Transferência cancelada pelo usuário"
1788 1788  
... ...
src/core/actions/table.c
... ... @@ -91,6 +91,21 @@
91 91 return lib3270_move_selection(hSession,LIB3270_DIR_RIGHT);
92 92 }
93 93  
  94 + static int pa1(H3270 *hSession)
  95 + {
  96 + return lib3270_pakey(hSession,1);
  97 + }
  98 +
  99 + static int pa2(H3270 *hSession)
  100 + {
  101 + return lib3270_pakey(hSession,1);
  102 + }
  103 +
  104 + static int pa3(H3270 *hSession)
  105 + {
  106 + return lib3270_pakey(hSession,1);
  107 + }
  108 +
94 109 /**
95 110 * @brief Get LIB3270 action table;
96 111 *
... ... @@ -530,7 +545,7 @@
530 545 .keys = NULL,
531 546 .icon = "edit-clear",
532 547 .label = N_("Erase input"),
533   - .summary = NULL,
  548 + .summary = N_("Clear"),
534 549 .activate = lib3270_eraseinput,
535 550  
536 551 .group = LIB3270_ACTION_GROUP_ONLINE,
... ... @@ -618,7 +633,7 @@
618 633 .keys = "Escape",
619 634 .icon = NULL,
620 635 .label = N_("Reset"),
621   - .summary = NULL,
  636 + .summary = N_("Reset"),
622 637 .activate = lib3270_kybdreset,
623 638  
624 639 .group = LIB3270_ACTION_GROUP_ONLINE,
... ... @@ -770,6 +785,51 @@
770 785 .activatable = lib3270_is_disconnected
771 786 },
772 787  
  788 + //
  789 + // Misc Actions
  790 + //
  791 + {
  792 + .name = "PA1",
  793 + .type = LIB3270_ACTION_TYPE_GENERIC,
  794 +
  795 + .keys = "<Alt>1",
  796 + .icon = NULL,
  797 + .label = N_("PA1"),
  798 + .summary = N_( "Program Action 1" ),
  799 + .activate = pa1,
  800 +
  801 + .group = LIB3270_ACTION_GROUP_ONLINE,
  802 + .activatable = lib3270_is_connected
  803 + },
  804 +
  805 + {
  806 + .name = "PA2",
  807 + .type = LIB3270_ACTION_TYPE_GENERIC,
  808 +
  809 + .keys = "<Alt>2",
  810 + .icon = NULL,
  811 + .label = N_("PA1"),
  812 + .summary = N_( "Program Action 2" ),
  813 + .activate = pa2,
  814 +
  815 + .group = LIB3270_ACTION_GROUP_ONLINE,
  816 + .activatable = lib3270_is_connected
  817 + },
  818 +
  819 + {
  820 + .name = "PA3",
  821 + .type = LIB3270_ACTION_TYPE_GENERIC,
  822 +
  823 + .keys = "<Alt>3",
  824 + .icon = NULL,
  825 + .label = N_("PA1"),
  826 + .summary = N_( "Program Action 3" ),
  827 + .activate = pa3,
  828 +
  829 + .group = LIB3270_ACTION_GROUP_ONLINE,
  830 + .activatable = lib3270_is_connected
  831 + },
  832 +
773 833 {
774 834 .name = NULL,
775 835 }
... ...
src/core/connect.c
... ... @@ -115,6 +115,10 @@
115 115 }
116 116  
117 117 #if defined(HAVE_LIBSSL)
  118 + debug("%s: TLS/SSL is %s",__FUNCTION__,hSession->ssl.enabled ? "ENABLED" : "DISABLED")
  119 + trace_dsn(hSession,"TLS/SSL is %s\n", hSession->ssl.enabled ? "enabled" : "disabled" );
  120 +
  121 + if(hSession->ssl.enabled)
118 122 {
119 123 SSL_ERROR_MESSAGE ssl_error;
120 124 memset(&ssl_error,0,sizeof(ssl_error));
... ...
src/core/host.c
... ... @@ -288,16 +288,59 @@ LIB3270_EXPORT const char * lib3270_get_url(const H3270 *hSession)
288 288 if(hSession->host.url)
289 289 return hSession->host.url;
290 290  
291   -#ifdef LIB3270_DEFAULT_HOST
292   - return LIB3270_DEFAULT_HOST;
293   -#else
294   - return getenv("LIB3270_DEFAULT_HOST");
295   -#endif // LIB3270_DEFAULT_HOST
296   -
  291 + return lib3270_get_default_host(hSession);
297 292 }
298 293  
299 294 LIB3270_EXPORT const char * lib3270_get_default_host(const H3270 GNUC_UNUSED(*hSession))
300 295 {
  296 +#ifdef _WIN32
  297 + {
  298 + HKEY hKey;
  299 + DWORD disp = 0;
  300 + LSTATUS rc = RegCreateKeyEx(
  301 + HKEY_LOCAL_MACHINE,
  302 + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),
  303 + 0,
  304 + NULL,
  305 + REG_OPTION_NON_VOLATILE,
  306 + KEY_QUERY_VALUE|KEY_READ,
  307 + NULL,
  308 + &hKey,
  309 + &disp);
  310 +
  311 + if(rc == ERROR_SUCCESS)
  312 + {
  313 + static char * default_host = NULL;
  314 + DWORD cbData = 4096;
  315 +
  316 + if(!default_host)
  317 + {
  318 + default_host = (char *) malloc(cbData+1);
  319 + }
  320 + else
  321 + {
  322 + default_host = (char *) realloc(default_host,cbData+1);
  323 + }
  324 +
  325 + DWORD dwRet = RegQueryValueEx(hKey,"host",NULL,NULL,(LPBYTE) default_host, &cbData);
  326 +
  327 + RegCloseKey(hKey);
  328 +
  329 + trace("***************** %d",dwRet);
  330 + if(dwRet == ERROR_SUCCESS)
  331 + {
  332 + default_host = (char *) realloc(default_host,cbData+1);
  333 + default_host[cbData] = 0;
  334 + return default_host;
  335 + }
  336 +
  337 + free(default_host);
  338 + default_host = NULL;
  339 +
  340 + }
  341 + }
  342 +#endif // _WIN32
  343 +
301 344 #ifdef LIB3270_DEFAULT_HOST
302 345 return LIB3270_DEFAULT_HOST;
303 346 #else
... ...
src/core/init.c
... ... @@ -160,23 +160,30 @@ int lib3270_unloaded(void)
160 160  
161 161 BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwcallpurpose, LPVOID GNUC_UNUSED(lpvResvd))
162 162 {
  163 + debug("%s starts",__FUNCTION__);
  164 +
163 165 switch(dwcallpurpose)
164 166 {
165 167 case DLL_PROCESS_ATTACH:
166 168 hModule = hInstance;
167   - hEventLog = RegisterEventSource(NULL, LIB3270_STRINGIZE_VALUE_OF(LIB3270_NAME));
  169 + hEventLog = RegisterEventSource(NULL, LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME));
168 170 get_version_info();
169 171 lib3270_loaded();
170 172 break;
171 173  
172 174 case DLL_PROCESS_DETACH:
173 175 lib3270_unloaded();
174   - DeregisterEventSource(hEventLog);
175   - hEventLog = 0;
  176 + if(hEventLog)
  177 + {
  178 + DeregisterEventSource(hEventLog);
  179 + }
  180 + hEventLog = NULL;
176 181 break;
177 182  
178 183 }
179 184  
  185 + debug("%s ends",__FUNCTION__);
  186 +
180 187 return TRUE;
181 188 }
182 189  
... ...
src/core/iocalls.c
... ... @@ -575,6 +575,8 @@ int non_blocking(H3270 *hSession, Boolean on)
575 575  
576 576 #endif
577 577  
  578 + debug("Socket %d is now %s",hSession->connection.sock,(on ? "Non Blocking" : "Blocking"));
  579 +
578 580 lib3270_set_poll_state(hSession,hSession->xio.read, on);
579 581 lib3270_set_poll_state(hSession,hSession->xio.write, on);
580 582 lib3270_set_poll_state(hSession,hSession->xio.except, on);
... ...
src/core/linux/connect.c
... ... @@ -196,8 +196,6 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG
196 196 hSession->ever_3270 = False;
197 197  
198 198 #if defined(HAVE_LIBSSL)
199   - debug("%s: TLS/SSL is %s",__FUNCTION__,hSession->ssl.enabled ? "ENABLED" : "DISABLED")
200   - trace_dsn(hSession,"TLS/SSL is %s\n", hSession->ssl.enabled ? "enabled" : "disabled" );
201 199 if(hSession->ssl.enabled)
202 200 {
203 201 hSession->ssl.host = 1;
... ...
src/core/telnet.c
... ... @@ -482,6 +482,9 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession)
482 482 trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port);
483 483 }
484 484 */
  485 +
  486 + non_blocking(hSession,True);
  487 +
485 488 }
486 489  
487 490 /**
... ...
src/core/toggles/init.c
... ... @@ -116,7 +116,7 @@ void initialize_toggles(H3270 *session)
116 116 LIB3270_TOGGLE_ID id;
117 117 void (*upcall)(H3270 *session, const struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt);
118 118 }
119   - upcalls[] =
  119 + upcalls[LIB3270_TOGGLE_COUNT] =
120 120 {
121 121 {
122 122 LIB3270_TOGGLE_RECTANGLE_SELECT,
... ... @@ -150,15 +150,66 @@ void initialize_toggles(H3270 *session)
150 150  
151 151 unsigned int f;
152 152  
  153 + // Set defaults
153 154 for(f=0;f<LIB3270_TOGGLE_COUNT;f++)
  155 + {
154 156 session->toggle[f].upcall = toggle_nop;
  157 + session->toggle[f].value = toggle_descriptor[f].def;
  158 + }
155 159  
  160 + // Load upcalls
156 161 for(f=0;f<(sizeof(upcalls)/sizeof(upcalls[0]));f++)
157 162 session->toggle[upcalls[f].id].upcall = upcalls[f].upcall;
158 163  
  164 +#ifdef _WIN32
  165 + {
  166 + HKEY hKey;
  167 + DWORD disp = 0;
  168 + LSTATUS rc = RegCreateKeyEx(
  169 + HKEY_LOCAL_MACHINE,
  170 + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME) "\\toggles",
  171 + 0,
  172 + NULL,
  173 + REG_OPTION_NON_VOLATILE,
  174 + KEY_QUERY_VALUE|KEY_READ,
  175 + NULL,
  176 + &hKey,
  177 + &disp);
  178 +
  179 + if(rc == ERROR_SUCCESS)
  180 + {
  181 + debug("%s: Loading toggles from registry",__FUNCTION__);
  182 + for(f=0;f<LIB3270_TOGGLE_COUNT;f++)
  183 + {
  184 + DWORD val = 0;
  185 + DWORD cbData = sizeof(DWORD);
  186 +
  187 + DWORD dwRet = RegQueryValueEx(
  188 + hKey,
  189 + lib3270_toggle_get_from_id(f)->name,
  190 + NULL,
  191 + NULL,
  192 + (LPBYTE) &val,
  193 + &cbData
  194 + );
  195 +
  196 + debug("get(%s)=%d",lib3270_toggle_get_from_id(f)->name,(int) dwRet);
  197 + if(dwRet == ERROR_SUCCESS)
  198 + {
  199 + debug("toggle.%s=%s",lib3270_toggle_get_from_id(f)->name,val ? "True" : "False");
  200 + session->toggle[f].value = (val ? True : False);
  201 + }
  202 +
  203 + }
  204 + RegCloseKey(hKey);
  205 + }
  206 +
  207 + }
  208 +#endif // _WIN32
  209 +
  210 + // Initialize upcalls.
159 211 for(f=0;f<LIB3270_TOGGLE_COUNT;f++)
160 212 {
161   - session->toggle[f].value = toggle_descriptor[f].def;
162 213 if(session->toggle[f].value)
163 214 session->toggle[f].upcall(session,&session->toggle[f],LIB3270_TOGGLE_TYPE_INITIAL);
164 215 }
... ...
src/core/windows/connect.c
... ... @@ -190,19 +190,22 @@ static void sockstart(H3270 *session)
190 190 for(rp = result; hSession->connection.sock < 0 && rp != NULL; rp = rp->ai_next)
191 191 {
192 192 hSession->connection.sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
  193 +
193 194 if(hSession->connection.sock < 0)
194 195 {
195 196 ((struct resolver *) host)->rc = errno;
196 197 ((struct resolver *) host)->message = strerror(errno);
  198 + debug("Socket error %d: %s",((struct resolver *) host)->rc,((struct resolver *) host)->message);
197 199 continue;
198 200 }
199 201  
200 202 // Connected!
201 203 if(connect(hSession->connection.sock, rp->ai_addr, rp->ai_addrlen))
202 204 {
203   - SOCK_CLOSE(hSession);
204 205 ((struct resolver *) host)->rc = errno;
205 206 ((struct resolver *) host)->message = strerror(errno);
  207 + debug("Connection error %d: %s",((struct resolver *) host)->rc,((struct resolver *) host)->message);
  208 + SOCK_CLOSE(hSession);
206 209 continue;
207 210 }
208 211  
... ... @@ -210,6 +213,8 @@ static void sockstart(H3270 *session)
210 213  
211 214 freeaddrinfo(result);
212 215  
  216 + debug("%s: Connected using socket %d",__FUNCTION__,hSession->connection.sock);
  217 +
213 218 return 0;
214 219  
215 220 }
... ... @@ -233,6 +238,7 @@ int net_reconnect(H3270 *hSession, int seconds)
233 238  
234 239 debug("host.message=\"%s\"",host.message);
235 240  
  241 + if(hEventLog)
236 242 {
237 243 // Register on event log
238 244 lib3270_autoptr(char) username = lib3270_get_user_name();
... ...
src/core/windows/log.c
... ... @@ -43,31 +43,38 @@
43 43  
44 44 void default_log_writer(H3270 GNUC_UNUSED(*session), const char *module, int rc, const char *fmt, va_list arg_ptr)
45 45 {
46   - lib3270_autoptr(char) username = lib3270_get_user_name();
47 46 lib3270_autoptr(char) msg = lib3270_vsprintf(fmt,arg_ptr);
48 47  
49   - const char *outMsg[] = {
50   - username,
51   - module,
52   - msg
53   - };
  48 + debug("%s",msg);
54 49  
55   -#ifdef DEBUG
56   - fprintf(stderr,"LOG(%s): %s\n",module,msg);
57   - fflush(stderr);
58   -#endif // DEBUG
  50 + if(hEventLog)
  51 + {
  52 + lib3270_autoptr(char) username = lib3270_get_user_name();
59 53  
60   - ReportEvent(
61   - hEventLog,
62   - (rc == 0 ? EVENTLOG_INFORMATION_TYPE : EVENTLOG_ERROR_TYPE),
63   - 1,
64   - 0,
65   - NULL,
66   - 3,
67   - 0,
68   - outMsg,
69   - NULL
70   - );
  54 + const char *outMsg[] = {
  55 + username,
  56 + module,
  57 + msg
  58 + };
  59 +
  60 + #ifdef DEBUG
  61 + fprintf(stderr,"LOG(%s): %s\n",module,msg);
  62 + fflush(stderr);
  63 + #endif // DEBUG
  64 +
  65 + ReportEvent(
  66 + hEventLog,
  67 + (rc == 0 ? EVENTLOG_INFORMATION_TYPE : EVENTLOG_ERROR_TYPE),
  68 + 1,
  69 + 0,
  70 + NULL,
  71 + 3,
  72 + 0,
  73 + outMsg,
  74 + NULL
  75 + );
  76 +
  77 + }
71 78  
72 79 }
73 80  
... ...
src/testprogram/testprogram.c
  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 + *
  28 + */
1 29  
2 30 #include <stdio.h>
3 31 #include <string.h>
... ... @@ -36,6 +64,10 @@ static void online_group_state_changed(H3270 GNUC_UNUSED(*hSession), void GNUC_U
36 64  
37 65 int main(int argc, char *argv[])
38 66 {
  67 +#ifdef _WIN32
  68 + debug("Process %s running on pid %u\n",argv[0],(unsigned int) GetCurrentProcessId());
  69 +#endif // _WIN32
  70 +
39 71 #ifdef LC_ALL
40 72 setlocale( LC_ALL, "" );
41 73 #endif
... ... @@ -57,6 +89,8 @@ int main(int argc, char *argv[])
57 89 H3270 * h = lib3270_session_new("");
58 90 int rc = 0;
59 91  
  92 + lib3270_write_log(h,"TEST","Testprogram %s starts (%s)",argv[0],LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME));
  93 +
60 94 lib3270_autoptr(char) version_info = lib3270_get_version_info();
61 95 printf("3270 session %p created\n%s\n]",h,version_info);
62 96  
... ...