Sat, 02 Jan 2021 22:05:09 -0600
Remove the buddy pounces api
This feature has more or less been stalkerware since its inception and the
only useful feature that came of it was offline message emulation which isn't
necessary for most networks nowadays.
Testing Done:
Compiled and ran locally.
Reviewed at https://reviews.imfreedom.org/r/322/
| 10302 | 1 | /* |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
2 | * pidgin |
| 10302 | 3 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
4 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 10302 | 5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 6 | * source distribution. | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19840
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 10302 | 21 | * |
| 22 | */ | |
| 23 | ||
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
24 | #ifdef HAVE_CONFIG_H |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
25 | # include <config.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
26 | #endif |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
27 | |
|
40462
24ed25d87550
Fix some issues on macos that resulted from the internal.h cleanup
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
28 | #include <errno.h> |
|
24ed25d87550
Fix some issues on macos that resulted from the internal.h cleanup
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
29 | |
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
30 | #include <glib/gi18n-lib.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
31 | #include <glib/gstdio.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
32 | |
|
39372
43e3da39daf6
Include 'locale.h' directly in files which use setlocale()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39365
diff
changeset
|
33 | #include <locale.h> |
| 10302 | 34 | |
|
40360
e21f3bbcc2a5
Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents:
40337
diff
changeset
|
35 | #include <purple.h> |
| 10302 | 36 | |
| 37 | #include "gtkaccount.h" | |
| 38 | #include "gtkblist.h" | |
| 39 | #include "gtkconn.h" | |
|
34910
60502558e400
Replacements for the GObject Xfer API
Ankit Vani <a@nevitus.org>
parents:
34892
diff
changeset
|
40 | #include "gtkxfer.h" |
|
11907
de3ea77afe3c
[gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
11906
diff
changeset
|
41 | #include "gtkidle.h" |
|
26269
cacc598079e4
Separate PidginMedia from PidginConversation.
Michael Ruprecht <maiku@pidgin.im>
parents:
24585
diff
changeset
|
42 | #include "gtkmedia.h" |
| 10302 | 43 | #include "gtknotify.h" |
| 44 | #include "gtkprefs.h" | |
| 45 | #include "gtkprivacy.h" | |
| 46 | #include "gtkrequest.h" | |
| 47 | #include "gtkroomlist.h" | |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
48 | #include "gtksavedstatuses.h" |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35605
diff
changeset
|
49 | #include "gtksmiley-theme.h" |
| 10302 | 50 | #include "gtkutils.h" |
|
11475
1e222e6e52a0
[gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
11403
diff
changeset
|
51 | #include "gtkwhiteboard.h" |
|
40553
892459990bb7
Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
40531
diff
changeset
|
52 | #include "pidginapplication.h" |
|
40496
6941fece679b
phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents:
40462
diff
changeset
|
53 | #include "pidgincore.h" |
|
39152
37144ff35a91
Rename gtkdebug -> pidgindebug.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39036
diff
changeset
|
54 | #include "pidgindebug.h" |
|
39603
98fd85e156e0
Rename gtklog -> pidginlog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39574
diff
changeset
|
55 | #include "pidginlog.h" |
|
40222
40f2888f85c1
delete gtkplugin.[ch] and deal with the repercussions
Gary Kramlich <grim@reaperworld.com>
parents:
40203
diff
changeset
|
56 | #include "pidginplugininfo.h" |
|
40f2888f85c1
delete gtkplugin.[ch] and deal with the repercussions
Gary Kramlich <grim@reaperworld.com>
parents:
40203
diff
changeset
|
57 | #include "pidginstock.h" |
| 10302 | 58 | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
59 | #ifndef _WIN32 |
|
38047
312be70f9de6
Remove AC_HEADER_STDC and related C89 tests.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37998
diff
changeset
|
60 | #include <signal.h> |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
61 | #endif |
| 10302 | 62 | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
63 | #ifndef _WIN32 |
| 10302 | 64 | |
| 65 | /* | |
| 66 | * Lists of signals we wish to catch and those we wish to ignore. | |
| 67 | * Each list terminated with -1 | |
| 68 | */ | |
|
21091
07fe1a99c47b
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@pidgin.im>
parents:
20791
diff
changeset
|
69 | static const int catch_sig_list[] = { |
| 10302 | 70 | SIGSEGV, |
| 71 | SIGINT, | |
| 72 | SIGTERM, | |
| 73 | SIGQUIT, | |
|
34293
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
74 | SIGCHLD, |
| 10302 | 75 | -1 |
| 76 | }; | |
| 77 | ||
|
21091
07fe1a99c47b
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@pidgin.im>
parents:
20791
diff
changeset
|
78 | static const int ignore_sig_list[] = { |
| 10302 | 79 | SIGPIPE, |
| 80 | -1 | |
| 81 | }; | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
82 | #endif /* !_WIN32 */ |
| 10302 | 83 | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
84 | #ifndef _WIN32 |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
85 | static char *segfault_message; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
86 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
87 | static guint signal_channel_watcher; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
88 | |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
89 | static int signal_sockets[2]; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
90 | |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
91 | static void sighandler(int sig); |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
92 | |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
93 | static void sighandler(int sig) |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
94 | { |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
95 | ssize_t written; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
96 | |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
97 | /* |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
98 | * We won't do any of the heavy lifting for the signal handling here |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
99 | * because we have no idea what was interrupted. Previously this signal |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
100 | * handler could result in some calls to malloc/free, which can cause |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
101 | * deadlock in libc when the signal handler was interrupting a previous |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
102 | * malloc or free. So instead we'll do an ugly hack where we write the |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
103 | * signal number to one end of a socket pair. The other half of the |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
104 | * socket pair is watched by our main loop. When the main loop sees new |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
105 | * data on the socket it reads in the signal and performs the appropriate |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
106 | * action without fear of interrupting stuff. |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
107 | */ |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
108 | if (sig == SIGSEGV) { |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
109 | fprintf(stderr, "%s", segfault_message); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
110 | abort(); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
111 | return; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
112 | } |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
113 | |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
114 | written = write(signal_sockets[0], &sig, sizeof(int)); |
|
40133
b86418d6eb94
Remove redundant comparisons in conditions
qarkai <qarkai@gmail.com>
parents:
40094
diff
changeset
|
115 | if (written != sizeof(int)) { |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
116 | /* This should never happen */ |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
117 | purple_debug_error("sighandler", "Received signal %d but only " |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
118 | "wrote %" G_GSSIZE_FORMAT " bytes out of %" |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
119 | G_GSIZE_FORMAT ": %s\n", |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
120 | sig, written, sizeof(int), g_strerror(errno)); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
121 | exit(1); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
122 | } |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
123 | } |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
124 | |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
125 | static gboolean |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
126 | mainloop_sighandler(GIOChannel *source, GIOCondition cond, gpointer data) |
| 10302 | 127 | { |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
128 | GIOStatus stat; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
129 | int sig; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
130 | gsize bytes_read; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
131 | GError *error = NULL; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
132 | |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
133 | /* read the signal number off of the io channel */ |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
134 | stat = g_io_channel_read_chars(source, (gchar *)&sig, sizeof(int), |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
135 | &bytes_read, &error); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
136 | if (stat != G_IO_STATUS_NORMAL) { |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
137 | purple_debug_error("sighandler", "Signal callback failed to read " |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
138 | "from signal socket: %s", error->message); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
139 | purple_core_quit(); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
140 | return FALSE; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
141 | } |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
142 | |
|
34293
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
143 | switch (sig) { |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
144 | case SIGCHLD: |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
145 | /* Restore signal catching */ |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
146 | signal(SIGCHLD, sighandler); |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
147 | break; |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
148 | default: |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
149 | purple_debug_warning("sighandler", "Caught signal %d\n", sig); |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
150 | purple_core_quit(); |
|
c1da9082287f
Fix a crash in case of Ctrl+C while booting (it's fork related)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33955
diff
changeset
|
151 | } |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
152 | |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
153 | return TRUE; |
| 10302 | 154 | } |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
155 | #endif /* !_WIN32 */ |
| 10302 | 156 | |
| 157 | static void | |
| 158 | debug_init(void) | |
| 159 | { | |
|
38645
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
160 | PidginDebugUi *ui = pidgin_debug_ui_new(); |
|
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
161 | purple_debug_set_ui(PURPLE_DEBUG_UI(ui)); |
| 10302 | 162 | } |
| 163 | ||
| 164 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
165 | pidgin_ui_init(void) |
| 10302 | 166 | { |
|
39036
ced50832d0c7
libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents:
39014
diff
changeset
|
167 | gchar *path; |
|
ced50832d0c7
libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents:
39014
diff
changeset
|
168 | |
|
ced50832d0c7
libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents:
39014
diff
changeset
|
169 | path = g_build_filename(PURPLE_DATADIR, "pidgin", "icons", NULL); |
|
40601
228284223862
Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
170 | gtk_icon_theme_prepend_search_path(gtk_icon_theme_get_default(), path); |
|
228284223862
Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
40600
diff
changeset
|
171 | gtk_icon_theme_add_resource_path(gtk_icon_theme_get_default(), path); |
|
39036
ced50832d0c7
libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents:
39014
diff
changeset
|
172 | g_free(path); |
|
ced50832d0c7
libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents:
39014
diff
changeset
|
173 | |
|
22481
d8a9e927c90f
Initialize the stock stuff before doing anything else so that stock items used in error messages are ready to be used. Fixes #4917.
Daniel Atallah <datallah@pidgin.im>
parents:
22187
diff
changeset
|
174 | pidgin_stock_init(); |
|
d8a9e927c90f
Initialize the stock stuff before doing anything else so that stock items used in error messages are ready to be used. Fixes #4917.
Daniel Atallah <datallah@pidgin.im>
parents:
22187
diff
changeset
|
175 | |
| 10302 | 176 | /* Set the UI operation structures. */ |
| 15884 | 177 | purple_accounts_set_ui_ops(pidgin_accounts_get_ui_ops()); |
| 178 | purple_xfers_set_ui_ops(pidgin_xfers_get_ui_ops()); | |
|
39693
86f5c1fef140
Convert UI ops to PurpleBuddyListClass methods.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39603
diff
changeset
|
179 | purple_blist_set_ui(PIDGIN_TYPE_BUDDY_LIST); |
| 15884 | 180 | purple_notify_set_ui_ops(pidgin_notify_get_ui_ops()); |
| 181 | purple_request_set_ui_ops(pidgin_request_get_ui_ops()); | |
| 182 | purple_connections_set_ui_ops(pidgin_connections_get_ui_ops()); | |
| 183 | purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops()); | |
| 184 | purple_idle_set_ui_ops(pidgin_idle_get_ui_ops()); | |
| 10302 | 185 | |
|
34587
a3bc28bb4ef5
Refactored pidgin to use the GObject-based PurpleAccount API
Ankit Vani <a@nevitus.org>
parents:
33955
diff
changeset
|
186 | pidgin_accounts_init(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
187 | pidgin_connection_init(); |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34308
diff
changeset
|
188 | pidgin_request_init(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
189 | pidgin_blist_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
190 | pidgin_status_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
191 | pidgin_conversations_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
192 | pidgin_privacy_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
193 | pidgin_xfers_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
194 | pidgin_roomlist_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
195 | pidgin_log_init(); |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35756
diff
changeset
|
196 | _pidgin_smiley_theme_init(); |
|
26269
cacc598079e4
Separate PidginMedia from PidginConversation.
Michael Ruprecht <maiku@pidgin.im>
parents:
24585
diff
changeset
|
197 | pidgin_medias_init(); |
|
27476
d44640cb5686
Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
198 | pidgin_notify_init(); |
| 10302 | 199 | } |
| 200 | ||
| 201 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
202 | pidgin_quit(void) |
| 10302 | 203 | { |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
204 | /* Uninit */ |
|
38645
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
205 | PurpleDebugUi *ui; |
|
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
206 | |
|
27476
d44640cb5686
Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
207 | pidgin_notify_uninit(); |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35756
diff
changeset
|
208 | _pidgin_smiley_theme_uninit(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
209 | pidgin_conversations_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
210 | pidgin_status_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
211 | pidgin_blist_uninit(); |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34308
diff
changeset
|
212 | pidgin_request_uninit(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
213 | pidgin_connection_uninit(); |
|
34587
a3bc28bb4ef5
Refactored pidgin to use the GObject-based PurpleAccount API
Ankit Vani <a@nevitus.org>
parents:
33955
diff
changeset
|
214 | pidgin_accounts_uninit(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
215 | pidgin_xfers_uninit(); |
|
38645
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
216 | ui = purple_debug_get_ui(); |
|
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
217 | purple_debug_set_ui(NULL); |
|
bf3f91939dc5
Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38578
diff
changeset
|
218 | g_object_unref(ui); |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
219 | |
| 10302 | 220 | /* and end it all... */ |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
221 | g_application_quit(g_application_get_default()); |
| 10302 | 222 | } |
| 223 | ||
|
40336
4e766d681de5
purple_core_get_ui_info now transfers the PurpleUiInfo to the caller, so we need to make sure to not cache it.
Gary Kramlich <grim@reaperworld.com>
parents:
40312
diff
changeset
|
224 | static PurpleUiInfo * |
|
4e766d681de5
purple_core_get_ui_info now transfers the PurpleUiInfo to the caller, so we need to make sure to not cache it.
Gary Kramlich <grim@reaperworld.com>
parents:
40312
diff
changeset
|
225 | pidgin_ui_get_info(void) { |
|
4e766d681de5
purple_core_get_ui_info now transfers the PurpleUiInfo to the caller, so we need to make sure to not cache it.
Gary Kramlich <grim@reaperworld.com>
parents:
40312
diff
changeset
|
226 | return purple_ui_info_new(PIDGIN_NAME, VERSION, "https://pidgin.im", |
|
40337
917a228d6268
Fix some issues found in review
Gary Kramlich <grim@reaperworld.com>
parents:
40336
diff
changeset
|
227 | "https://developer.pidgin.im", "pc"); |
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
228 | } |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
229 | |
| 15884 | 230 | static PurpleCoreUiOps core_ops = |
| 10302 | 231 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
232 | pidgin_prefs_init, |
| 10302 | 233 | debug_init, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
234 | pidgin_ui_init, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16545
diff
changeset
|
235 | pidgin_quit, |
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
236 | pidgin_ui_get_info, |
| 10302 | 237 | }; |
| 238 | ||
|
40553
892459990bb7
Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
40531
diff
changeset
|
239 | PurpleCoreUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
240 | pidgin_core_get_ui_ops(void) |
| 10302 | 241 | { |
| 242 | return &core_ops; | |
| 243 | } | |
| 244 | ||
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
245 | #ifndef _WIN32 |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
246 | static void |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
247 | pidgin_setup_error_handler(void) |
| 10302 | 248 | { |
| 249 | int sig_indx; /* for setting up signal catching */ | |
| 250 | sigset_t sigset; | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
251 | char errmsg[BUFSIZ]; |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
252 | GIOChannel *signal_channel; |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
253 | GIOStatus signal_status; |
|
39365
af69ee5abbf2
pidgin: Fix compiling with -Dconsole-logging=true
Mike Ruprecht <cmaiku@gmail.com>
parents:
39335
diff
changeset
|
254 | GError *error = NULL; |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
255 | char *segfault_message_tmp; |
| 10302 | 256 | |
|
40531
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
257 | /* We translate this here in case the crash breaks gettext. */ |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
258 | segfault_message_tmp = g_strdup_printf(_( |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
259 | "%s %s has segfaulted and attempted to dump a core file.\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
260 | "This is a bug in the software and has happened through\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
261 | "no fault of your own.\n\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
262 | "If you can reproduce the crash, please notify the developers\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
263 | "by reporting a bug at:\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
264 | "%snewissue\n\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
265 | "Please make sure to specify what you were doing at the time\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
266 | "and post the backtrace from the core file. If you do not know\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
267 | "how to get the backtrace, please read the instructions at\n" |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
268 | "https://developer.pidgin.im/wiki/GetABacktrace\n"), |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
269 | PIDGIN_NAME, DISPLAY_VERSION, PURPLE_WEBSITE |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
270 | ); |
|
13587
fb0245a7ccab
[gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents:
13429
diff
changeset
|
271 | |
|
40531
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
272 | /* we have to convert the message (UTF-8 to console |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
273 | charset) early because after a segmentation fault |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
274 | it's not a good practice to allocate memory */ |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
275 | segfault_message = g_locale_from_utf8(segfault_message_tmp, -1, NULL, NULL, |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
276 | &error); |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
277 | if(segfault_message != NULL) { |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
278 | g_free(segfault_message_tmp); |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
279 | } else { |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
280 | /* use 'segfault_message_tmp' (UTF-8) as a fallback */ |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
281 | g_warning("%s\n", error->message); |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
282 | g_clear_error(&error); |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
283 | segfault_message = segfault_message_tmp; |
|
ed47469c4311
Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents:
40509
diff
changeset
|
284 | } |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
285 | |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
286 | /* |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
287 | * Create a socket pair for receiving unix signals from a signal |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
288 | * handler. |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
289 | */ |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
290 | if (socketpair(AF_UNIX, SOCK_STREAM, 0, signal_sockets) < 0) { |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
291 | perror("Failed to create sockets for GLib signal handling"); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
292 | exit(1); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
293 | } |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
294 | signal_channel = g_io_channel_unix_new(signal_sockets[1]); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
295 | |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
296 | /* |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
297 | * Set the channel encoding to raw binary instead of the default of |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
298 | * UTF-8, because we'll be sending integers across instead of strings. |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
299 | */ |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
300 | signal_status = g_io_channel_set_encoding(signal_channel, NULL, &error); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
301 | if (signal_status != G_IO_STATUS_NORMAL) { |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
302 | fprintf(stderr, "Failed to set the signal channel to raw " |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
303 | "binary: %s", error->message); |
|
38607
51b50879b5c9
libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents:
38578
diff
changeset
|
304 | g_clear_error(&error); |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
305 | exit(1); |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
306 | } |
|
29991
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
307 | signal_channel_watcher = g_io_add_watch(signal_channel, G_IO_IN, mainloop_sighandler, NULL); |
|
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
308 | g_io_channel_unref(signal_channel); |
|
28820
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
309 | |
| 10302 | 310 | /* Let's not violate any PLA's!!!! */ |
| 311 | /* jseymour: whatever the fsck that means */ | |
| 312 | /* Robot101: for some reason things like gdm like to block * | |
| 313 | * useful signals like SIGCHLD, so we unblock all the ones we * | |
| 314 | * declare a handler for. thanks JSeymour and Vann. */ | |
| 315 | if (sigemptyset(&sigset)) { | |
|
40094
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
316 | g_snprintf(errmsg, sizeof(errmsg), |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
317 | "Warning: couldn't initialise empty signal set"); |
| 10302 | 318 | perror(errmsg); |
| 319 | } | |
| 320 | for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) { | |
|
33794
716cbef8d1c6
Fix a number of additional trivial issues - unused variables, etc.
Daniel Atallah <datallah@pidgin.im>
parents:
33371
diff
changeset
|
321 | if(signal(catch_sig_list[sig_indx], sighandler) == SIG_ERR) { |
|
40094
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
322 | g_snprintf(errmsg, sizeof(errmsg), |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
323 | "Warning: couldn't set signal %d for catching", |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
324 | catch_sig_list[sig_indx]); |
| 10302 | 325 | perror(errmsg); |
| 326 | } | |
| 327 | if(sigaddset(&sigset, catch_sig_list[sig_indx])) { | |
|
40094
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
328 | g_snprintf(errmsg, sizeof(errmsg), |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
329 | "Warning: couldn't include signal %d for unblocking", |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
330 | catch_sig_list[sig_indx]); |
| 10302 | 331 | perror(errmsg); |
| 332 | } | |
| 333 | } | |
| 334 | for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) { | |
|
33794
716cbef8d1c6
Fix a number of additional trivial issues - unused variables, etc.
Daniel Atallah <datallah@pidgin.im>
parents:
33371
diff
changeset
|
335 | if(signal(ignore_sig_list[sig_indx], SIG_IGN) == SIG_ERR) { |
|
40094
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
336 | g_snprintf(errmsg, sizeof(errmsg), |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
337 | "Warning: couldn't set signal %d to ignore", |
|
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
338 | ignore_sig_list[sig_indx]); |
| 10302 | 339 | perror(errmsg); |
| 340 | } | |
| 341 | } | |
| 342 | ||
| 343 | if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) { | |
|
40094
8e6d91e4dd8f
Use g_(v)snprintf so we need less wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39954
diff
changeset
|
344 | g_snprintf(errmsg, sizeof(errmsg), "Warning: couldn't unblock signals"); |
| 10302 | 345 | perror(errmsg); |
|
10307
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
346 | } |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
347 | } |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
348 | #endif /* !_WIN32 */ |
| 10302 | 349 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
350 | int pidgin_start(int argc, char *argv[]) |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
351 | { |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
352 | GApplication *app; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
353 | int ret; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
354 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
355 | #ifdef DEBUG |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
356 | purple_debug_set_enabled(TRUE); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
357 | #endif |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
358 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
359 | bindtextdomain(PACKAGE, PURPLE_LOCALEDIR); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
360 | bind_textdomain_codeset(PACKAGE, "UTF-8"); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
361 | textdomain(PACKAGE); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
362 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
363 | /* Locale initialization is not complete here. See gtk_init_check() */ |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
364 | setlocale(LC_ALL, ""); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
365 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
366 | #ifndef _WIN32 |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
367 | pidgin_setup_error_handler(); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
368 | #endif |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
369 | |
|
40553
892459990bb7
Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
40531
diff
changeset
|
370 | app = pidgin_application_new(); |
|
40600
46d10c72c137
Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents:
40553
diff
changeset
|
371 | g_application_set_default(app); |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
372 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
373 | ret = g_application_run(app, argc, argv); |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
374 | |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
375 | /* Make sure purple has quit in case something in GApplication |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
376 | * has caused g_application_run() to finish on its own. This can |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
377 | * happen, for example, if the desktop session is ending. |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
378 | */ |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
379 | if (purple_get_core() != NULL) { |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
380 | purple_core_quit(); |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
381 | } |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
382 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
383 | if (g_application_get_is_registered(app) && |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
384 | g_application_get_is_remote(app)) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39857
diff
changeset
|
385 | g_printerr("%s\n", _("Exiting because another libpurple client is " |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39857
diff
changeset
|
386 | "already running.")); |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
387 | } |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
388 | |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
389 | /* Now that we're sure purple_core_quit() has been called, |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
390 | * this can be freed. |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
391 | */ |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
392 | g_object_unref(app); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
393 | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
394 | #ifndef _WIN32 |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
395 | g_free(segfault_message); |
|
29991
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
396 | g_source_remove(signal_channel_watcher); |
|
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
397 | close(signal_sockets[0]); |
|
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
398 | close(signal_sockets[1]); |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
399 | #endif |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
400 | |
| 10302 | 401 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
402 | winpidgin_cleanup(); |
| 10302 | 403 | #endif |
| 404 | ||
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
405 | return ret; |
| 10302 | 406 | } |