Commit 14417e0ee8e9d051a74d3e58e27e837908456700

Authored by Perry Werneck
1 parent 2b12bc46

Corrigindo erro de charset no plugin ooRexx

@@ -416,7 +416,6 @@ @@ -416,7 +416,6 @@
416 <Unit filename="src/plugins/rx3270/sample/clipboard.rex" /> 416 <Unit filename="src/plugins/rx3270/sample/clipboard.rex" />
417 <Unit filename="src/plugins/rx3270/sample/object.rex" /> 417 <Unit filename="src/plugins/rx3270/sample/object.rex" />
418 <Unit filename="src/plugins/rx3270/sample/remote.rex" /> 418 <Unit filename="src/plugins/rx3270/sample/remote.rex" />
419 - <Unit filename="src/plugins/rx3270/text.cc" />  
420 <Unit filename="src/plugins/rx3270/typed_routines.cc" /> 419 <Unit filename="src/plugins/rx3270/typed_routines.cc" />
421 <Unit filename="src/pw3270/Makefile.in" /> 420 <Unit filename="src/pw3270/Makefile.in" />
422 <Unit filename="src/pw3270/actions.c"> 421 <Unit filename="src/pw3270/actions.c">
src/classlib/session.cc
@@ -472,10 +472,28 @@ @@ -472,10 +472,28 @@
472 } 472 }
473 else 473 else
474 { 474 {
475 - rc = str; 475 + char * text = strdup(str);
  476 + for(char *ptr = text;*ptr;ptr++)
  477 + {
  478 + if(*ptr < ' ' || *ptr > 128)
  479 + {
  480 + *ptr = '?';
  481 + }
  482 + }
  483 + rc = text;
  484 + free(text);
476 } 485 }
477 #else 486 #else
478 - rc = str; 487 + char * text = strdup(str);
  488 + for(char *ptr = text;*ptr;ptr++)
  489 + {
  490 + if(*ptr < ' ' || *ptr > 128)
  491 + {
  492 + *ptr = '?';
  493 + }
  494 + }
  495 + rc = text;
  496 + free(text);
479 #endif // HAVE_ICONV 497 #endif // HAVE_ICONV
480 498
481 return rc; 499 return rc;
src/lib3270/iocalls.c
@@ -686,6 +686,8 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds) @@ -686,6 +686,8 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds)
686 { 686 {
687 time_t end = time(0)+seconds; 687 time_t end = time(0)+seconds;
688 688
  689 + event_dispatcher(hSession,0);
  690 +
689 if(!lib3270_lock_status(hSession)) 691 if(!lib3270_lock_status(hSession))
690 return 0; 692 return 0;
691 693
src/plugins/rx3270/pluginmain.cc
@@ -523,6 +523,7 @@ extern &quot;C&quot; @@ -523,6 +523,7 @@ extern &quot;C&quot;
523 plugin::plugin(H3270 *hSession) : session() 523 plugin::plugin(H3270 *hSession) : session()
524 { 524 {
525 this->hSession = hSession; 525 this->hSession = hSession;
  526 + set_display_charset();
526 } 527 }
527 528
528 plugin::~plugin() 529 plugin::~plugin()
src/plugins/rx3270/text.cc
@@ -1,95 +0,0 @@ @@ -1,95 +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 text.cc e possui - linhas de código.  
22 - *  
23 - * Contatos:  
24 - *  
25 - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)  
26 - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)  
27 - *  
28 - */  
29 -  
30 - #include "rx3270.h"  
31 - #include <lib3270/actions.h>  
32 -  
33 - #include <string.h>  
34 -  
35 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
36 -  
37 -char * rx3270::get_3270_string(const char *str)  
38 -{  
39 -#ifdef HAVE_ICONV  
40 - if(conv2Host != (iconv_t)(-1))  
41 - {  
42 - size_t in = strlen((char *) str);  
43 - size_t out = (in << 1);  
44 - char *ptr;  
45 - char *buffer = (char *) malloc(out);  
46 - char *ret;  
47 -  
48 - memset(ptr=buffer,0,out);  
49 -  
50 - iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state  
51 -  
52 - if(iconv(conv2Host,(ICONV_CONST char **) &str,&in,&ptr,&out) == ((size_t) -1))  
53 - ret = strdup((char *) str);  
54 - else  
55 - ret = strdup(buffer);  
56 -  
57 - free(buffer);  
58 -  
59 - return ret;  
60 - }  
61 -#endif // HAVE_ICONV  
62 -  
63 - return strdup(str);  
64 -}  
65 -  
66 -char * rx3270::get_local_string(const char *str)  
67 -{  
68 -#ifdef HAVE_ICONV  
69 - if(conv2Local != (iconv_t)(-1))  
70 - {  
71 - size_t in = strlen((char *) str);  
72 - size_t out = (in << 1);  
73 - char *ptr;  
74 - char *buffer = (char *) malloc(out);  
75 - char *ret;  
76 -  
77 - memset(ptr=buffer,0,out);  
78 -  
79 - iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state  
80 -  
81 - if(iconv(conv2Local,(ICONV_CONST char **) &str,&in,&ptr,&out) == ((size_t) -1))  
82 - ret = strdup((char *) str);  
83 - else  
84 - ret = strdup(buffer);  
85 -  
86 - free(buffer);  
87 -  
88 - return ret;  
89 - }  
90 -#endif // HAVE_ICONV  
91 -  
92 - return strdup(str);  
93 -}  
94 -  
95 -  
src/pw3270/trace.c
@@ -418,7 +418,15 @@ static void destroy(GtkObject *widget) @@ -418,7 +418,15 @@ static void destroy(GtkObject *widget)
418 gtk_text_buffer_get_end_iter(hwnd->text,&itr); 418 gtk_text_buffer_get_end_iter(hwnd->text,&itr);
419 419
420 msg = g_strdup_vprintf(fmt,args); 420 msg = g_strdup_vprintf(fmt,args);
421 - gtk_text_buffer_insert(hwnd->text,&itr,msg,strlen(msg)); 421 +
  422 + if(g_utf8_validate(msg,strlen(msg),NULL))
  423 + {
  424 + gtk_text_buffer_insert(hwnd->text,&itr,msg,strlen(msg));
  425 + }
  426 + else
  427 + {
  428 + gtk_text_buffer_insert(hwnd->text,&itr,"** Invalid UTF8 String **",-1);
  429 + }
422 g_free(msg); 430 g_free(msg);
423 431
424 gtk_text_buffer_get_end_iter(hwnd->text,&itr); 432 gtk_text_buffer_get_end_iter(hwnd->text,&itr);