From: Matthias Clasen Date: Thu, 1 Oct 2009 15:41:17 +0000 (-0400) Subject: Move SIGPIPE suppression to gtk_init and document it X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=97d15954ad426ea792e1c237dfefe754614a0e9e;p=~andy%2Fgtk Move SIGPIPE suppression to gtk_init and document it Some people were unhappy with doing it deep inside the lpr print backend at an unpredictable time, and SIGPIPE is almost never wanted anyway. --- diff --git a/README.in b/README.in index bc2f857aa..84d6329e0 100644 --- a/README.in +++ b/README.in @@ -44,6 +44,11 @@ Release notes for 2.18 GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each GDK window, which might make problematic applications work better. +* GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore + SIGPIPE signals, since these are almost never wanted in graphical + applications. If you do need to handle SIGPIPE for some reason, reset + the handler after gtk_init(), but notice that other libraries (e.g. + libdbus or gvfs) might do similar things. Release notes for 2.16 ====================== diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index e47e1beab..2bbc96d22 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -686,6 +686,8 @@ do_post_parse_initialization (int *argc, gettext_initialization (); + signal (SIGPIPE, SIG_IGN); + if (g_fatal_warnings) { GLogLevelFlags fatal_mask; @@ -985,6 +987,15 @@ gtk_init_check (int *argc, * the GUI for some reason. If you want your program to fall back to a * textual interface you want to call gtk_init_check() instead. * + * + * + * Since 2.18, GTK+ calls signal (SIGPIPE, SIG_IGN) + * during initialization, to ignore SIGPIPE signals, since these are + * almost never wanted in graphical applications. If you do need to + * handle SIGPIPE for some reason, reset the handler after gtk_init(), + * but notice that other libraries (e.g. libdbus or gvfs) might do + * similar things. + * **/ void gtk_init (int *argc, char ***argv) diff --git a/modules/printbackends/lpr/gtkprintbackendlpr.c b/modules/printbackends/lpr/gtkprintbackendlpr.c index eeaaa994e..72d9c33e0 100644 --- a/modules/printbackends/lpr/gtkprintbackendlpr.c +++ b/modules/printbackends/lpr/gtkprintbackendlpr.c @@ -278,8 +278,6 @@ lpr_write (GIOChannel *source, { gsize bytes_written; - signal (SIGPIPE, SIG_IGN); - g_io_channel_write_chars (ps->in, buf, bytes_read,