Fri, 02 Nov 2018 19:17:24 -0500
libpidgin: Handle command line URIs using GApplication
This patch adds support for handling URIs from GApplication's command
line via purple_got_protocol_handler_uri(). This affects non-Windows
versions as the Windows version uses its own method and stock
GApplication uses DBus to handle command line arguments from
subsequent calls of an application.
Unfortunately, purple_got_protocol_handler_uri() doesn't indicate
whether URI was successfully handled. That can be an improvement for
another patch. Also, there aren't many URI handler implementations
as of yet. Those are to be added in separate patches.
| 10302 | 1 | /* |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
2 | * pidgin |
| 10302 | 3 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
4 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 10302 | 5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 6 | * source distribution. | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19840
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 10302 | 21 | * |
| 22 | */ | |
| 23 | ||
| 24 | #include "internal.h" | |
| 15577 | 25 | #include "pidgin.h" |
| 10302 | 26 | |
| 27 | #include "account.h" | |
| 28 | #include "conversation.h" | |
| 29 | #include "core.h" | |
| 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 | 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 | 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 | 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 | 38 | #include "pounce.h" |
| 39 | #include "sound.h" | |
| 40 | #include "status.h" | |
| 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 | 44 | |
| 45 | #include "gtkaccount.h" | |
| 46 | #include "gtkblist.h" | |
| 47 | #include "gtkconn.h" | |
| 48 | #include "gtkconv.h" | |
| 49 | #include "gtkdialogs.h" | |
| 14743 | 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 | 55 | #include "gtknotify.h" |
| 56 | #include "gtkplugin.h" | |
| 57 | #include "gtkpounce.h" | |
| 58 | #include "gtkprefs.h" | |
| 59 | #include "gtkprivacy.h" | |
| 60 | #include "gtkrequest.h" | |
| 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 | 64 | #include "gtksound.h" |
| 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 | 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 | 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 | 75 | |
| 76 | /* | |
| 77 | * Lists of signals we wish to catch and those we wish to ignore. | |
| 78 | * Each list terminated with -1 | |
| 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 | 81 | SIGSEGV, |
| 82 | SIGINT, | |
| 83 | SIGTERM, | |
| 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 | 86 | -1 |
| 87 | }; | |
| 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 | 90 | SIGPIPE, |
| 91 | -1 | |
| 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 | 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 | 97 | { |
| 15884 | 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 | 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 | 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 | 108 | } |
| 109 | } | |
| 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 | 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 | 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 | 120 | } |
| 121 | } | |
| 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 | 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 | 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 | 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 | 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 | 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 | 202 | |
| 203 | return 0; | |
| 204 | } | |
| 205 | ||
| 206 | static void | |
| 207 | debug_init(void) | |
| 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 | 211 | } |
| 212 | ||
| 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 | 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 | 224 | /* Set the UI operation structures. */ |
| 15884 | 225 | purple_accounts_set_ui_ops(pidgin_accounts_get_ui_ops()); |
| 226 | purple_xfers_set_ui_ops(pidgin_xfers_get_ui_ops()); | |
| 227 | purple_blist_set_ui_ops(pidgin_blist_get_ui_ops()); | |
| 228 | purple_notify_set_ui_ops(pidgin_notify_get_ui_ops()); | |
| 229 | purple_request_set_ui_ops(pidgin_request_get_ui_ops()); | |
| 230 | purple_sound_set_ui_ops(pidgin_sound_get_ui_ops()); | |
| 231 | purple_connections_set_ui_ops(pidgin_connections_get_ui_ops()); | |
| 232 | purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops()); | |
| 233 | purple_idle_set_ui_ops(pidgin_idle_get_ui_ops()); | |
| 10302 | 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 | 251 | } |
| 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 | 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 | 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 | 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 | 281 | } |
| 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 | 321 | static PurpleCoreUiOps core_ops = |
| 10302 | 322 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
323 | pidgin_prefs_init, |
| 10302 | 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 | 332 | }; |
| 333 | ||
| 15884 | 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 | 336 | { |
| 337 | return &core_ops; | |
| 338 | } | |
| 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 | 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 | { |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
369 | purple_blist_set_visible(TRUE); |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
370 | } |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
371 | |
|
39321
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
372 | static gint |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
373 | pidgin_command_line_cb(GApplication *application, |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
374 | GApplicationCommandLine *cmdline, gpointer user_data) |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
375 | { |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
376 | gchar **argv; |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
377 | int argc; |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
378 | int i; |
|
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 | 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
|
381 | |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
382 | /* 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
|
383 | for (i = 1; i < argc; ++i) { |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
384 | purple_got_protocol_handler_uri(argv[i]); |
|
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 | |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
387 | g_strfreev(argv); |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
388 | |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
389 | return 0; |
|
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 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
392 | 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
|
393 | 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
|
394 | 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
|
395 | static gchar *opt_login_arg = NULL; |
|
12846
93ff2d8dd1e7
[gaim-migrate @ 15194]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
12838
diff
changeset
|
396 | |
|
38594
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
397 | static gboolean |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
398 | 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
|
399 | gpointer data, GError **error) |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
400 | { |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
401 | opt_login = TRUE; |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
402 | |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
403 | 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
|
404 | 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
|
405 | |
|
eb2d289be0fe
libpidgin: Port to use GOptionContext for parsing command line args
Mike Ruprecht <cmaiku@gmail.com>
parents:
38593
diff
changeset
|
406 | return TRUE; |
| 10302 | 407 | } |
| 408 | ||
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
409 | 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
|
410 | #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
|
411 | /* 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
|
412 | * 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
|
413 | */ |
|
96f40c182cf1
libpidgin: Use G_APPLICATION_CAN_OVERRIDE_APP_ID to allow multiple instances
Mike Ruprecht <cmaiku@gmail.com>
parents:
39256
diff
changeset
|
414 | {"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
|
415 | 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
|
416 | #endif |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
417 | {"config", 'c', 0, |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
418 | 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
|
419 | 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
|
420 | {"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
|
421 | 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
|
422 | 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
|
423 | " " |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
424 | "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
|
425 | " " |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
426 | "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
|
427 | N_("[NAME]")}, |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
428 | {"nologin", 'n', 0, |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
429 | 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
|
430 | 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
|
431 | {"version", 'v', 0, |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
432 | G_OPTION_ARG_NONE, NULL, |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
433 | 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
|
434 | {NULL} |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
435 | }; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
436 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
437 | #ifndef _WIN32 |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
438 | static void |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
439 | pidgin_setup_error_handler(void) |
| 10302 | 440 | { |
| 441 | int sig_indx; /* for setting up signal catching */ | |
| 442 | sigset_t sigset; | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
443 | 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
|
444 | 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
|
445 | GIOStatus signal_status; |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
446 | #ifndef DEBUG |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
447 | char *segfault_message_tmp; |
|
38607
51b50879b5c9
libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents:
38578
diff
changeset
|
448 | GError *error = NULL; |
| 10302 | 449 | |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
450 | /* 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
|
451 | 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
|
452 | "%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
|
453 | "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
|
454 | "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
|
455 | "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
|
456 | "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
|
457 | "%ssimpleticket/\n\n" |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
458 | "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
|
459 | "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
|
460 | "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
|
461 | "%swiki/GetABacktrace\n"), |
|
25d84f35abf8
kluge pointed out that the segfault message still recommends people IM
Richard Laager <rlaager@pidgin.im>
parents:
23545
diff
changeset
|
462 | 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
|
463 | ); |
|
13587
fb0245a7ccab
[gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents:
13429
diff
changeset
|
464 | |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
465 | /* 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
|
466 | charset) early because after a segmentation fault |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
467 | it's not a good practice to allocate memory */ |
|
13587
fb0245a7ccab
[gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents:
13429
diff
changeset
|
468 | 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
|
469 | -1, NULL, NULL, &error); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
470 | if (segfault_message != NULL) { |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
471 | g_free(segfault_message_tmp); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
472 | } |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
473 | else { |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
474 | /* 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
|
475 | 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
|
476 | g_clear_error(&error); |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
477 | segfault_message = segfault_message_tmp; |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
478 | } |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
479 | #else |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
480 | /* Don't mark this for translation. */ |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
481 | segfault_message = g_strdup( |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
482 | "Hi, user. We need to talk.\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
483 | "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
|
484 | "No, really, it's not you... it's me... no no no, I think we get along well\n" |
| 12670 | 485 | "it's just that.... well, I want to see other people. I... what?!? NO! I \n" |
| 486 | "haven't been cheating on you!! How many times do you want me to tell you?! And\n" | |
| 487 | "for the last time, it's just a rash!\n" | |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
488 | ); |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
489 | #endif |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
490 | |
|
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
|
491 | /* |
|
58701e24ed40
We really shouldn't be doing a whole lot in our signal handler. The
Mark Doliner <markdoliner@pidgin.im>
parents:
28800
diff
changeset
|
492 | * 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
|
493 | * 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
|
494 | */ |
|
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 | 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
|
496 | 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
|
497 | 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
|
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 | 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
|
500 | |
|
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 | /* |
|
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 | * 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
|
503 | * 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
|
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 | 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
|
506 | 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
|
507 | 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
|
508 | "binary: %s", error->message); |
|
38607
51b50879b5c9
libpidgin: Fix Windows crash by initializing error to NULL
Mike Ruprecht <cmaiku@gmail.com>
parents:
38578
diff
changeset
|
509 | 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
|
510 | 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
|
511 | } |
|
29991
37e306c31983
Try to be polite and free stuff associated with our signal watcher pipes
Mark Doliner <markdoliner@pidgin.im>
parents:
29662
diff
changeset
|
512 | 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
|
513 | 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
|
514 | |
| 10302 | 515 | /* Let's not violate any PLA's!!!! */ |
| 516 | /* jseymour: whatever the fsck that means */ | |
| 517 | /* Robot101: for some reason things like gdm like to block * | |
| 518 | * useful signals like SIGCHLD, so we unblock all the ones we * | |
| 519 | * declare a handler for. thanks JSeymour and Vann. */ | |
| 520 | 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
|
521 | snprintf(errmsg, sizeof(errmsg), "Warning: couldn't initialise empty signal set"); |
| 10302 | 522 | perror(errmsg); |
| 523 | } | |
| 524 | 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
|
525 | 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
|
526 | snprintf(errmsg, sizeof(errmsg), "Warning: couldn't set signal %d for catching", |
| 10302 | 527 | catch_sig_list[sig_indx]); |
| 528 | perror(errmsg); | |
| 529 | } | |
| 530 | 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
|
531 | snprintf(errmsg, sizeof(errmsg), "Warning: couldn't include signal %d for unblocking", |
| 10302 | 532 | catch_sig_list[sig_indx]); |
| 533 | perror(errmsg); | |
| 534 | } | |
| 535 | } | |
| 536 | 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
|
537 | 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
|
538 | snprintf(errmsg, sizeof(errmsg), "Warning: couldn't set signal %d to ignore", |
| 10302 | 539 | ignore_sig_list[sig_indx]); |
| 540 | perror(errmsg); | |
| 541 | } | |
| 542 | } | |
| 543 | ||
| 544 | 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
|
545 | snprintf(errmsg, sizeof(errmsg), "Warning: couldn't unblock signals"); |
| 10302 | 546 | perror(errmsg); |
|
10307
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
547 | } |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
548 | } |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
549 | #endif /* !_WIN32 */ |
| 10302 | 550 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
551 | static void |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
552 | 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
|
553 | { |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
554 | char *search_path; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
555 | GtkCssProvider *provider; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
556 | GdkScreen *screen; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
557 | GList *accounts; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
558 | gboolean gui_check; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
559 | GList *active_accounts; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
560 | GStatBuf st; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
561 | GError *error = NULL; |
| 10302 | 562 | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
563 | /* set a user-specified config directory */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
564 | 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
|
565 | 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
|
566 | 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
|
567 | } else { |
|
5e08d5a41442
pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents:
31992
diff
changeset
|
568 | /* 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
|
569 | char *cwd = g_get_current_dir(); |
|
5e08d5a41442
pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents:
31992
diff
changeset
|
570 | 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
|
571 | purple_util_set_user_dir(path); |
|
5e08d5a41442
pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents:
31992
diff
changeset
|
572 | g_free(path); |
|
5e08d5a41442
pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents:
31992
diff
changeset
|
573 | g_free(cwd); |
|
5e08d5a41442
pidgin/finch: Make relative paths absolute with -c
Paul Aurich <darkrain42@pidgin.im>
parents:
31992
diff
changeset
|
574 | } |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
575 | } |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
576 | |
|
33926
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
577 | 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
|
578 | |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
579 | 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
|
580 | 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
|
581 | |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
582 | if (gui_check && !error) { |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
583 | 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
|
584 | 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
|
585 | GTK_STYLE_PROVIDER(provider), |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
586 | 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
|
587 | } else { |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
588 | 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
|
589 | 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
|
590 | 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
|
591 | } |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
592 | |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
593 | g_free(search_path); |
|
0c11d752fbe4
Load custom CSS for styling on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33890
diff
changeset
|
594 | |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
595 | #ifdef _WIN32 |
| 35605 | 596 | winpidgin_init(); |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
597 | #endif |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
598 | |
| 15884 | 599 | purple_core_set_ui_ops(pidgin_core_get_ui_ops()); |
| 10302 | 600 | |
| 15884 | 601 | if (!purple_core_init(PIDGIN_UI)) { |
| 10302 | 602 | fprintf(stderr, |
|
16977
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
603 | "Initialization of the libpurple core failed. Dumping core.\n" |
| 10302 | 604 | "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
|
605 | #ifndef _WIN32 |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
606 | 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
|
607 | #endif |
| 10302 | 608 | abort(); |
| 609 | } | |
| 610 | ||
|
39013
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
611 | 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
|
612 | 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
|
613 | "plugins", NULL); |
|
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
614 | 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
|
615 | 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
|
616 | 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
|
617 | g_free(search_path); |
|
36485
bfb60fd48059
Add LIBDIR to pidgin and finch search paths
Ankit Vani <a@nevitus.org>
parents:
36431
diff
changeset
|
618 | |
|
39013
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
619 | 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
|
620 | } else { |
|
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
621 | purple_debug_info("gtk", |
|
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
622 | "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
|
623 | "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
|
624 | } |
|
3d8d5a8a36c7
libpidgin: Make PURPLE_PLUGINS_SKIP also skip Pidgin plugin paths
Mike Ruprecht <cmaiku@gmail.com>
parents:
38803
diff
changeset
|
625 | |
|
36431
ea007725fd4d
Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents:
36415
diff
changeset
|
626 | purple_plugins_refresh(); |
|
36415
1c0b40253875
Refactored gtkdocklet, gtkimhtmltoolbar, gtkmain to use the new API
Ankit Vani <a@nevitus.org>
parents:
34708
diff
changeset
|
627 | |
| 10302 | 628 | /* 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
|
629 | purple_plugins_load_saved(PIDGIN_PREFS_ROOT "/plugins/loaded"); |
| 10302 | 630 | |
| 631 | ui_main(); | |
| 632 | ||
|
37424
04cf8cbe44d8
Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents:
37422
diff
changeset
|
633 | g_free(opt_config_dir_arg); |
|
04cf8cbe44d8
Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents:
37422
diff
changeset
|
634 | opt_config_dir_arg = NULL; |
| 10302 | 635 | |
|
12011
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
636 | /* |
|
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
637 | * 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
|
638 | * user feels warm and fuzzy (not cold and prickley). |
|
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
639 | */ |
| 15884 | 640 | purple_blist_show(); |
|
12011
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
641 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
642 | 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
|
643 | pidgin_debug_window_show(); |
| 10302 | 644 | |
| 645 | 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
|
646 | /* 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
|
647 | 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
|
648 | 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
|
649 | 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
|
650 | } |
|
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 | /* 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
|
652 | 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
|
653 | 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
|
654 | /* 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
|
655 | dologin_named(opt_login_arg); |
|
37424
04cf8cbe44d8
Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents:
37422
diff
changeset
|
656 | g_free(opt_login_arg); |
|
04cf8cbe44d8
Remove more NULL-checks before free().
Michael McConville <mmcco@mykolab.com>
parents:
37422
diff
changeset
|
657 | 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
|
658 | } else if (opt_nologin) { |
|
11806
269e9f78cf89
[gaim-migrate @ 14097]
Mark Doliner <markdoliner@pidgin.im>
parents:
11795
diff
changeset
|
659 | /* Set all accounts to "offline" */ |
| 15884 | 660 | PurpleSavedStatus *saved_status; |
|
13111
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
661 | |
|
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
662 | /* If we've used this type+message before, lookup the transient status */ |
| 15884 | 663 | saved_status = purple_savedstatus_find_transient_by_type_and_message( |
| 664 | PURPLE_STATUS_OFFLINE, NULL); | |
|
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 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
|
667 | if (saved_status == NULL) |
| 15884 | 668 | saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE); |
|
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 | /* Set the status for each account */ |
| 15884 | 671 | 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
|
672 | } else { |
|
11348
b8938b189d61
[gaim-migrate @ 13565]
Mark Doliner <markdoliner@pidgin.im>
parents:
11277
diff
changeset
|
673 | /* 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
|
674 | if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) |
| 15884 | 675 | purple_savedstatus_activate(purple_savedstatus_get_startup()); |
| 676 | purple_accounts_restore_current_statuses(); | |
|
10738
63ca8277c234
[gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents:
10638
diff
changeset
|
677 | } |
| 10302 | 678 | |
|
18121
2d8ea56b9097
Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents:
18093
diff
changeset
|
679 | if ((active_accounts = purple_accounts_get_all_active()) == NULL) |
|
11403
e7e7ed37dc51
[gaim-migrate @ 13638]
Mark Doliner <markdoliner@pidgin.im>
parents:
11348
diff
changeset
|
680 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
681 | pidgin_accounts_window_show(); |
| 10315 | 682 | } |
| 13835 | 683 | else |
| 684 | { | |
|
18121
2d8ea56b9097
Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents:
18093
diff
changeset
|
685 | g_list_free(active_accounts); |
| 13835 | 686 | } |
| 10302 | 687 | |
|
31506
d282fb1e8315
Remove the dependency on libstartup-notification. Our use of it had some bugs
David Benjamin <davidben@mit.edu>
parents:
30844
diff
changeset
|
688 | /* 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
|
689 | * 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
|
690 | * 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
|
691 | gdk_notify_startup_complete(); |
|
14762
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
692 | |
|
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
693 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
694 | winpidgin_post_init(); |
|
14762
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
695 | #endif |
|
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
696 | |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
697 | /* TODO: Use GtkApplicationWindow or add a window instead */ |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
698 | g_application_hold(app); |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
699 | } |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
700 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
701 | 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
|
702 | { |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
703 | GApplication *app; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
704 | gchar *summary; |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
705 | int ret; |
|
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 | #ifdef DEBUG |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
708 | purple_debug_set_enabled(TRUE); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
709 | #endif |
|
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 ENABLE_NLS |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
712 | bindtextdomain(PACKAGE, PURPLE_LOCALEDIR); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
713 | 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
|
714 | textdomain(PACKAGE); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
715 | #endif |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
716 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
717 | /* 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
|
718 | setlocale(LC_ALL, ""); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
719 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
720 | #ifndef _WIN32 |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
721 | pidgin_setup_error_handler(); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
722 | #endif |
|
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 | 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
|
725 | #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
|
726 | 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
|
727 | #endif |
|
39321
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
728 | 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
|
729 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
730 | 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
|
731 | 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
|
732 | g_free(summary); |
|
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 | 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
|
735 | 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
|
736 | #ifdef PURPLE_PLUGINS |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
737 | 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
|
738 | #endif |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
739 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
740 | 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
|
741 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
742 | 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
|
743 | 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
|
744 | g_signal_connect(app, "startup", |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
745 | 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
|
746 | g_signal_connect(app, "activate", |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
747 | G_CALLBACK(pidgin_activate_cb), NULL); |
|
39321
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
748 | g_signal_connect(app, "command-line", |
|
e4ba787be39c
libpidgin: Handle command line URIs using GApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
39257
diff
changeset
|
749 | 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
|
750 | |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
751 | ret = g_application_run(app, argc, argv); |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
752 | |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
753 | /* 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
|
754 | * 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
|
755 | * happen, for example, if the desktop session is ending. |
|
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 | if (purple_get_core() != NULL) { |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
758 | purple_core_quit(); |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
759 | } |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
760 | |
|
39256
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
761 | 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
|
762 | 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
|
763 | 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
|
764 | "already running.\n")); |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
765 | } |
|
0245b49e1231
libpidgin: Use GApplication command line argument parsing and uniqueness
Mike Ruprecht <cmaiku@gmail.com>
parents:
39255
diff
changeset
|
766 | |
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
767 | /* 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
|
768 | * this can be freed. |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
769 | */ |
|
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
770 | g_object_unref(app); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
771 | |
|
38064
7cb860a7bb2e
libpidgin: Fix Win32 build due to lacking signalpair() and some enums
Mike Ruprecht <cmaiku@gmail.com>
parents:
38048
diff
changeset
|
772 | #ifndef _WIN32 |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
773 | 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
|
774 | 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
|
775 | 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
|
776 | 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
|
777 | #endif |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
778 | |
| 10302 | 779 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
780 | winpidgin_cleanup(); |
| 10302 | 781 | #endif |
| 782 | ||
|
38383
0ceb576f5617
libpidgin: Port to use GtkApplication
Mike Ruprecht <cmaiku@gmail.com>
parents:
38240
diff
changeset
|
783 | return ret; |
| 10302 | 784 | } |