diff --git a/src/lib3270/options.c b/src/lib3270/options.c
index b30efa8..5da612a 100644
--- a/src/lib3270/options.c
+++ b/src/lib3270/options.c
@@ -153,7 +153,7 @@ LIB3270_EXPORT LIB3270_OPTION lib3270_parse_host_type(const char *name)
int f;
- for(f=0;f<(sizeof(host_type)/sizeof(host_type[0]));f++)
+ for(f=0;host_type[f].name;f++)
{
if(!strcasecmp(host_type[f].name,name))
return host_type[f].option;
diff --git a/src/pw3270/window.c b/src/pw3270/window.c
index f8f0c67..ff22d78 100644
--- a/src/pw3270/window.c
+++ b/src/pw3270/window.c
@@ -294,8 +294,47 @@
LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name)
{
+ size_t f;
+ size_t sz;
+
g_return_if_fail(GTK_IS_PW3270(widget));
- v3270_set_host_type(GTK_PW3270(widget)->terminal,name);
+
+ int rc = v3270_set_host_type(GTK_PW3270(widget)->terminal,name);
+
+ if(!rc) {
+ return;
+ }
+
+ GtkWidget *popup = gtk_message_dialog_new_with_markup(
+ GTK_WINDOW(widget),
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE,
+ _( "Can't recognize \"%s\" as a valid host type" ), name);
+
+ gtk_window_set_title(GTK_WINDOW(popup),strerror(rc));
+
+ // Obtenho as opções válidas.
+ char text[4096];
+ const LIB3270_OPTION_ENTRY *host_type = lib3270_get_option_list();
+
+ *text = 0;
+ for(f=1;host_type[f].name;f++)
+ {
+ sz = strlen(text);
+ snprintf(text+sz,4095-sz,_( "%s%s for %s"), *text ? ", " : "",host_type[f].name,gettext(host_type[f].description));
+
+ }
+
+ sz = strlen(text);
+ snprintf(text+sz,4095-sz,_( " and %s for %s."),host_type[0].name,gettext(host_type[0].description));
+
+ gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(popup),_( "The known types are %s" ),text);
+
+ gtk_dialog_run(GTK_DIALOG(popup));
+
+ gtk_widget_destroy(popup);
+
+
}
LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short colortype)
--
libgit2 0.21.2