pidgin/libpidgin.c

Fri, 09 Nov 2018 20:39:37 -0600

author
Mike Ruprecht <cmaiku@gmail.com>
date
Fri, 09 Nov 2018 20:39:37 -0600
changeset 39333
2da5959eb42c
parent 39321
e4ba787be39c
child 39335
b357de550198
permissions
-rw-r--r--

pidgin: Use gtk_window_present() to present buddy list

This patch replaces usage of purple_blist_set_visible() with direct
calls to gtk_window_present() in cases where the buddy list window
should actually take focus.

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
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
24 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15567
diff changeset
25 #include "pidgin.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
27 #include "account.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
28 #include "conversation.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
29 #include "core.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
30 #include "debug.h"
35194
9a0203562da5 pidgin: Fix build and warnings with glib 2.24
Ankit Vani <a@nevitus.org>
parents: 35050
diff changeset
31 #include "glibcompat.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
32 #include "log.h"
19048
432404a6b416 Fix stun to work on startup (this is is a temporary hack until purple_prefs_load() happens in the core). Fixes #2334
Daniel Atallah <datallah@pidgin.im>
parents: 18606
diff changeset
33 #include "network.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34 #include "notify.h"
38802
afb1c8302e49 The start of the libpurple option group
Gary Kramlich <grim@reaperworld.com>
parents: 38801
diff changeset
35 #include "options.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 #include "prefs.h"
36543
a8c3fecee2d3 Renamed prpl.[ch] to protocol.[ch]
Ankit Vani <a@nevitus.org>
parents: 36541
diff changeset
37 #include "protocol.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 #include "pounce.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39 #include "sound.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40 #include "status.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
41 #include "util.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11403
diff changeset
42 #include "whiteboard.h"
35194
9a0203562da5 pidgin: Fix build and warnings with glib 2.24
Ankit Vani <a@nevitus.org>
parents: 35050
diff changeset
43 #include "xfer.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45 #include "gtkaccount.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46 #include "gtkblist.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
47 #include "gtkconn.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
48 #include "gtkconv.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
49 #include "gtkdialogs.h"
14743
2324d3eee038 [gaim-migrate @ 17433]
Sean Egan <seanegan@pidgin.im>
parents: 14636
diff changeset
50 #include "gtkdocklet.h"
34910
60502558e400 Replacements for the GObject Xfer API
Ankit Vani <a@nevitus.org>
parents: 34892
diff changeset
51 #include "gtkxfer.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents: 11906
diff changeset
52 #include "gtkidle.h"
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12670
diff changeset
53 #include "gtklog.h"
26269
cacc598079e4 Separate PidginMedia from PidginConversation.
Michael Ruprecht <maiku@pidgin.im>
parents: 24585
diff changeset
54 #include "gtkmedia.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 #include "gtknotify.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56 #include "gtkplugin.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
57 #include "gtkpounce.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58 #include "gtkprefs.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59 #include "gtkprivacy.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
60 #include "gtkrequest.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
61 #include "gtkroomlist.h"
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
62 #include "gtksavedstatuses.h"
35704
aa22dcef8913 Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35605
diff changeset
63 #include "gtksmiley-theme.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
64 #include "gtksound.h"
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65 #include "gtkutils.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15808
diff changeset
66 #include "pidginstock.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11403
diff changeset
67 #include "gtkwhiteboard.h"
39152
37144ff35a91 Rename gtkdebug -> pidgindebug.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39036
diff changeset
68 #include "pidgindebug.h"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
69
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
70 #ifndef _WIN32
38047
312be70f9de6 Remove AC_HEADER_STDC and related C89 tests.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37998
diff changeset
71 #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
72 #endif
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
74 #ifndef _WIN32
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
75
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
76 /*
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77 * 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
78 * Each list terminated with -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
79 */
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
80 static const int catch_sig_list[] = {
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
81 SIGSEGV,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
82 SIGINT,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
83 SIGTERM,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
84 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
85 SIGCHLD,
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86 -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87 };
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
88
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
89 static const int ignore_sig_list[] = {
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
90 SIGPIPE,
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
91 -1
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
92 };
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
93 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
94
17719
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
95 static void
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
96 dologin_named(const char *name)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
97 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
98 PurpleAccount *account;
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
99 char **names;
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
100 int i;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
101
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
102 if (name != NULL) { /* list of names given */
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
103 names = g_strsplit(name, ",", 64);
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
104 for (i = 0; names[i] != NULL; i++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
105 account = purple_accounts_find(names[i], NULL);
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
106 if (account != NULL) { /* found a user */
17719
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
107 purple_account_set_enabled(account, PIDGIN_UI, TRUE);
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
108 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
109 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
110 g_strfreev(names);
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
111 } else { /* no name given, use the first account */
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
112 GList *accounts;
11520
61d34ca357f2 [gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents: 11475
diff changeset
113
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
114 accounts = purple_accounts_get_all();
11520
61d34ca357f2 [gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents: 11475
diff changeset
115 if (accounts != NULL)
61d34ca357f2 [gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents: 11475
diff changeset
116 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
117 account = (PurpleAccount *)accounts->data;
17719
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
118 purple_account_set_enabled(account, PIDGIN_UI, TRUE);
11520
61d34ca357f2 [gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents: 11475
diff changeset
119 }
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
120 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
121 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
123 #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
124 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
125
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
126 static guint signal_channel_watcher;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
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 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
129
14542
7c1dd9601f1d [gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents: 14323
diff changeset
130 static void sighandler(int sig);
7c1dd9601f1d [gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents: 14323
diff changeset
131
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
132 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
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 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
135
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 /*
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 * 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
138 * 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
139 * 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
140 * 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
141 * 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
142 * 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
143 * 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
144 * 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
145 * 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
146 */
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
147 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
148 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
149 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
150 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
151 }
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
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 written = write(signal_sockets[0], &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
154 if (written < 0 || written != 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
155 /* 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
156 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
157 "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
158 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
159 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
160 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
161 }
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
162 }
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
163
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
164 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
165 mainloop_sighandler(GIOChannel *source, GIOCondition cond, gpointer data)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
166 {
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
167 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
168 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
169 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
170 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
171
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
172 /* 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
173 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
174 &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
175 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
176 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
177 "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
178 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
179 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
180 }
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
181
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
182 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
183 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
184 /* 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
185 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
186 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
187 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
188 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
189 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
190 }
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
191
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
192 return TRUE;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
193 }
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
194 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
195
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
196 static int
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21984
diff changeset
197 ui_main(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
198 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
199 pidgin_blist_setup_sort_methods();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
200
39237
8d0af3b47338 libpidgin: Set default window icon from icon theme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39152
diff changeset
201 gtk_window_set_default_icon_name("pidgin");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
203 return 0;
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
204 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
205
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
206 static void
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
207 debug_init(void)
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
208 {
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
209 PidginDebugUi *ui = pidgin_debug_ui_new();
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
210 purple_debug_set_ui(PURPLE_DEBUG_UI(ui));
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
211 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
212
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
213 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
214 pidgin_ui_init(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
215 {
39036
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
216 gchar *path;
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
217
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
218 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
219 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
220 g_free(path);
ced50832d0c7 libpidgin: Add pidgin icon path to GtkIconTheme
Mike Ruprecht <cmaiku@gmail.com>
parents: 39014
diff changeset
221
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
222 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
223
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
224 /* Set the UI operation structures. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
225 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
226 purple_xfers_set_ui_ops(pidgin_xfers_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
227 purple_blist_set_ui_ops(pidgin_blist_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
228 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
229 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
230 purple_sound_set_ui_ops(pidgin_sound_get_ui_ops());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
231 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
232 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
233 purple_idle_set_ui_ops(pidgin_idle_get_ui_ops());
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
234
34587
a3bc28bb4ef5 Refactored pidgin to use the GObject-based PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
235 pidgin_accounts_init();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
236 pidgin_connection_init();
34502
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34308
diff changeset
237 pidgin_request_init();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
238 pidgin_blist_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
239 pidgin_status_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
240 pidgin_conversations_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
241 pidgin_pounces_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
242 pidgin_privacy_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
243 pidgin_xfers_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
244 pidgin_roomlist_init();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
245 pidgin_log_init();
16796
1397249dcde1 Initialize docklet from pidgin_ui_init. This ensures docklet prefs are
Casey Harkins <charkins@pidgin.im>
parents: 16763
diff changeset
246 pidgin_docklet_init();
35781
8c621fbbee8e Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35756
diff changeset
247 _pidgin_smiley_theme_init();
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24585
diff changeset
248 pidgin_utils_init();
26269
cacc598079e4 Separate PidginMedia from PidginConversation.
Michael Ruprecht <maiku@pidgin.im>
parents: 24585
diff changeset
249 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
250 pidgin_notify_init();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
251 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
252
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
253 static GHashTable *ui_info = NULL;
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
254
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
255 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
256 pidgin_quit(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
257 {
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
258 /* Uninit */
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
259 PurpleDebugUi *ui;
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
260
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24585
diff changeset
261 pidgin_utils_uninit();
27476
d44640cb5686 Clear the notifications via a signal instead of pidgin_close_notify.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
262 pidgin_notify_uninit();
35781
8c621fbbee8e Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35756
diff changeset
263 _pidgin_smiley_theme_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
264 pidgin_conversations_uninit();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
265 pidgin_status_uninit();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
266 pidgin_docklet_uninit();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
267 pidgin_blist_uninit();
34502
433382371e89 Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34308
diff changeset
268 pidgin_request_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
269 pidgin_connection_uninit();
34587
a3bc28bb4ef5 Refactored pidgin to use the GObject-based PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
270 pidgin_accounts_uninit();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
271 pidgin_xfers_uninit();
38645
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
272 ui = purple_debug_get_ui();
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
273 purple_debug_set_ui(NULL);
bf3f91939dc5 Convert PidginDebugUi to a GObject.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38578
diff changeset
274 g_object_unref(ui);
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10448
diff changeset
275
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
276 if(NULL != ui_info)
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
277 g_hash_table_destroy(ui_info);
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
278
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
279 /* and end it all... */
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
280 g_application_quit(g_application_get_default());
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
281 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
282
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21984
diff changeset
283 static GHashTable *pidgin_ui_get_info(void)
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
284 {
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
285 if(NULL == ui_info) {
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
286 ui_info = g_hash_table_new(g_str_hash, g_str_equal);
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
287
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
288 g_hash_table_insert(ui_info, "name", (char*)PIDGIN_NAME);
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
289 g_hash_table_insert(ui_info, "version", VERSION);
33955
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33940
diff changeset
290 g_hash_table_insert(ui_info, "website", "https://pidgin.im");
55aa58076485 Use https URLs for pidgin.im and developer.pidgin.im.
Mark Doliner <mark@kingant.net>
parents: 33940
diff changeset
291 g_hash_table_insert(ui_info, "dev_website", "https://developer.pidgin.im");
25578
c0c1b73f4fb1 Changed "type" to "client_type" for the hash value specifying client type
Marcus Lundblad <malu@pidgin.im>
parents: 25577
diff changeset
292 g_hash_table_insert(ui_info, "client_type", "pc");
27685
6e8ce73aa4a4 Use a custom clientkey for AIM and ICQ for Pidgin and Finch
Mark Doliner <markdoliner@pidgin.im>
parents: 27476
diff changeset
293
6e8ce73aa4a4 Use a custom clientkey for AIM and ICQ for Pidgin and Finch
Mark Doliner <markdoliner@pidgin.im>
parents: 27476
diff changeset
294 /*
38205
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
295 * prpl-aim-clientkey is a DevID (or "client key") for Pidgin, given to
38206
3118251ccdef Fix a typo. Thanks, Maiku.
Robert Vehse <robertvehse@fastmail.fm>
parents: 38205
diff changeset
296 * us by AOL in September 2016. prpl-icq-clientkey is also a client key
38205
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
297 * for Pidgin, owned by the AIM account "markdoliner." Please don't use
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
298 * either for other applications. Instead, you can either not specify a
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
299 * client key, in which case the default "libpurple" key will be used,
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
300 * or you can try to register your own at the AIM or ICQ web sites
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
301 * (although this functionality was removed at some point, it's possible
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
302 * it has been re-added).
27685
6e8ce73aa4a4 Use a custom clientkey for AIM and ICQ for Pidgin and Finch
Mark Doliner <markdoliner@pidgin.im>
parents: 27476
diff changeset
303 */
38205
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
304 g_hash_table_insert(ui_info, "prpl-aim-clientkey", "do1UCeb5gNqxB1S1");
27685
6e8ce73aa4a4 Use a custom clientkey for AIM and ICQ for Pidgin and Finch
Mark Doliner <markdoliner@pidgin.im>
parents: 27476
diff changeset
305 g_hash_table_insert(ui_info, "prpl-icq-clientkey", "ma1cSASNCKFtrdv9");
27688
8c89470bfe9d Oh, we don't need a special ui_info field for the AIM clientstring
Mark Doliner <markdoliner@pidgin.im>
parents: 27685
diff changeset
306
8c89470bfe9d Oh, we don't need a special ui_info field for the AIM clientstring
Mark Doliner <markdoliner@pidgin.im>
parents: 27685
diff changeset
307 /*
38205
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
308 * prpl-aim-distid is a distID for Pidgin, given to us by AOL in
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
309 * September 2016. prpl-icq-distid is also a distID for Pidgin, given
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
310 * to us by AOL. Please don't use either for other applications.
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
311 * Instead, you can just not specify a distID and libpurple will use a
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
312 * default.
27688
8c89470bfe9d Oh, we don't need a special ui_info field for the AIM clientstring
Mark Doliner <markdoliner@pidgin.im>
parents: 27685
diff changeset
313 */
38205
bbd7e672b3af For AIM, use the DevID and the DistID supplied to us by an AOL representative via the devel mailing list in September 2016.
Robert Vehse <robertvehse@fastmail.fm>
parents: 36256
diff changeset
314 g_hash_table_insert(ui_info, "prpl-aim-distid", GINT_TO_POINTER(1715));
27688
8c89470bfe9d Oh, we don't need a special ui_info field for the AIM clientstring
Mark Doliner <markdoliner@pidgin.im>
parents: 27685
diff changeset
315 g_hash_table_insert(ui_info, "prpl-icq-distid", GINT_TO_POINTER(1550));
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
316 }
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
317
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
318 return ui_info;
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
319 }
99c6a0271b1d UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents: 18256
diff changeset
320
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
321 static PurpleCoreUiOps core_ops =
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
322 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
323 pidgin_prefs_init,
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
324 debug_init,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
325 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
326 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
327 pidgin_ui_get_info,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16545
diff changeset
328 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16545
diff changeset
329 NULL,
35024
eb3afb7643ce Added /*< private >*/ for padding members, clean them up and add missing ones
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
330 NULL,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 16545
diff changeset
331 NULL
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
332 };
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
333
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
334 static PurpleCoreUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
335 pidgin_core_get_ui_ops(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
336 {
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
337 return &core_ops;
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
338 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
339
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
340 static gint
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
341 pidgin_handle_local_options_cb(GApplication *app, GVariantDict *options,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
342 gpointer user_data)
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
343 {
39257
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
344 #if !GLIB_CHECK_VERSION(2, 48, 0)
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
345 gchar *app_id = NULL;
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
346 #endif
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
347
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
348 if (g_variant_dict_contains(options, "version")) {
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
349 printf("%s %s (libpurple %s)\n", PIDGIN_NAME, DISPLAY_VERSION,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
350 purple_core_get_version());
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
351 return 0;
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
39257
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
354 #if !GLIB_CHECK_VERSION(2, 48, 0)
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
355 if (g_variant_dict_lookup(options, "gapplication-app-id",
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
356 "s", &app_id)) {
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
357 g_variant_dict_remove(options, "gapplication-app-id");
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
358 g_application_set_application_id(app, app_id);
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
359 g_free(app_id);
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
360 }
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
361 #endif
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
362
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
363 return -1;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
364 }
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
365
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
366 static void
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
367 pidgin_activate_cb(GApplication *application, gpointer user_data)
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
368 {
39333
2da5959eb42c pidgin: Use gtk_window_present() to present buddy list
Mike Ruprecht <cmaiku@gmail.com>
parents: 39321
diff changeset
369 PidginBuddyList *blist = pidgin_blist_get_default_gtk_blist();
2da5959eb42c pidgin: Use gtk_window_present() to present buddy list
Mike Ruprecht <cmaiku@gmail.com>
parents: 39321
diff changeset
370
2da5959eb42c pidgin: Use gtk_window_present() to present buddy list
Mike Ruprecht <cmaiku@gmail.com>
parents: 39321
diff changeset
371 if (blist != NULL && blist->window != NULL) {
2da5959eb42c pidgin: Use gtk_window_present() to present buddy list
Mike Ruprecht <cmaiku@gmail.com>
parents: 39321
diff changeset
372 gtk_window_present(GTK_WINDOW(blist->window));
2da5959eb42c pidgin: Use gtk_window_present() to present buddy list
Mike Ruprecht <cmaiku@gmail.com>
parents: 39321
diff changeset
373 }
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
39321
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
376 static gint
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
377 pidgin_command_line_cb(GApplication *application,
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
378 GApplicationCommandLine *cmdline, gpointer user_data)
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
379 {
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
380 gchar **argv;
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
381 int argc;
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
382 int i;
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
383
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
384 argv = g_application_command_line_get_arguments(cmdline, &argc);
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
385
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
386 /* Start at 1 to skip the executable name */
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
387 for (i = 1; i < argc; ++i) {
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
388 purple_got_protocol_handler_uri(argv[i]);
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
389 }
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
390
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
391 g_strfreev(argv);
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
392
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
393 return 0;
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
394 }
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
395
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
396 static gchar *opt_config_dir_arg = NULL;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
397 static gboolean opt_nologin = FALSE;
38594
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
398 static gboolean opt_login = FALSE;
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
399 static gchar *opt_login_arg = NULL;
12846
93ff2d8dd1e7 [gaim-migrate @ 15194]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12838
diff changeset
400
38594
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
401 static gboolean
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
402 login_opt_arg_func(const gchar *option_name, const gchar *value,
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
403 gpointer data, GError **error)
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
404 {
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
405 opt_login = TRUE;
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
406
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
407 g_free(opt_login_arg);
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
408 opt_login_arg = g_strdup(value);
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
409
eb2d289be0fe libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents: 38593
diff changeset
410 return TRUE;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
411 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
412
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
413 static GOptionEntry option_entries[] = {
39257
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
414 #if !GLIB_CHECK_VERSION(2, 48, 0)
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
415 /* Support G_APPLICATION_CAN_OVERRIDE_APP_ID functionality
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
416 * even though we don't depend on version 2.48 yet
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
417 */
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
418 {"gapplication-app-id", '\0', 0, G_OPTION_ARG_STRING, NULL,
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
419 N_("Override the application's ID") },
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
420 #endif
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
421 {"config", 'c', 0,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
422 G_OPTION_ARG_FILENAME, &opt_config_dir_arg,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
423 N_("use DIR for config files"), N_("DIR")},
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
424 {"login", 'l', G_OPTION_FLAG_OPTIONAL_ARG,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
425 G_OPTION_ARG_CALLBACK, &login_opt_arg_func,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
426 N_("enable specified account(s) (optional argument NAME\n"
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
427 " "
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
428 "specifies account(s) to use, separated by commas.\n"
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
429 " "
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
430 "Without this only the first account will be enabled)"),
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
431 N_("[NAME]")},
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
432 {"nologin", 'n', 0,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
433 G_OPTION_ARG_NONE, &opt_nologin,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
434 N_("don't automatically login"), NULL},
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
435 {"version", 'v', 0,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
436 G_OPTION_ARG_NONE, NULL,
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
437 N_("display the current version and exit"), NULL},
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
438 {NULL}
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
439 };
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
440
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
441 #ifndef _WIN32
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
442 static void
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
443 pidgin_setup_error_handler(void)
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
444 {
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
445 int sig_indx; /* for setting up signal catching */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
446 sigset_t sigset;
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
447 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
448 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
449 GIOStatus signal_status;
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
450 #ifndef DEBUG
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
451 char *segfault_message_tmp;
38607
51b50879b5c9 libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
452 GError *error = NULL;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
453
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
454 /* We translate this here in case the crash breaks gettext. */
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
455 segfault_message_tmp = g_strdup_printf(_(
20395
81c963c89157 Include the version in the segfault message - enough people blindly copy
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20346
diff changeset
456 "%s %s has segfaulted and attempted to dump a core file.\n"
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
457 "This is a bug in the software and has happened through\n"
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
458 "no fault of your own.\n\n"
16977
c9cb49bea66d Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents: 16967
diff changeset
459 "If you can reproduce the crash, please notify the developers\n"
c9cb49bea66d Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents: 16967
diff changeset
460 "by reporting a bug at:\n"
18256
63c91e6c806e I believe the great unwashed should be using simpleticket for submitting
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18232
diff changeset
461 "%ssimpleticket/\n\n"
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
462 "Please make sure to specify what you were doing at the time\n"
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
463 "and post the backtrace from the core file. If you do not know\n"
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
464 "how to get the backtrace, please read the instructions at\n"
24585
25d84f35abf8 kluge pointed out that the segfault message still recommends people IM
Richard Laager <rlaager@pidgin.im>
parents: 23545
diff changeset
465 "%swiki/GetABacktrace\n"),
25d84f35abf8 kluge pointed out that the segfault message still recommends people IM
Richard Laager <rlaager@pidgin.im>
parents: 23545
diff changeset
466 PIDGIN_NAME, DISPLAY_VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13024
diff changeset
467 );
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13429
diff changeset
468
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
469 /* we have to convert the message (UTF-8 to console
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
470 charset) early because after a segmentation fault
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
471 it's not a good practice to allocate memory */
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13429
diff changeset
472 segfault_message = g_locale_from_utf8(segfault_message_tmp,
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
473 -1, NULL, NULL, &error);
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
474 if (segfault_message != NULL) {
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
475 g_free(segfault_message_tmp);
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
476 }
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
477 else {
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
478 /* use 'segfault_message_tmp' (UTF-8) as a fallback */
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
479 g_warning("%s\n", error->message);
38607
51b50879b5c9 libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
480 g_clear_error(&error);
13215
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
481 segfault_message = segfault_message_tmp;
c3e72e316531 [gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13111
diff changeset
482 }
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
483 #else
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
484 /* Don't mark this for translation. */
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
485 segfault_message = g_strdup(
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
486 "Hi, user. We need to talk.\n"
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
487 "I think something's gone wrong here. It's probably my fault.\n"
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
488 "No, really, it's not you... it's me... no no no, I think we get along well\n"
12670
54597c65a004 [gaim-migrate @ 15013]
Will Thompson <resiak@pidgin.im>
parents: 12600
diff changeset
489 "it's just that.... well, I want to see other people. I... what?!? NO! I \n"
54597c65a004 [gaim-migrate @ 15013]
Will Thompson <resiak@pidgin.im>
parents: 12600
diff changeset
490 "haven't been cheating on you!! How many times do you want me to tell you?! And\n"
54597c65a004 [gaim-migrate @ 15013]
Will Thompson <resiak@pidgin.im>
parents: 12600
diff changeset
491 "for the last time, it's just a rash!\n"
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
492 );
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
493 #endif
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
494
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
495 /*
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
496 * 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
497 * 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
498 */
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
499 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
500 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
501 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
502 }
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
503 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
504
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
505 /*
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
506 * 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
507 * 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
508 */
58701e24ed40 We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents: 28800
diff changeset
509 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
510 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
511 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
512 "binary: %s", error->message);
38607
51b50879b5c9 libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
513 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
514 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
515 }
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
516 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
517 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
518
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
519 /* Let's not violate any PLA's!!!! */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
520 /* jseymour: whatever the fsck that means */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
521 /* Robot101: for some reason things like gdm like to block *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
522 * useful signals like SIGCHLD, so we unblock all the ones we *
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
523 * declare a handler for. thanks JSeymour and Vann. */
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
524 if (sigemptyset(&sigset)) {
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
525 snprintf(errmsg, sizeof(errmsg), "Warning: couldn't initialise empty signal set");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
526 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
527 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
528 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
529 if(signal(catch_sig_list[sig_indx], sighandler) == SIG_ERR) {
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
530 snprintf(errmsg, sizeof(errmsg), "Warning: couldn't set signal %d for catching",
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
531 catch_sig_list[sig_indx]);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
532 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
533 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
534 if(sigaddset(&sigset, catch_sig_list[sig_indx])) {
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
535 snprintf(errmsg, sizeof(errmsg), "Warning: couldn't include signal %d for unblocking",
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
536 catch_sig_list[sig_indx]);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
537 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
538 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
539 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
540 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
541 if(signal(ignore_sig_list[sig_indx], SIG_IGN) == SIG_ERR) {
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
542 snprintf(errmsg, sizeof(errmsg), "Warning: couldn't set signal %d to ignore",
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
543 ignore_sig_list[sig_indx]);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
544 perror(errmsg);
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
545 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
546 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
547
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
548 if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) {
29991
37e306c31983 Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents: 29662
diff changeset
549 snprintf(errmsg, sizeof(errmsg), "Warning: couldn't unblock signals");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
550 perror(errmsg);
10307
f3ba80364053 [gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents: 10306
diff changeset
551 }
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
552 }
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
553 #endif /* !_WIN32 */
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
554
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
555 static void
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
556 pidgin_startup_cb(GApplication *app, gpointer user_data)
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
557 {
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
558 char *search_path;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
559 GtkCssProvider *provider;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
560 GdkScreen *screen;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
561 GList *accounts;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
562 gboolean gui_check;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
563 GList *active_accounts;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
564 GStatBuf st;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
565 GError *error = NULL;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
566
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
567 /* set a user-specified config directory */
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
568 if (opt_config_dir_arg != NULL) {
32785
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
569 if (g_path_is_absolute(opt_config_dir_arg)) {
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
570 purple_util_set_user_dir(opt_config_dir_arg);
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
571 } else {
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
572 /* Make an absolute (if not canonical) path */
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
573 char *cwd = g_get_current_dir();
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
574 char *path = g_build_path(G_DIR_SEPARATOR_S, cwd, opt_config_dir_arg, NULL);
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
575 purple_util_set_user_dir(path);
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
576 g_free(path);
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
577 g_free(cwd);
5e08d5a41442 pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents: 31992
diff changeset
578 }
10323
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
579 }
f4a013ac9e7c [gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
580
33926
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
581 search_path = g_build_filename(purple_user_dir(), "gtk-3.0.css", NULL);
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
582
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
583 provider = gtk_css_provider_new();
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
584 gui_check = gtk_css_provider_load_from_path(provider, search_path, &error);
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
585
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
586 if (gui_check && !error) {
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
587 screen = gdk_screen_get_default();
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
588 gtk_style_context_add_provider_for_screen(screen,
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
589 GTK_STYLE_PROVIDER(provider),
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
590 GTK_STYLE_PROVIDER_PRIORITY_USER);
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
591 } else {
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
592 purple_debug_error("gtk", "Unable to load custom gtk-3.0.css: %s\n",
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
593 error ? error->message : "(unknown error)");
38607
51b50879b5c9 libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
594 g_clear_error(&error);
33926
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
595 }
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
596
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
597 g_free(search_path);
0c11d752fbe4 Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33890
diff changeset
598
12572
a71b6aef215b [gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents: 12562
diff changeset
599 #ifdef _WIN32
35605
8a0ae6cc73fc Fix win32 build
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
600 winpidgin_init();
12572
a71b6aef215b [gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents: 12562
diff changeset
601 #endif
a71b6aef215b [gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents: 12562
diff changeset
602
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
603 purple_core_set_ui_ops(pidgin_core_get_ui_ops());
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
604
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
605 if (!purple_core_init(PIDGIN_UI)) {
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
606 fprintf(stderr,
16977
c9cb49bea66d Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents: 16967
diff changeset
607 "Initialization of the libpurple core failed. Dumping core.\n"
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
608 "Please report this!\n");
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
609 #ifndef _WIN32
16193
e27165dcba9b Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents: 16158
diff changeset
610 g_free(segfault_message);
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
611 #endif
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
612 abort();
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
613 }
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
614
39013
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
615 if (!g_getenv("PURPLE_PLUGINS_SKIP")) {
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
616 search_path = g_build_filename(purple_user_dir(),
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
617 "plugins", NULL);
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
618 if (!g_stat(search_path, &st))
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
619 g_mkdir(search_path, S_IRUSR | S_IWUSR | S_IXUSR);
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
620 purple_plugins_add_search_path(search_path);
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
621 g_free(search_path);
36485
bfb60fd48059 Add LIBDIR to pidgin and finch search paths
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
622
39013
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
623 purple_plugins_add_search_path(PIDGIN_LIBDIR);
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
624 } else {
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
625 purple_debug_info("gtk",
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
626 "PURPLE_PLUGINS_SKIP environment variable "
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
627 "set, skipping normal Pidgin plugin paths");
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
628 }
3d8d5a8a36c7 libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents: 38803
diff changeset
629
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36415
diff changeset
630 purple_plugins_refresh();
36415
1c0b40253875 Refactored gtkdocklet, gtkimhtmltoolbar, gtkmain to use the new API
Ankit Vani <a@nevitus.org>
parents: 34708
diff changeset
631
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
632 /* load plugins we had when we quit */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
633 purple_plugins_load_saved(PIDGIN_PREFS_ROOT "/plugins/loaded");
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
634
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
635 ui_main();
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
636
37424
04cf8cbe44d8 Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents: 37422
diff changeset
637 g_free(opt_config_dir_arg);
04cf8cbe44d8 Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents: 37422
diff changeset
638 opt_config_dir_arg = NULL;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
639
12011
85a627679414 [gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents: 11928
diff changeset
640 /*
85a627679414 [gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents: 11928
diff changeset
641 * We want to show the blist early in the init process so the
85a627679414 [gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents: 11928
diff changeset
642 * user feels warm and fuzzy (not cold and prickley).
85a627679414 [gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents: 11928
diff changeset
643 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
644 purple_blist_show();
12011
85a627679414 [gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents: 11928
diff changeset
645
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
646 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
647 pidgin_debug_window_show();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
648
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
649 if (opt_login) {
17719
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
650 /* disable all accounts */
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
651 for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
652 PurpleAccount *account = accounts->data;
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
653 purple_account_set_enabled(account, PIDGIN_UI, FALSE);
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
654 }
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
655 /* honor the startup status preference */
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
656 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status"))
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
657 purple_savedstatus_activate(purple_savedstatus_get_startup());
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
658 /* now enable the requested ones */
8070b1610abe Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17105
diff changeset
659 dologin_named(opt_login_arg);
37424
04cf8cbe44d8 Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents: 37422
diff changeset
660 g_free(opt_login_arg);
04cf8cbe44d8 Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents: 37422
diff changeset
661 opt_login_arg = NULL;
19675
3c1669c529a1 Move purple_prefs_load() to purple_prefs_init() - there's been a TODO for this for a long time. I have no idea why this wasn't done sooner; it seems to work just fine and fixes some bugs where stuff isn't loaded before being used. Fixes #1848 (and I'm sure others). Yell at me if this breaks anything.
Daniel Atallah <datallah@pidgin.im>
parents: 19122
diff changeset
662 } else if (opt_nologin) {
11806
269e9f78cf89 [gaim-migrate @ 14097]
Mark Doliner <markdoliner@pidgin.im>
parents: 11795
diff changeset
663 /* Set all accounts to "offline" */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
664 PurpleSavedStatus *saved_status;
13111
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
665
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
666 /* If we've used this type+message before, lookup the transient status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
667 saved_status = purple_savedstatus_find_transient_by_type_and_message(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
668 PURPLE_STATUS_OFFLINE, NULL);
13111
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
669
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
670 /* If this type+message is unique then create a new transient saved status */
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
671 if (saved_status == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
672 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE);
13111
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
673
31caa48825f7 [gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents: 13106
diff changeset
674 /* Set the status for each account */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
675 purple_savedstatus_activate(saved_status);
19675
3c1669c529a1 Move purple_prefs_load() to purple_prefs_init() - there's been a TODO for this for a long time. I have no idea why this wasn't done sooner; it seems to work just fine and fixes some bugs where stuff isn't loaded before being used. Fixes #1848 (and I'm sure others). Yell at me if this breaks anything.
Daniel Atallah <datallah@pidgin.im>
parents: 19122
diff changeset
676 } else {
11348
b8938b189d61 [gaim-migrate @ 13565]
Mark Doliner <markdoliner@pidgin.im>
parents: 11277
diff changeset
677 /* Everything is good to go--sign on already */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16263
diff changeset
678 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
679 purple_savedstatus_activate(purple_savedstatus_get_startup());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
680 purple_accounts_restore_current_statuses();
10738
63ca8277c234 [gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents: 10638
diff changeset
681 }
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
682
18121
2d8ea56b9097 Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents: 18093
diff changeset
683 if ((active_accounts = purple_accounts_get_all_active()) == NULL)
11403
e7e7ed37dc51 [gaim-migrate @ 13638]
Mark Doliner <markdoliner@pidgin.im>
parents: 11348
diff changeset
684 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
685 pidgin_accounts_window_show();
10315
2738b56121ca [gaim-migrate @ 11515]
Sean Egan <seanegan@pidgin.im>
parents: 10307
diff changeset
686 }
13835
86dea5f9cffa [gaim-migrate @ 16282]
Yosef Radchenko
parents: 13587
diff changeset
687 else
86dea5f9cffa [gaim-migrate @ 16282]
Yosef Radchenko
parents: 13587
diff changeset
688 {
18121
2d8ea56b9097 Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents: 18093
diff changeset
689 g_list_free(active_accounts);
13835
86dea5f9cffa [gaim-migrate @ 16282]
Yosef Radchenko
parents: 13587
diff changeset
690 }
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
691
31506
d282fb1e8315 Remove the dependency on libstartup-notification. Our use of it had some bugs
David Benjamin <davidben@mit.edu>
parents: 30844
diff changeset
692 /* GTK clears the notification for us when opening the first window,
d282fb1e8315 Remove the dependency on libstartup-notification. Our use of it had some bugs
David Benjamin <davidben@mit.edu>
parents: 30844
diff changeset
693 * but we may have launched with only a status icon, so clear the it
d282fb1e8315 Remove the dependency on libstartup-notification. Our use of it had some bugs
David Benjamin <davidben@mit.edu>
parents: 30844
diff changeset
694 * just in case. */
d282fb1e8315 Remove the dependency on libstartup-notification. Our use of it had some bugs
David Benjamin <davidben@mit.edu>
parents: 30844
diff changeset
695 gdk_notify_startup_complete();
14762
f494a5f12981 [gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents: 14743
diff changeset
696
f494a5f12981 [gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents: 14743
diff changeset
697 #ifdef _WIN32
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15567
diff changeset
698 winpidgin_post_init();
14762
f494a5f12981 [gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents: 14743
diff changeset
699 #endif
f494a5f12981 [gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents: 14743
diff changeset
700
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
701 /* TODO: Use GtkApplicationWindow or add a window instead */
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
702 g_application_hold(app);
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
703 }
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
704
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
705 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
706 {
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
707 GApplication *app;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
708 gchar *summary;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
709 int ret;
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
710
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
711 #ifdef DEBUG
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
712 purple_debug_set_enabled(TRUE);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
713 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
714
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
715 #ifdef ENABLE_NLS
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
716 bindtextdomain(PACKAGE, PURPLE_LOCALEDIR);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
717 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
718 textdomain(PACKAGE);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
719 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
720
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
721 /* 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
722 setlocale(LC_ALL, "");
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
723
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
724 #ifndef _WIN32
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
725 pidgin_setup_error_handler();
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
726 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
727
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
728 app = G_APPLICATION(gtk_application_new("im.pidgin.Pidgin",
39257
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
729 #if GLIB_CHECK_VERSION(2, 48, 0)
39321
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
730 G_APPLICATION_CAN_OVERRIDE_APP_ID |
39257
96f40c182cf1 libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents: 39256
diff changeset
731 #endif
39321
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
732 G_APPLICATION_HANDLES_COMMAND_LINE));
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
733
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
734 summary = g_strdup_printf("%s %s", PIDGIN_NAME, DISPLAY_VERSION);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
735 g_application_set_option_context_summary(app, summary);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
736 g_free(summary);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
737
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
738 g_application_add_main_option_entries(app, option_entries);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
739 g_application_add_option_group(app, purple_get_option_group());
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
740 #ifdef PURPLE_PLUGINS
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
741 g_application_add_option_group(app, gplugin_get_option_group());
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
742 #endif
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
743
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
744 g_object_set(app, "register-session", TRUE, NULL);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
745
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
746 g_signal_connect(app, "handle-local-options",
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
747 G_CALLBACK(pidgin_handle_local_options_cb), NULL);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
748 g_signal_connect(app, "startup",
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
749 G_CALLBACK(pidgin_startup_cb), NULL);
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
750 g_signal_connect(app, "activate",
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
751 G_CALLBACK(pidgin_activate_cb), NULL);
39321
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
752 g_signal_connect(app, "command-line",
e4ba787be39c libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 39257
diff changeset
753 G_CALLBACK(pidgin_command_line_cb), NULL);
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
754
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
755 ret = g_application_run(app, argc, argv);
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
756
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
757 /* 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
758 * 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
759 * happen, for example, if the desktop session is ending.
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
760 */
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
761 if (purple_get_core() != NULL) {
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
762 purple_core_quit();
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
763 }
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
764
39256
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
765 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
766 g_application_get_is_remote(app)) {
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
767 g_printerr(_("Exiting because another libpurple client is "
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
768 "already running.\n"));
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
769 }
0245b49e1231 libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents: 39255
diff changeset
770
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
771 /* 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
772 * this can be freed.
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
773 */
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
774 g_object_unref(app);
10320
f5b0f5cf8562 [gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents: 10317
diff changeset
775
38064
7cb860a7bb2e libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents: 38048
diff changeset
776 #ifndef _WIN32
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
777 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
778 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
779 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
780 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
781 #endif
12556
f4d4e4e3a825 [gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents: 12409
diff changeset
782
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
783 #ifdef _WIN32
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15567
diff changeset
784 winpidgin_cleanup();
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
785 #endif
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
786
38383
0ceb576f5617 libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents: 38240
diff changeset
787 return ret;
10302
8c73238fb5d4 [gaim-migrate @ 11487]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
788 }

mercurial