pidgin/libpidgin.c

Sat, 14 Nov 2020 03:15:43 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 14 Nov 2020 03:15:43 -0600
changeset 40600
46d10c72c137
parent 40553
892459990bb7
child 40601
228284223862
permissions
-rw-r--r--

Create a new ContactList that will eventually fully replace PidginBuddyList

Create a new PidginContactList window and move the application actions to PidginApplication.

Testing Done:
* Verified menus are properly disabled while offline
* Verified menu items that require a protocol with chats enables the chat menu items as well as the room list menu items
* Verified that the menu items can become enabled while the menus are opened
* Verified that the application actions are activatable via dbus
* Verified that the plugin manager action was migrated successfully
* Verified that the account manager action was migrated successfully

Reviewed at https://reviews.imfreedom.org/r/174/

10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
6 * source distribution.
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
37 #include "gtkaccount.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 #include "gtkblist.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
43 #include "gtknotify.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44 #include "gtkpounce.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45 #include "gtkprefs.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46 #include "gtkprivacy.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
47 #include "gtkrequest.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
48 #include "gtkroomlist.h"
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
49 #include "gtksavedstatuses.h"
35704
aa22dcef8913 Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35605
diff changeset
50 #include "gtksmiley-theme.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
51 #include "gtkutils.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11403
diff changeset
52 #include "gtkwhiteboard.h"
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents: 40531
diff changeset
53 #include "pidginapplication.h"
40496
6941fece679b phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents: 40462
diff changeset
54 #include "pidgincore.h"
39152
37144ff35a91 Rename gtkdebug -> pidgindebug.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39036
diff changeset
55 #include "pidgindebug.h"
39603
98fd85e156e0 Rename gtklog -> pidginlog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39574
diff changeset
56 #include "pidginlog.h"
40222
40f2888f85c1 delete gtkplugin.[ch] and deal with the repercussions
Gary Kramlich <grim@reaperworld.com>
parents: 40203
diff changeset
57 #include "pidginplugininfo.h"
40f2888f85c1 delete gtkplugin.[ch] and deal with the repercussions
Gary Kramlich <grim@reaperworld.com>
parents: 40203
diff changeset
58 #include "pidginstock.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
60 #ifndef _WIN32
38047
312be70f9de6 Remove AC_HEADER_STDC and related C89 tests.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37998
diff changeset
61 #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
62 #endif
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
63
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
64 #ifndef _WIN32
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66 /*
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
67 * Lists of signals we wish to catch and those we wish to ignore.
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
68 * Each list terminated with -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
69 */
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
70 static const int catch_sig_list[] = {
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
71 SIGSEGV,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
72 SIGINT,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73 SIGTERM,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
74 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
75 SIGCHLD,
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
76 -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77 };
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
78
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
79 static const int ignore_sig_list[] = {
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
80 SIGPIPE,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
81 -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
82 };
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
83 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
84
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
85 #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
86 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
87
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
88 static guint signal_channel_watcher;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
89
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
90 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
91
14542
7c1dd9601f1d [gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents: 14323
diff changeset
92 static void sighandler(int sig);
7c1dd9601f1d [gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents: 14323
diff changeset
93
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
94 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
95 {
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 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
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 /*
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 * 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
100 * 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
101 * 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
102 * 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
103 * 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
104 * 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
105 * 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
106 * 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
107 * 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
108 */
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 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
110 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
111 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
112 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
113 }
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
114
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
115 written = write(signal_sockets[0], &sig, sizeof(int));
40133
b86418d6eb94 Remove redundant comparisons in conditions
qarkai <qarkai@gmail.com>
parents: 40094
diff changeset
116 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
117 /* 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
118 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
119 "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
120 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
121 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
122 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
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
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 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
127 mainloop_sighandler(GIOChannel *source, GIOCondition cond, gpointer data)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
128 {
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
129 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
130 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
131 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
132 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
133
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 /* 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
135 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
136 &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
137 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
138 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
139 "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
140 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
141 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
142 }
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
143
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
144 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
145 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
146 /* 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
147 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
148 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
149 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
150 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
151 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
152 }
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
153
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
154 return TRUE;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
155 }
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
156 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
157
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
158 static void
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
159 debug_init(void)
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
160 {
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
161 PidginDebugUi *ui = pidgin_debug_ui_new();
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
162 purple_debug_set_ui(PURPLE_DEBUG_UI(ui));
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
163 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
164
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
165 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
166 pidgin_ui_init(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
167 {
39036
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
168 gchar *path;
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
169
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
170 path = g_build_filename(PURPLE_DATADIR, "pidgin", "icons", NULL);
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
171 gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), path);
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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
176 /* Set the UI operation structures. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
177 purple_accounts_set_ui_ops(pidgin_accounts_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
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
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
180 purple_notify_set_ui_ops(pidgin_notify_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
181 purple_request_set_ui_ops(pidgin_request_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
182 purple_connections_set_ui_ops(pidgin_connections_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
183 purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
184 purple_idle_set_ui_ops(pidgin_idle_get_ui_ops());
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
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_pounces_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
193 pidgin_privacy_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
194 pidgin_xfers_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
195 pidgin_roomlist_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
196 pidgin_log_init();
35781
8c621fbbee8e Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35756
diff changeset
197 _pidgin_smiley_theme_init();
26269
cacc598079e4 Separate PidginMedia from PidginConversation.
Michael Ruprecht <maiku@pidgin.im>
parents: 24585
diff changeset
198 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
199 pidgin_notify_init();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
200 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
201
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
203 pidgin_quit(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
204 {
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
205 /* Uninit */
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
206 PurpleDebugUi *ui;
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
207
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
208 pidgin_notify_uninit();
35781
8c621fbbee8e Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35756
diff changeset
209 _pidgin_smiley_theme_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
210 pidgin_conversations_uninit();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
211 pidgin_status_uninit();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
212 pidgin_blist_uninit();
34502
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34308
diff changeset
213 pidgin_request_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
214 pidgin_connection_uninit();
34587
a3bc28bb4ef5 Refactored pidgin to use the GObject-based PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
215 pidgin_accounts_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
216 pidgin_xfers_uninit();
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
217 ui = purple_debug_get_ui();
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
218 purple_debug_set_ui(NULL);
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
219 g_object_unref(ui);
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
220
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
221 /* and end it all... */
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
222 g_application_quit(g_application_get_default());
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
223 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
224
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
225 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
226 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
227 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
228 "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
229 }
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
230
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
231 static PurpleCoreUiOps core_ops =
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
232 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
233 pidgin_prefs_init,
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
234 debug_init,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
235 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
236 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
237 pidgin_ui_get_info,
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
238 };
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
239
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents: 40531
diff changeset
240 PurpleCoreUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
241 pidgin_core_get_ui_ops(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
242 {
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
243 return &core_ops;
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
244 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
245
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
246 #ifndef _WIN32
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
247 static void
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
248 pidgin_setup_error_handler(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
249 {
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
250 int sig_indx; /* for setting up signal catching */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
251 sigset_t sigset;
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
252 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
253 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
254 GIOStatus signal_status;
39365
af69ee5abbf2 pidgin: Fix compiling with -Dconsole-logging=true
Mike Ruprecht <cmaiku@gmail.com>
parents: 39335
diff changeset
255 GError *error = NULL;
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
256 char *segfault_message_tmp;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
257
40531
ed47469c4311 Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents: 40509
diff changeset
258 /* 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
259 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
260 "%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
261 "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
262 "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
263 "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
264 "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
265 "%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
266 "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
267 "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
268 "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
269 "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
270 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
271 );
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13429
diff changeset
272
40531
ed47469c4311 Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents: 40509
diff changeset
273 /* 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
274 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
275 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
276 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
277 &error);
ed47469c4311 Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents: 40509
diff changeset
278 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
279 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
280 } else {
ed47469c4311 Fix some broken urls and get rid of the old developer segfault message
Gary Kramlich <grim@reaperworld.com>
parents: 40509
diff changeset
281 /* 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
282 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
283 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
284 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
285 }
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
286
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
287 /*
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 * 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
289 * 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
290 */
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 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
292 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
293 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
294 }
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 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
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 /*
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 * 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
299 * 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
300 */
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 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
302 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
303 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
304 "binary: %s", error->message);
38607
51b50879b5c9 libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
305 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
306 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
307 }
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
308 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
309 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
310
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
311 /* Let's not violate any PLA's!!!! */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
312 /* jseymour: whatever the fsck that means */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
313 /* Robot101: for some reason things like gdm like to block *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
314 * useful signals like SIGCHLD, so we unblock all the ones we *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
315 * declare a handler for. thanks JSeymour and Vann. */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
316 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
317 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
318 "Warning: couldn't initialise empty signal set");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
319 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
320 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
321 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
322 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
323 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
324 "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
325 catch_sig_list[sig_indx]);
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
326 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
327 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
328 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
329 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
330 "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
331 catch_sig_list[sig_indx]);
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
332 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
333 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
334 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
335 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
336 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
337 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
338 "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
339 ignore_sig_list[sig_indx]);
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
340 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
341 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
342 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
343
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
344 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
345 g_snprintf(errmsg, sizeof(errmsg), "Warning: couldn't unblock signals");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
346 perror(errmsg);
10307
f3ba80364053 [gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents: 10306
diff changeset
347 }
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
348 }
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
349 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
350
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
351 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
352 {
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
353 GApplication *app;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
354 int ret;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
355
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
356 #ifdef DEBUG
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
357 purple_debug_set_enabled(TRUE);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
358 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
359
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
360 bindtextdomain(PACKAGE, PURPLE_LOCALEDIR);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
361 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
362 textdomain(PACKAGE);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
363
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
364 /* 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
365 setlocale(LC_ALL, "");
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
366
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
367 #ifndef _WIN32
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
368 pidgin_setup_error_handler();
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
369 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
370
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents: 40531
diff changeset
371 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
372 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
373
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
374 ret = g_application_run(app, argc, argv);
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
375
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
376 /* 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
377 * 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
378 * happen, for example, if the desktop session is ending.
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
379 */
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
380 if (purple_get_core() != NULL) {
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
381 purple_core_quit();
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
382 }
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
383
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
384 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
385 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
386 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
387 "already running."));
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
388 }
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
389
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
390 /* 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
391 * this can be freed.
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
392 */
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
393 g_object_unref(app);
10320
f5b0f5cf8562 [gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents: 10317
diff changeset
394
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
395 #ifndef _WIN32
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
396 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
397 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
398 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
399 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
400 #endif
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
401
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
402 #ifdef _WIN32
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15567
diff changeset
403 winpidgin_cleanup();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
404 #endif
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
405
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
406 return ret;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
407 }

mercurial