/* -*-c-*-
*
- * $Id: xcatch.c,v 1.7 1999/05/21 22:09:19 mdw Exp $
+ * $Id: xcatch.c,v 1.10 2004/04/08 01:36:29 mdw Exp $
*
* Catch input and trap it in an X window
*
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: xcatch.c,v $
- * Revision 1.7 1999/05/21 22:09:19 mdw
- * Take advantage of new dynamic string macros.
- *
- * Revision 1.6 1999/05/19 20:41:15 mdw
- * Track gratuitous change in mdwopt interface.
- *
- * Revision 1.5 1999/05/05 18:55:18 mdw
- * Block SIGCHLD around the `fork' call to prevent a race.
- *
- * Revision 1.4 1999/03/24 22:23:57 mdw
- * Improve display for large files. Keep newly added material in view if
- * scrolled to bottom of window.
- *
- * Revision 1.3 1998/12/20 17:19:16 mdw
- * Return exit status of child process, rather than always returning
- * success.
- *
- * Revision 1.2 1998/12/16 00:10:58 mdw
- * Fix tabbing in help text.
- *
- * Revision 1.1 1998/12/15 23:46:50 mdw
- * New program: captures input and puts it in a window.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include <errno.h>
static unsigned int flags;
-enum {
- f_closed = 1,
- f_bogus = 2
-};
+#define f_closed 1u
+#define f_bogus 2u
static GtkWidget *textbox = 0;
static GdkFont *font;
{
char buf[1024];
int doscroll = 1;
- GtkText *t;
- GtkAdjustment *va;
+ GtkText *t = 0;
+ GtkAdjustment *va = 0;
/* --- If not ready to read then go away --- */
if (r < 0) {
if (errno == EWOULDBLOCK)
break;
- msg(":~OK", "error reading data: %s", strerror(errno));
+ msg(QUIS, ":~OK", "error reading data: %s", strerror(errno));
exit(EXIT_FAILURE);
}
GtkWidget *w;
win = gtk_dialog_new();
+ gtk_window_set_policy(GTK_WINDOW(win), 1, 1, 0);
gtk_signal_connect(GTK_OBJECT(win), "destroy",
GTK_SIGNAL_FUNC(killwin), 0);
tbl = gtk_table_new(2, 2, 0);
gtk_container_border_width(GTK_CONTAINER(tbl), 8);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(win)->vbox), tbl, 1, 1, 0);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(win)->vbox), tbl, 1, 1, 1);
gtk_widget_show(tbl);
textbox = gtk_text_new(0, 0);
{
pid_t k;
int s;
+ int e = errno;
for (;;) {
k = waitpid(-1, &s, WNOHANG);
status = 127;
}
}
+ errno = e;
}
/* --- Main program --- */
{ "font", OPTF_ARGREQ, 0, 'F' },
{ 0, 0, 0, 0 }
};
- int i = mdwopt(argc, argv, "huvf:F:", opt, 0, 0, 0);
+ int i = mdwopt(argc, argv, "+huvf:F:", opt, 0, 0, 0);
if (i < 0)
break;
sa.sa_handler = reap;
sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
+ sa.sa_flags = SA_NOCLDSTOP;
+#ifdef SA_RESTART
+ sa.sa_flags |= SA_RESTART;
+#endif
sigaction(SIGCHLD, &sa, 0);
/* --- Start a child program --- */