Commit 14417e0ee8e9d051a74d3e58e27e837908456700
1 parent
2b12bc46
Exists in
master
and in
5 other branches
Corrigindo erro de charset no plugin ooRexx
Showing
6 changed files
with
32 additions
and
99 deletions
Show diff stats
pw3270.cbp
| @@ -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 "C" | @@ -523,6 +523,7 @@ extern "C" | ||
| 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); |