diff --git a/pw3270.cbp b/pw3270.cbp
index e44be4f..9cc05b9 100644
--- a/pw3270.cbp
+++ b/pw3270.cbp
@@ -416,7 +416,6 @@
-
diff --git a/src/classlib/session.cc b/src/classlib/session.cc
index 9a4c168..5f4c279 100644
--- a/src/classlib/session.cc
+++ b/src/classlib/session.cc
@@ -472,10 +472,28 @@
}
else
{
- rc = str;
+ char * text = strdup(str);
+ for(char *ptr = text;*ptr;ptr++)
+ {
+ if(*ptr < ' ' || *ptr > 128)
+ {
+ *ptr = '?';
+ }
+ }
+ rc = text;
+ free(text);
}
#else
- rc = str;
+ char * text = strdup(str);
+ for(char *ptr = text;*ptr;ptr++)
+ {
+ if(*ptr < ' ' || *ptr > 128)
+ {
+ *ptr = '?';
+ }
+ }
+ rc = text;
+ free(text);
#endif // HAVE_ICONV
return rc;
diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c
index d8f9fe8..945c19e 100644
--- a/src/lib3270/iocalls.c
+++ b/src/lib3270/iocalls.c
@@ -686,6 +686,8 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds)
{
time_t end = time(0)+seconds;
+ event_dispatcher(hSession,0);
+
if(!lib3270_lock_status(hSession))
return 0;
diff --git a/src/plugins/rx3270/pluginmain.cc b/src/plugins/rx3270/pluginmain.cc
index b5548e6..478eb4c 100644
--- a/src/plugins/rx3270/pluginmain.cc
+++ b/src/plugins/rx3270/pluginmain.cc
@@ -523,6 +523,7 @@ extern "C"
plugin::plugin(H3270 *hSession) : session()
{
this->hSession = hSession;
+ set_display_charset();
}
plugin::~plugin()
diff --git a/src/plugins/rx3270/text.cc b/src/plugins/rx3270/text.cc
deleted file mode 100644
index 1d7c141..0000000
--- a/src/plugins/rx3270/text.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
- * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
- * aplicativos mainframe. Registro no INPI sob o nome G3270.
- *
- * Copyright (C) <2008>
- *
- * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
- * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
- * Free Software Foundation.
- *
- * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
- * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
- * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
- * obter mais detalhes.
- *
- * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
- * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA, 02111-1307, USA
- *
- * Este programa está nomeado como text.cc e possui - linhas de código.
- *
- * Contatos:
- *
- * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
- * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
- *
- */
-
- #include "rx3270.h"
- #include
-
- #include
-
-/*--[ Implement ]------------------------------------------------------------------------------------*/
-
-char * rx3270::get_3270_string(const char *str)
-{
-#ifdef HAVE_ICONV
- if(conv2Host != (iconv_t)(-1))
- {
- size_t in = strlen((char *) str);
- size_t out = (in << 1);
- char *ptr;
- char *buffer = (char *) malloc(out);
- char *ret;
-
- memset(ptr=buffer,0,out);
-
- iconv(conv2Host,NULL,NULL,NULL,NULL); // Reset state
-
- if(iconv(conv2Host,(ICONV_CONST char **) &str,&in,&ptr,&out) == ((size_t) -1))
- ret = strdup((char *) str);
- else
- ret = strdup(buffer);
-
- free(buffer);
-
- return ret;
- }
-#endif // HAVE_ICONV
-
- return strdup(str);
-}
-
-char * rx3270::get_local_string(const char *str)
-{
-#ifdef HAVE_ICONV
- if(conv2Local != (iconv_t)(-1))
- {
- size_t in = strlen((char *) str);
- size_t out = (in << 1);
- char *ptr;
- char *buffer = (char *) malloc(out);
- char *ret;
-
- memset(ptr=buffer,0,out);
-
- iconv(conv2Local,NULL,NULL,NULL,NULL); // Reset state
-
- if(iconv(conv2Local,(ICONV_CONST char **) &str,&in,&ptr,&out) == ((size_t) -1))
- ret = strdup((char *) str);
- else
- ret = strdup(buffer);
-
- free(buffer);
-
- return ret;
- }
-#endif // HAVE_ICONV
-
- return strdup(str);
-}
-
-
diff --git a/src/pw3270/trace.c b/src/pw3270/trace.c
index 2951543..7b61cec 100644
--- a/src/pw3270/trace.c
+++ b/src/pw3270/trace.c
@@ -418,7 +418,15 @@ static void destroy(GtkObject *widget)
gtk_text_buffer_get_end_iter(hwnd->text,&itr);
msg = g_strdup_vprintf(fmt,args);
- gtk_text_buffer_insert(hwnd->text,&itr,msg,strlen(msg));
+
+ if(g_utf8_validate(msg,strlen(msg),NULL))
+ {
+ gtk_text_buffer_insert(hwnd->text,&itr,msg,strlen(msg));
+ }
+ else
+ {
+ gtk_text_buffer_insert(hwnd->text,&itr,"** Invalid UTF8 String **",-1);
+ }
g_free(msg);
gtk_text_buffer_get_end_iter(hwnd->text,&itr);
--
libgit2 0.21.2