Wait for our child to exit before quitting. The prevents us from pulling

Fri Mar 12 10:53:10 1999  Owen Taylor  <otaylor@redhat.com>

	* capplets/theme-switcher/main.c (main): Wait for
	our child to exit before quitting. The prevents
	us from pulling the socket window out from under
	our child.

	* capplets/theme-switcher/demo.c (demo_main): Clean
	up some warnings about types in formats.

	* capplets/theme-switcher/demo.c (demo_main): Exit
	cleanly if read from parent fails - don't drop
	a core.
This commit is contained in:
Owen Taylor 1999-03-12 15:46:11 +00:00 committed by Owen Taylor
parent 4d6e8150b5
commit af81c4017f
8 changed files with 116 additions and 63 deletions

View file

@ -8,8 +8,8 @@ send_socket()
{
gchar buffer[256];
g_snprintf(buffer, sizeof(buffer), "%11x ",
GDK_WINDOW_XWINDOW (preview_socket->window));
g_snprintf(buffer, sizeof(buffer), "%11lx ",
(gulong)GDK_WINDOW_XWINDOW (preview_socket->window));
write(prog_fd, buffer, strlen(buffer));
}
@ -41,7 +41,7 @@ static void
demo_main(int argc, char **argv, gint in_fd)
{
gchar buf[256];
XID window;
Window window;
GtkWidget *widget, *table, *hbox;
GtkWidget *scrolled_window;
GSList *group;
@ -58,11 +58,11 @@ demo_main(int argc, char **argv, gint in_fd)
gint i;
if (read(in_fd, buf, 12) <= 0)
g_error ("Error reading socket descriptor from parent: %s",
g_strerror (errno));
/* Assume this means that our parent exited or was killed */
exit(0);
buf[12] = 0;
sscanf(buf, "%x", &window);
window = strtol (buf, NULL, 16);
fcntl(0, F_SETFL, O_NONBLOCK);
@ -161,7 +161,7 @@ demo_main(int argc, char **argv, gint in_fd)
gtk_main ();
}
void
gint
do_demo(int argc, char **argv)
{
gint toProg[2];
@ -173,15 +173,17 @@ do_demo(int argc, char **argv)
{
close(toProg[1]);
demo_main(argc, argv, toProg[0]);
exit(0);
}
else if (pid > 0)
{
close(toProg[0]);
prog_fd = toProg[1];
return pid;
}
else
{
/* baaaaaaaah eeeeek */
return -1;
}
}