Commit 14417e0ee8e9d051a74d3e58e27e837908456700

Authored by Perry Werneck
1 parent 2b12bc46

Corrigindo erro de charset no plugin ooRexx

pw3270.cbp
... ... @@ -416,7 +416,6 @@
416 416 <Unit filename="src/plugins/rx3270/sample/clipboard.rex" />
417 417 <Unit filename="src/plugins/rx3270/sample/object.rex" />
418 418 <Unit filename="src/plugins/rx3270/sample/remote.rex" />
419   - <Unit filename="src/plugins/rx3270/text.cc" />
420 419 <Unit filename="src/plugins/rx3270/typed_routines.cc" />
421 420 <Unit filename="src/pw3270/Makefile.in" />
422 421 <Unit filename="src/pw3270/actions.c">
... ...
src/classlib/session.cc
... ... @@ -472,10 +472,28 @@
472 472 }
473 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 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 497 #endif // HAVE_ICONV
480 498  
481 499 return rc;
... ...
src/lib3270/iocalls.c
... ... @@ -686,6 +686,8 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds)
686 686 {
687 687 time_t end = time(0)+seconds;
688 688  
  689 + event_dispatcher(hSession,0);
  690 +
689 691 if(!lib3270_lock_status(hSession))
690 692 return 0;
691 693  
... ...
src/plugins/rx3270/pluginmain.cc
... ... @@ -523,6 +523,7 @@ extern &quot;C&quot;
523 523 plugin::plugin(H3270 *hSession) : session()
524 524 {
525 525 this->hSession = hSession;
  526 + set_display_charset();
526 527 }
527 528  
528 529 plugin::~plugin()
... ...
src/plugins/rx3270/text.cc
... ... @@ -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 418 gtk_text_buffer_get_end_iter(hwnd->text,&itr);
419 419  
420 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 430 g_free(msg);
423 431  
424 432 gtk_text_buffer_get_end_iter(hwnd->text,&itr);
... ...