diff options
author | Lucas Rocha <lucasr@gnome.org> | 2006-07-28 04:18:58 +0000 |
---|---|---|
committer | Lucas Almeida Rocha <lucasr@src.gnome.org> | 2006-07-28 04:18:58 +0000 |
commit | e46814b46ac4687de519dfdd0fd8f578cfa17946 (patch) | |
tree | 1946dc153dc837525460b117e13945795ed78299 /src | |
parent | 8af67dea6c4fe99e2c2248cd8cf1cba1adbf8dcb (diff) |
correctly stdin input for text info dialog (Fixes bug #336736).
2006-07-27 Lucas Rocha <lucasr@gnome.org>
* src/text.c (zenity_text_handle_stdin): correctly stdin input for
text info dialog (Fixes bug #336736).
Diffstat (limited to 'src')
-rw-r--r-- | src/text.c | 59 |
1 files changed, 26 insertions, 33 deletions
@@ -43,50 +43,43 @@ zenity_text_handle_stdin (GIOChannel *channel, buffer = GTK_TEXT_BUFFER (data); - if ((condition == G_IO_IN) || (condition == G_IO_IN + G_IO_HUP)) { + if ((condition & G_IO_IN) || (condition & (G_IO_IN | G_IO_HUP))) { GError *error = NULL; + gint status; while (channel->is_readable != TRUE) ; - do { - gint status; - - do { - status = g_io_channel_read_chars (channel, buf, 1024, &len, &error); - - while (gtk_events_pending ()) - gtk_main_iteration (); - } while (status == G_IO_STATUS_AGAIN); + do { + status = g_io_channel_read_chars (channel, buf, 1024, &len, &error); - if (status != G_IO_STATUS_NORMAL) { - if (error) { - g_warning ("zenity_text_handle_stdin () : %s", error->message); - g_error_free (error); - error = NULL; - } - continue; - } + while (gtk_events_pending ()) + gtk_main_iteration (); - if (len > 0) { - GtkTextIter end; - gchar *utftext; - gsize localelen; - gsize utflen; + } while (status == G_IO_STATUS_AGAIN); - gtk_text_buffer_get_end_iter (buffer, &end); - utftext = g_convert_with_fallback (buf, len, "UTF-8", "ISO-8859-1", NULL, &localelen, &utflen, NULL); - gtk_text_buffer_insert (buffer, &end, utftext, utflen); - g_free (utftext); + if (status != G_IO_STATUS_NORMAL) { + if (error) { + g_warning ("zenity_text_handle_stdin () : %s", error->message); + g_error_free (error); + error = NULL; } - - } while (g_io_channel_get_buffer_condition (channel) == G_IO_IN); + return FALSE; + } + + if (len > 0) { + GtkTextIter end; + gchar *utftext; + gsize localelen; + gsize utflen; + + gtk_text_buffer_get_end_iter (buffer, &end); + utftext = g_convert_with_fallback (buf, len, "UTF-8", "ISO-8859-1", NULL, &localelen, &utflen, NULL); + gtk_text_buffer_insert (buffer, &end, utftext, utflen); + g_free (utftext); + } } - if (condition != G_IO_IN) { - g_io_channel_shutdown (channel, TRUE, NULL); - return FALSE; - } return TRUE; } |