17619
|
1 |
diff -urN bugbuddy.orig/gnome-breakpad/gnome-breakpad.cc bugbuddy.new/gnome-breakpad/gnome-breakpad.cc
|
|
2 |
--- bugbuddy.orig/gnome-breakpad/gnome-breakpad.cc 2010-02-01 15:10:35.296459110 +0000
|
|
3 |
+++ bugbuddy.new/gnome-breakpad/gnome-breakpad.cc 2010-02-01 17:00:55.493486622 +0000
|
|
4 |
@@ -58,6 +58,9 @@
|
|
5 |
static void check_if_gdb ();
|
|
6 |
|
|
7 |
static gchar *bugbuddy;
|
|
8 |
+#if defined(sun) && defined(__SVR4)
|
|
9 |
+static gchar *solaris_bug_buddy_command[4];
|
|
10 |
+#endif
|
|
11 |
static GLogFunc old_handler = NULL;
|
|
12 |
|
|
13 |
typedef struct {
|
|
14 |
@@ -202,6 +205,31 @@
|
|
15 |
}
|
|
16 |
}
|
|
17 |
|
|
18 |
+#if defined(sun) && defined(__SVR4)
|
|
19 |
+static void
|
|
20 |
+run_bug_buddy_solaris ()
|
|
21 |
+{
|
|
22 |
+ int pid;
|
|
23 |
+ int w;
|
|
24 |
+ int status;
|
|
25 |
+
|
|
26 |
+ pid = fork ();
|
|
27 |
+ switch (pid) {
|
|
28 |
+ case 0:
|
|
29 |
+ execl (solaris_bug_buddy_command[0], solaris_bug_buddy_command[0],
|
|
30 |
+ solaris_bug_buddy_command[1], solaris_bug_buddy_command[2],
|
|
31 |
+ solaris_bug_buddy_command[3]);
|
|
32 |
+ break;
|
|
33 |
+ case -1:
|
|
34 |
+ _exit (1);
|
|
35 |
+ break;
|
|
36 |
+ default:
|
|
37 |
+ w = waitpid (pid, &status, 0);
|
|
38 |
+ break;
|
|
39 |
+ }
|
|
40 |
+}
|
|
41 |
+#endif
|
|
42 |
+
|
|
43 |
static void
|
|
44 |
bugbuddy_segv_handle(int signum)
|
|
45 |
{
|
|
46 |
@@ -221,7 +249,11 @@
|
|
47 |
_exit(1);
|
|
48 |
}
|
|
49 |
|
|
50 |
+#if defined(sun) && defined(__SVR4)
|
|
51 |
+ run_bug_buddy_solaris ();
|
|
52 |
+#else
|
|
53 |
check_if_gdb ();
|
|
54 |
+#endif
|
|
55 |
|
|
56 |
#ifdef ENABLE_GOOGLE_BREAKPAD
|
|
57 |
/* If we are here is because there are no debug symbols or gdb couldn't be run.
|
|
58 |
@@ -505,6 +537,15 @@
|
|
59 |
NULL, NULL, false);
|
|
60 |
#endif
|
|
61 |
|
|
62 |
+
|
|
63 |
+#if defined(sun) && defined(__SVR4)
|
|
64 |
+ solaris_bug_buddy_command[0] = bugbuddy;
|
|
65 |
+ solaris_bug_buddy_command[1] = g_strdup_printf ("--appname=%s",
|
|
66 |
+ g_get_prgname ());
|
|
67 |
+ solaris_bug_buddy_command[2] = g_strdup_printf ("--pid=%d", getpid ());
|
|
68 |
+ solaris_bug_buddy_command[3] = NULL;
|
|
69 |
+#endif
|
|
70 |
+
|
|
71 |
static struct sigaction *setptr;
|
|
72 |
static struct sigaction old_action;
|
|
73 |
struct sigaction sa;
|