18370N/Adiff -urN bugbuddy.orig/gnome-breakpad/gnome-breakpad.cc bugbuddy.new/gnome-breakpad/gnome-breakpad.cc
18370N/A--- bugbuddy.orig/gnome-breakpad/gnome-breakpad.cc 2010-02-01 15:10:35.296459110 +0000
18370N/A+++ bugbuddy.new/gnome-breakpad/gnome-breakpad.cc 2010-02-01 17:00:55.493486622 +0000
18370N/A@@ -58,6 +58,9 @@
18370N/A static void check_if_gdb ();
18370N/A
18370N/A static gchar *bugbuddy;
18370N/A+#if defined(sun) && defined(__SVR4)
18370N/A+static gchar *solaris_bug_buddy_command[4];
18370N/A+#endif
18370N/A static GLogFunc old_handler = NULL;
18370N/A
18370N/A typedef struct {
18370N/A@@ -202,6 +205,31 @@
18370N/A }
18370N/A }
18370N/A
18370N/A+#if defined(sun) && defined(__SVR4)
18370N/A+static void
18370N/A+run_bug_buddy_solaris ()
18370N/A+{
18370N/A+ int pid;
18370N/A+ int w;
18370N/A+ int status;
18370N/A+
18370N/A+ pid = fork ();
18370N/A+ switch (pid) {
18370N/A+ case 0:
18370N/A+ execl (solaris_bug_buddy_command[0], solaris_bug_buddy_command[0],
18370N/A+ solaris_bug_buddy_command[1], solaris_bug_buddy_command[2],
18370N/A+ solaris_bug_buddy_command[3]);
18370N/A+ break;
18370N/A+ case -1:
18370N/A+ _exit (1);
18370N/A+ break;
18370N/A+ default:
18370N/A+ w = waitpid (pid, &status, 0);
18370N/A+ break;
18370N/A+ }
18370N/A+}
18370N/A+#endif
18370N/A+
18370N/A static void
18370N/A bugbuddy_segv_handle(int signum)
18370N/A {
18370N/A@@ -221,7 +249,11 @@
18370N/A _exit(1);
18370N/A }
18370N/A
18370N/A+#if defined(sun) && defined(__SVR4)
18370N/A+ run_bug_buddy_solaris ();
18370N/A+#else
18370N/A check_if_gdb ();
18370N/A+#endif
18370N/A
18370N/A #ifdef ENABLE_GOOGLE_BREAKPAD
18370N/A /* If we are here is because there are no debug symbols or gdb couldn't be run.
18370N/A@@ -505,6 +537,15 @@
18370N/A NULL, NULL, false);
18370N/A #endif
18370N/A
18370N/A+
18370N/A+#if defined(sun) && defined(__SVR4)
18370N/A+ solaris_bug_buddy_command[0] = bugbuddy;
18370N/A+ solaris_bug_buddy_command[1] = g_strdup_printf ("--appname=%s",
18370N/A+ g_get_prgname ());
18370N/A+ solaris_bug_buddy_command[2] = g_strdup_printf ("--pid=%d", getpid ());
18370N/A+ solaris_bug_buddy_command[3] = NULL;
18370N/A+#endif
18370N/A+
18370N/A static struct sigaction *setptr;
18370N/A static struct sigaction old_action;
18370N/A struct sigaction sa;