libpurple/keyring.c

Sat, 11 Jul 2015 14:45:46 -0400

author
James Geboski <jgeboski@gmail.com>
date
Sat, 11 Jul 2015 14:45:46 -0400
branch
facebook
changeset 37293
dc35ba3e7fac
parent 37155
1aee6d5eefba
child 39352
62bca2fe2e91
permissions
-rw-r--r--

facebook: fixed all errors being marked as fatal

33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1 /* purple
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
2 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
5 * source distribution.
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
6 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
11 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
16 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
18 * along with this program ; if not, write to the Free Software
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
20 */
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
21
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
22 #include <glib.h>
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
23 #include <string.h>
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
24 #include "account.h"
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
25 #include "keyring.h"
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
26 #include "signals.h"
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
27 #include "core.h"
33982
58a0de711782 Added support for the PURPLE_PLUGIN_FLAG_AUTOLOAD flag, corrected a few bugs and crashed. The compatibility plugin is automatically loaded at startup, and works nicely in compatibility mode (read_sync, write_sync, import, export). Also, I played unsuccessfully with makefiles, so i moved the keyring up one directory. I've finally gotten to the point where I run "make && sudo make install" every now and then.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33981
diff changeset
28 #include "debug.h"
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
29 #include "internal.h"
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
30 #include "dbus-maybe.h"
36509
86e882c3cfdf Refactored libpurple according to the changes
Ankit Vani <a@nevitus.org>
parents: 36449
diff changeset
31 #include "plugins.h"
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
32
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
33 struct _PurpleKeyring
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
34 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
35 gchar *name;
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
36 gchar *id;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
37 PurpleKeyringRead read_password;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
38 PurpleKeyringSave save_password;
34138
2bda8642afa3 Early cancelling password requests before quitting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34137
diff changeset
39 PurpleKeyringCancelRequests cancel_requests;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
40 PurpleKeyringClose close_keyring;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
41 PurpleKeyringImportPassword import_password;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
42 PurpleKeyringExportPassword export_password;
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
43 PurpleKeyringReadSettings read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
44 PurpleKeyringApplySettings apply_settings;
34190
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
45
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
46 gboolean is_closing;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
47 gboolean is_cancelling;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
48 gboolean close_after_cancel;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
49 };
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
50
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
51 typedef struct
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
52 {
34137
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
53 GError *error;
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
54 PurpleKeyringSetInUseCallback cb;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
55 gpointer cb_data;
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
56 PurpleKeyring *new_kr;
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
57 PurpleKeyring *old_kr;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
58
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
59 /*
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
60 * We are done when finished is positive and read_outstanding is zero.
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
61 */
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
62 gboolean finished;
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
63 int read_outstanding;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
64
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
65 gboolean abort;
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
66 gboolean force;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
67 gboolean succeeded;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
68 } PurpleKeyringChangeTracker;
33991
0eb45874d73a Made more calls asynch, enhanced error checking and reporting.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33987
diff changeset
69
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
70 typedef void (*PurpleKeyringDropCallback)(gpointer data);
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
71
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
72 typedef struct
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
73 {
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
74 PurpleKeyringDropCallback cb;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
75 gpointer cb_data;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
76
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
77 gboolean finished;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
78 int drop_outstanding;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
79 } PurpleKeyringDropTracker;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
80
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
81 typedef struct
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
82 {
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
83 PurpleKeyringSaveCallback cb;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
84 gpointer cb_data;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
85 } PurpleKeyringSetPasswordData;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
86
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
87 typedef struct
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
88 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
89 gchar *keyring_id;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
90 gchar *mode;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
91 gchar *data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
92 } PurpleKeyringFailedImport;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
93
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
94 static void
34137
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
95 purple_keyring_change_tracker_free(PurpleKeyringChangeTracker *tracker)
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
96 {
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
97 if (tracker->error)
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
98 g_error_free(tracker->error);
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
99 g_free(tracker);
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
100 }
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
101
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
102 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
103 purple_keyring_failed_import_free(PurpleKeyringFailedImport *import)
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
104 {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
105 g_return_if_fail(import != NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
106
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
107 g_free(import->keyring_id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
108 g_free(import->mode);
34169
488d3280e151 Replace g_free with purple_str_wipe, correct line breaking
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34168
diff changeset
109 purple_str_wipe(import->data);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
110 g_free(import);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
111 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
112
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
113 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
114 purple_keyring_close(PurpleKeyring *keyring);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
115
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
116 static void
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
117 purple_keyring_drop_passwords(PurpleKeyring *keyring,
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
118 PurpleKeyringDropCallback cb, gpointer data);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
119
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
120 /* A list of available keyrings */
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
121 static GList *purple_keyring_keyrings = NULL;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
122
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
123 /* Keyring being used. */
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
124 static PurpleKeyring *purple_keyring_inuse = NULL;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
125
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
126 /* Keyring id marked to use (may not be loadable). */
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
127 static gchar *purple_keyring_to_use = NULL;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
128
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
129 static guint purple_keyring_pref_cbid = 0;
34116
825c98f8c7f6 Get rid of PURPLE_PLUGIN_FLAG_AUTOLOAD
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34110
diff changeset
130 static GList *purple_keyring_loaded_plugins = NULL;
34139
37d7d0e22484 Revert existing password migration at exit, allow cancelling kwallet requests
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34138
diff changeset
131 static PurpleKeyringChangeTracker *current_change_tracker = NULL;
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
132 static gboolean purple_keyring_is_quitting = FALSE;
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
133 static GHashTable *purple_keyring_failed_imports = NULL;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
134
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
135 static const gchar *
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
136 purple_keyring_print_account(PurpleAccount *account)
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
137 {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
138 static gchar print_buff[100];
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
139
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
140 if (account == NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
141 g_snprintf(print_buff, 100, "(null)");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
142 return print_buff;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
143 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
144
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
145 g_snprintf(print_buff, 100, "%s:%s",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
146 purple_account_get_protocol_id(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
147 purple_account_get_username(account));
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
148 return print_buff;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
149 }
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
150
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
151 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
152 /* Setting used keyrings */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
153 /**************************************************************************/
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
154
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
155 PurpleKeyring *
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
156 purple_keyring_find_keyring_by_id(const gchar *id)
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
157 {
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
158 GList *it;
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
159
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
160 for (it = purple_keyring_keyrings; it != NULL; it = it->next) {
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
161 PurpleKeyring *keyring = it->data;
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
162 const gchar *curr_id = purple_keyring_get_id(keyring);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
163
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
164 if (g_strcmp0(id, curr_id) == 0)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
165 return keyring;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
166 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
167
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
168 return NULL;
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
169 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
170
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
171 static void
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
172 purple_keyring_pref_callback(const gchar *pref, PurplePrefType type,
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
173 gconstpointer id, gpointer data)
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
174 {
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
175 PurpleKeyring *new_keyring;
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
176
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
177 g_return_if_fail(g_strcmp0(pref, "/purple/keyring/active") == 0);
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
178 g_return_if_fail(type == PURPLE_PREF_STRING);
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
179 g_return_if_fail(id != NULL);
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
180
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
181 new_keyring = purple_keyring_find_keyring_by_id(id);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
182 g_return_if_fail(new_keyring != NULL);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
183
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
184 purple_keyring_set_inuse(new_keyring, FALSE, NULL, NULL);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
185 }
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
186
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
187 static void
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
188 purple_keyring_pref_connect(void)
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
189 {
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
190 g_return_if_fail(purple_keyring_pref_cbid == 0);
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
191
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
192 purple_keyring_pref_cbid = purple_prefs_connect_callback(NULL,
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
193 "/purple/keyring/active", purple_keyring_pref_callback, NULL);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
194 }
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
195
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
196 static void
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
197 purple_keyring_pref_disconnect(void)
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
198 {
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
199 g_return_if_fail(purple_keyring_pref_cbid != 0);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
200
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
201 purple_prefs_disconnect_callback(purple_keyring_pref_cbid);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
202 purple_keyring_pref_cbid = 0;
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
203 }
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
204
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
205 PurpleKeyring *
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
206 purple_keyring_get_inuse(void)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
207 {
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
208 return purple_keyring_inuse;
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
209 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
210
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
211 static void
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
212 purple_keyring_set_inuse_drop_cb(gpointer _tracker)
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
213 {
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
214 PurpleKeyringChangeTracker *tracker = _tracker;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
215
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
216 g_return_if_fail(tracker != NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
217
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
218 if (tracker->succeeded) {
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
219 purple_keyring_close(tracker->old_kr);
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
220
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
221 purple_debug_info("keyring", "Successfully changed keyring.\n");
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
222
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
223 purple_keyring_inuse = tracker->new_kr;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
224 current_change_tracker = NULL;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
225
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
226 if (tracker->cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
227 tracker->cb(NULL, tracker->cb_data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
228 purple_keyring_change_tracker_free(tracker);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
229 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
230 }
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
231
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
232 purple_debug_error("keyring", "Failed to change keyring, aborting.\n");
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
233
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
234 purple_keyring_close(tracker->new_kr);
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
235
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
236 purple_keyring_pref_disconnect();
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
237 purple_prefs_set_string("/purple/keyring/active",
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
238 purple_keyring_get_id(tracker->old_kr));
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
239 purple_keyring_pref_connect();
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
240
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
241 current_change_tracker = NULL;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
242
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
243 if (tracker->error == NULL) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
244 tracker->error = g_error_new(PURPLE_KEYRING_ERROR,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
245 PURPLE_KEYRING_ERROR_UNKNOWN,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
246 _("An unknown error has occured."));
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
247 }
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
248
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
249 if (tracker->cb != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
250 tracker->cb(tracker->error, tracker->cb_data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
251
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
252 purple_keyring_change_tracker_free(tracker);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
253 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
254
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
255 static void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
256 purple_keyring_set_inuse_save_cb(PurpleAccount *account, GError *error,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
257 gpointer _tracker)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
258 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
259 PurpleKeyringChangeTracker *tracker = _tracker;
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
260
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
261 g_return_if_fail(account != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
262 g_return_if_fail(tracker != NULL);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
263
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
264 tracker->read_outstanding--;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
265
35157
6d2ba273a5b2 Keyring: fix clang warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34955
diff changeset
266 if (error == NULL) {
6d2ba273a5b2 Keyring: fix clang warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34955
diff changeset
267 /* no error */
6d2ba273a5b2 Keyring: fix clang warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34955
diff changeset
268 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
269 PURPLE_KEYRING_ERROR_NOPASSWORD))
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
270 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
271 if (purple_debug_is_verbose()) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
272 purple_debug_misc("keyring", "No password found while "
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
273 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
274 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
275 error->message);
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
276 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
277 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
278 PURPLE_KEYRING_ERROR_ACCESSDENIED))
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
279 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
280 purple_debug_info("keyring", "Access denied while changing "
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
281 "keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
282 purple_keyring_print_account(account), error->message);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
283 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
284 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
285 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
286 tracker->error = g_error_copy(error);
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
287 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
288 PURPLE_KEYRING_ERROR_CANCELLED))
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
289 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
290 purple_debug_info("keyring", "Operation cancelled while "
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
291 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
292 purple_keyring_print_account(account), error->message);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
293 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
294 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
295 tracker->error = g_error_copy(error);
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
296 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
297 PURPLE_KEYRING_ERROR_BACKENDFAIL))
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
298 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
299 purple_debug_error("keyring", "Failed to communicate with "
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
300 "backend while changing keyring for account %s: %s. "
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
301 "Aborting changes.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
302 purple_keyring_print_account(account), error->message);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
303 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
304 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
305 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
306 tracker->error = g_error_copy(error);
35157
6d2ba273a5b2 Keyring: fix clang warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34955
diff changeset
307 } else {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
308 purple_debug_error("keyring", "Unknown error while changing "
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
309 "keyring for account %s: %s. Aborting changes.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
310 purple_keyring_print_account(account), error->message);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
311 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
312 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
313 tracker->error = g_error_copy(error);
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
314 }
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
315
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
316 purple_signal_emit(purple_keyring_get_handle(), "password-migration",
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
317 account);
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
318
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
319 if (!tracker->finished || tracker->read_outstanding > 0)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
320 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
321
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
322 /* This was the last one. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
323 if (tracker->abort && !tracker->force) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
324 tracker->succeeded = FALSE;
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
325 purple_keyring_drop_passwords(tracker->new_kr,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
326 purple_keyring_set_inuse_drop_cb, tracker);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
327 } else {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
328 tracker->succeeded = TRUE;
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
329 purple_keyring_drop_passwords(tracker->old_kr,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
330 purple_keyring_set_inuse_drop_cb, tracker);
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
331 }
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
332 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
333
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
334 static void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
335 purple_keyring_set_inuse_read_cb(PurpleAccount *account, const gchar *password,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
336 GError *error, gpointer _tracker)
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
337 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
338 PurpleKeyringChangeTracker *tracker = _tracker;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
339 PurpleKeyringSave save_cb;
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
340
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
341 g_return_if_fail(account != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
342 g_return_if_fail(tracker != NULL);
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
343
34136
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
344 if (tracker->abort) {
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
345 purple_keyring_set_inuse_save_cb(account, NULL, tracker);
34136
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
346 return;
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
347 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
348
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
349 if (error != NULL) {
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
350 if (tracker->force == TRUE || g_error_matches(error,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
351 PURPLE_KEYRING_ERROR,
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
352 PURPLE_KEYRING_ERROR_NOPASSWORD))
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
353 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
354 /* Don't save password, and ignore it. */
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
355 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
356 tracker->abort = TRUE;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
357 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
358 purple_keyring_set_inuse_save_cb(account, error, tracker);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
359 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
360 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
361
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
362 save_cb = purple_keyring_get_save_password(tracker->new_kr);
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
363 g_assert(save_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
364
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
365 save_cb(account, password, purple_keyring_set_inuse_save_cb, tracker);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
366 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
367
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
368 void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
369 purple_keyring_set_inuse(PurpleKeyring *newkeyring, gboolean force,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
370 PurpleKeyringSetInUseCallback cb, gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
371 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
372 PurpleKeyring *oldkeyring;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
373 PurpleKeyringChangeTracker *tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
374 GList *it;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
375 PurpleKeyringRead read_cb;
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
376
34139
37d7d0e22484 Revert existing password migration at exit, allow cancelling kwallet requests
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34138
diff changeset
377 if (current_change_tracker != NULL) {
34132
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
378 GError *error;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
379 purple_debug_error("keyring", "There is password migration "
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
380 "session already running.\n");
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
381 if (cb == NULL)
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
382 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
383 error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
384 PURPLE_KEYRING_ERROR_INTERNAL,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
385 _("There is a password migration session already "
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
386 "running."));
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
387 cb(error, data);
34132
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
388 g_error_free(error);
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
389 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
390 }
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
391
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
392 oldkeyring = purple_keyring_get_inuse();
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
393
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
394 if (oldkeyring == newkeyring) {
34145
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
395 if (purple_debug_is_verbose()) {
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
396 purple_debug_misc("keyring",
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
397 "Old and new keyring are the same: %s.\n",
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
398 (newkeyring != NULL) ?
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
399 newkeyring->id : "(null)");
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
400 }
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
401 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
402 cb(NULL, data);
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
403 return;
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
404 }
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
405
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
406 purple_debug_info("keyring", "Attempting to set new keyring: %s.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
407 (newkeyring != NULL) ? newkeyring->id : "(null)");
33982
58a0de711782 Added support for the PURPLE_PLUGIN_FLAG_AUTOLOAD flag, corrected a few bugs and crashed. The compatibility plugin is automatically loaded at startup, and works nicely in compatibility mode (read_sync, write_sync, import, export). Also, I played unsuccessfully with makefiles, so i moved the keyring up one directory. I've finally gotten to the point where I run "make && sudo make install" every now and then.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33981
diff changeset
408
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
409 if (oldkeyring == NULL) { /* No keyring was set before. */
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
410 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
411 purple_debug_misc("keyring", "Setting keyring for the "
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
412 "first time: %s.\n", newkeyring->id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
413 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
414
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
415 purple_keyring_inuse = newkeyring;
34139
37d7d0e22484 Revert existing password migration at exit, allow cancelling kwallet requests
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34138
diff changeset
416 g_assert(current_change_tracker == NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
417 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
418 cb(NULL, data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
419 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
420 }
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
421
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
422 /* Starting a migration. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
423
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
424 read_cb = purple_keyring_get_read_password(oldkeyring);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
425 g_assert(read_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
426
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
427 purple_debug_misc("keyring", "Starting migration from: %s.\n",
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
428 oldkeyring->id);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
429
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
430 tracker = g_new0(PurpleKeyringChangeTracker, 1);
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
431 current_change_tracker = tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
432
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
433 tracker->cb = cb;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
434 tracker->cb_data = data;
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
435 tracker->new_kr = newkeyring;
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
436 tracker->old_kr = oldkeyring;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
437 tracker->force = force;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
438
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
439 for (it = purple_accounts_get_all(); it != NULL; it = it->next) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
440 if (tracker->abort) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
441 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
442 break;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
443 }
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
444 tracker->read_outstanding++;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
445
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
446 if (it->next == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
447 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
448
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
449 read_cb(it->data, purple_keyring_set_inuse_read_cb, tracker);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
450 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
451 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
452
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
453 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
454 purple_keyring_register(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
455 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
456 const gchar *keyring_id;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
457
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
458 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
459
33983
317cd0a252c2 Fixed a bunch of bugs/errors, worked on making calls async, on configuration UI, and on Makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33982
diff changeset
460 keyring_id = purple_keyring_get_id(keyring);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
461
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
462 purple_debug_info("keyring", "Registering keyring: %s\n",
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
463 keyring_id ? keyring_id : "(null)");
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
464
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
465 if (purple_keyring_get_id(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
466 purple_keyring_get_name(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
467 purple_keyring_get_read_password(keyring) == NULL ||
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
468 purple_keyring_get_save_password(keyring) == NULL)
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
469 {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
470 purple_debug_error("keyring", "Cannot register %s, some "
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
471 "required fields are missing.\n",
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
472 keyring_id ? keyring_id : "(null)");
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
473 return;
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
474 }
33983
317cd0a252c2 Fixed a bunch of bugs/errors, worked on making calls async, on configuration UI, and on Makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33982
diff changeset
475
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
476 if (purple_keyring_find_keyring_by_id(keyring_id) != NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
477 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
478 "Keyring is already registered.\n");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
479 return;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
480 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
481
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
482 /* If this is the configured keyring, use it. */
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
483 if (purple_keyring_inuse == NULL &&
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
484 g_strcmp0(keyring_id, purple_keyring_to_use) == 0)
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
485 {
34297
0f1f0b8c84f8 Fix some debug log warnings, adjust verbosity level
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34271
diff changeset
486 purple_debug_misc("keyring", "Keyring %s matches keyring to "
0f1f0b8c84f8 Fix some debug log warnings, adjust verbosity level
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34271
diff changeset
487 "use, using it.", keyring_id);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
488 purple_keyring_set_inuse(keyring, TRUE, NULL, NULL);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
489 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
490
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
491 PURPLE_DBUS_REGISTER_POINTER(keyring, PurpleKeyring);
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
492 purple_signal_emit(purple_keyring_get_handle(), "keyring-register",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
493 keyring_id, keyring);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
494 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
495 purple_debug_info("keyring", "Registered keyring: %s.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
496 keyring_id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
497 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
498
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
499 purple_keyring_keyrings = g_list_prepend(purple_keyring_keyrings,
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
500 keyring);
33976
ff88d1340abe Cleaned up keyring.h, updating it to the latest API ideas. Minor changes in other files. Also wrote doxygen documentation for most of the functions in keyring.h.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33973
diff changeset
501 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
502
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
503 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
504 purple_keyring_unregister(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
505 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
506 PurpleKeyring *inuse;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
507 PurpleKeyring *fallback;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
508 const gchar *keyring_id;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
509
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
510 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
511
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
512 keyring_id = purple_keyring_get_id(keyring);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
513
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
514 purple_debug_info("keyring", "Unregistering keyring: %s.\n",
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
515 keyring_id);
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
516
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
517 purple_signal_emit(purple_keyring_get_handle(), "keyring-unregister",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
518 keyring_id, keyring);
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
519 PURPLE_DBUS_UNREGISTER_POINTER(keyring);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
520
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
521 inuse = purple_keyring_get_inuse();
34036
bf17ffca901d Give this a better name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34034
diff changeset
522 fallback = purple_keyring_find_keyring_by_id(PURPLE_DEFAULT_KEYRING);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
523
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
524 if (inuse == keyring) {
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
525 if (inuse != fallback) {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
526 purple_keyring_set_inuse(fallback, TRUE, NULL, NULL);
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
527 } else {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
528 fallback = NULL;
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
529 purple_keyring_set_inuse(NULL, TRUE, NULL, NULL);
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
530 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
531 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
532
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
533 purple_keyring_keyrings = g_list_remove(purple_keyring_keyrings,
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
534 keyring);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
535 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
536
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
537 GList *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
538 purple_keyring_get_options(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
539 {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
540 GList *options = NULL;
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
541 GList *it;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
542 static gchar currentDisabledName[40];
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
543
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
544 if (purple_keyring_get_inuse() == NULL && purple_keyring_to_use != NULL
35362
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
545 && purple_keyring_to_use[0] != '\0')
a6223370667b Style: fix braces for http, keyring
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35350
diff changeset
546 {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
547 g_snprintf(currentDisabledName, sizeof(currentDisabledName),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
548 _("%s (disabled)"), purple_keyring_to_use);
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
549
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
550 options = g_list_append(options, currentDisabledName);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
551 options = g_list_append(options, purple_keyring_to_use);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
552 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
553
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
554 for (it = purple_keyring_keyrings; it != NULL; it = it->next) {
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
555 PurpleKeyring *keyring = it->data;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
556
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
557 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
558 (gpointer)purple_keyring_get_name(keyring));
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
559 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
560 (gpointer)purple_keyring_get_id(keyring));
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
561 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
562
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
563 return options;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
564 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
565
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
566
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
567 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
568 /* Keyring plugin wrappers */
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
569 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
570
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
571 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
572 purple_keyring_close(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
573 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
574 PurpleKeyringClose close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
575
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
576 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
577
34190
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
578 if (keyring->is_cancelling) {
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
579 keyring->close_after_cancel = TRUE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
580 return;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
581 }
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
582 if (keyring->is_closing)
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
583 return;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
584 keyring->is_closing = TRUE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
585
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
586 close_cb = purple_keyring_get_close_keyring(keyring);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
587
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
588 if (close_cb != NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
589 close_cb();
34190
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
590
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
591 keyring->is_closing = FALSE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
592 }
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
593
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
594 static void
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
595 purple_keyring_cancel_requests(PurpleKeyring *keyring)
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
596 {
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
597 PurpleKeyringCancelRequests cancel_cb;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
598
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
599 g_return_if_fail(keyring != NULL);
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
600
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
601 if (keyring->is_cancelling)
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
602 return;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
603 keyring->is_cancelling = TRUE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
604
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
605 cancel_cb = purple_keyring_get_cancel_requests(keyring);
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
606
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
607 if (cancel_cb != NULL)
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
608 cancel_cb();
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
609
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
610 keyring->is_cancelling = FALSE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
611
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
612 if (keyring->close_after_cancel) {
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
613 keyring->close_after_cancel = FALSE;
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
614 purple_keyring_close(keyring);
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
615 }
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
616 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
617
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
618 static void
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
619 purple_keyring_drop_passwords_save_cb(PurpleAccount *account, GError *error,
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
620 gpointer _tracker)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
621 {
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
622 PurpleKeyringDropTracker *tracker = _tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
623
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
624 tracker->drop_outstanding--;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
625
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
626 if (!tracker->finished || tracker->drop_outstanding > 0)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
627 return;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
628
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
629 if (tracker->cb)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
630 tracker->cb(tracker->cb_data);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
631 g_free(tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
632 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
633
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
634 static void
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
635 purple_keyring_drop_passwords(PurpleKeyring *keyring,
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
636 PurpleKeyringDropCallback cb, gpointer data)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
637 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
638 GList *it;
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
639 PurpleKeyringSave save_cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
640 PurpleKeyringDropTracker *tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
641
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
642 g_return_if_fail(keyring != NULL);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
643
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
644 save_cb = purple_keyring_get_save_password(keyring);
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
645 g_assert(save_cb != NULL);
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
646
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
647 tracker = g_new0(PurpleKeyringDropTracker, 1);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
648 tracker->cb = cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
649 tracker->cb_data = data;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
650
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
651 for (it = purple_accounts_get_all(); it != NULL; it = it->next) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
652 PurpleAccount *account = it->data;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
653
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
654 tracker->drop_outstanding++;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
655 if (it->next == NULL)
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
656 tracker->finished = TRUE;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
657
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
658 save_cb(account, NULL, purple_keyring_drop_passwords_save_cb,
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
659 tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
660 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
661 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
662
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
663 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
664 purple_keyring_import_password(PurpleAccount *account, const gchar *keyring_id,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
665 const gchar *mode, const gchar *data, GError **error)
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
666 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
667 PurpleKeyring *keyring;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
668 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
669 PurpleKeyringImportPassword import;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
670
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
671 g_return_val_if_fail(account != NULL, FALSE);
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
672
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
673 if (keyring_id == NULL)
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
674 keyring_id = PURPLE_DEFAULT_KEYRING;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
675
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
676 purple_debug_misc("keyring", "Importing password for account %s to "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
677 "keyring %s.\n", purple_keyring_print_account(account),
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
678 keyring_id);
33982
58a0de711782 Added support for the PURPLE_PLUGIN_FLAG_AUTOLOAD flag, corrected a few bugs and crashed. The compatibility plugin is automatically loaded at startup, and works nicely in compatibility mode (read_sync, write_sync, import, export). Also, I played unsuccessfully with makefiles, so i moved the keyring up one directory. I've finally gotten to the point where I run "make && sudo make install" every now and then.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33981
diff changeset
679
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
680 keyring = purple_keyring_find_keyring_by_id(keyring_id);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
681 if (keyring == NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
682 if (error != NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
683 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
684 PURPLE_KEYRING_ERROR_BACKENDFAIL,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
685 _("Specified keyring is not registered."));
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
686 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
687 purple_debug_warning("Keyring", "Specified keyring is not "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
688 "registered, cannot import password info for account "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
689 "%s.\n", purple_keyring_print_account(account));
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
690 return FALSE;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
691 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
692
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
693 inuse = purple_keyring_get_inuse();
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
694 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
695 PurpleKeyringFailedImport *import;
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
696 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
697 *error = g_error_new(PURPLE_KEYRING_ERROR,
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
698 PURPLE_KEYRING_ERROR_NOKEYRING,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
699 _("No keyring loaded, cannot import password "
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
700 "info."));
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
701 }
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
702 purple_debug_warning("Keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
703 "No keyring loaded, cannot import password info for "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
704 "account %s.\n", purple_keyring_print_account(account));
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
705
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
706 import = g_new0(PurpleKeyringFailedImport, 1);
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
707 import->keyring_id = g_strdup(keyring_id);
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
708 import->mode = g_strdup(mode);
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
709 import->data = g_strdup(data);
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
710 g_hash_table_insert(purple_keyring_failed_imports, account,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
711 import);
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
712 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
713 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
714
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
715 if (inuse != keyring) {
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
716 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
717 *error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
718 PURPLE_KEYRING_ERROR_INTERNAL,
36130
aaeddb178055 s/id/ID/, as suggested by our Norwegian translator on Transifex.
Mark Doliner <mark@kingant.net>
parents: 35462
diff changeset
719 _("Specified keyring ID does not match the "
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
720 "loaded one."));
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
721 }
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
722 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
723 "Specified keyring %s is not currently used (%s). "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
724 "Data will be lost.\n", keyring_id,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
725 purple_keyring_get_id(inuse));
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
726 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
727 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
728
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
729 import = purple_keyring_get_import_password(inuse);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
730 if (import == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
731 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
732 purple_debug_misc("Keyring", "Configured keyring "
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
733 "cannot import password info. This might be "
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
734 "normal.\n");
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
735 }
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
736 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
737 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
738
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
739 return import(account, mode, data, error);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
740 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
741
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
742 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
743 purple_keyring_export_password(PurpleAccount *account, const gchar **keyring_id,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
744 const gchar **mode, gchar **data, GError **error,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
745 GDestroyNotify *destroy)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
746 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
747 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
748 PurpleKeyringExportPassword export;
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
749
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
750 g_return_val_if_fail(account != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
751 g_return_val_if_fail(keyring_id != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
752 g_return_val_if_fail(mode != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
753 g_return_val_if_fail(data != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
754 g_return_val_if_fail(error != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
755
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
756 inuse = purple_keyring_get_inuse();
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
757
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
758 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
759 PurpleKeyringFailedImport *import = g_hash_table_lookup(
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
760 purple_keyring_failed_imports, account);
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
761
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
762 if (import == NULL) {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
763 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
764 PURPLE_KEYRING_ERROR_NOKEYRING,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
765 _("No keyring configured, cannot export "
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
766 "password info."));
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
767 purple_debug_warning("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
768 "No keyring configured, cannot export password "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
769 "info.\n");
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
770 return FALSE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
771 } else {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
772 purple_debug_info("keyring", "No keyring configured, "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
773 "getting fallback export data for %s.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
774 purple_keyring_print_account(account));
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
775
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
776 *keyring_id = import->keyring_id;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
777 *mode = import->mode;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
778 *data = g_strdup(import->data);
34170
94102637e7c7 Coding style and entry description for GNOME Keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34169
diff changeset
779 *destroy = (GDestroyNotify)purple_str_wipe;
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
780 return TRUE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
781 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
782 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
783
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
784 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
785 purple_debug_misc("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
786 "Exporting password for account %s from keyring %s\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
787 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
788 purple_keyring_get_id(inuse));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
789 }
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
790
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
791 *keyring_id = purple_keyring_get_id(inuse);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
792
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
793 export = purple_keyring_get_export_password(inuse);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
794 if (export == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
795 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
796 purple_debug_misc("Keyring", "Configured keyring "
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
797 "cannot export password info. This might be "
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
798 "normal.\n");
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
799 }
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
800 *mode = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
801 *data = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
802 *destroy = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
803 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
804 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
805
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
806 return export(account, mode, data, error, destroy);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
807 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
808
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
809 void
34028
a3050b6df38e Remove deprecated API since we're targeting 3.0.0 here. Don't mind the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34027
diff changeset
810 purple_keyring_get_password(PurpleAccount *account,
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
811 PurpleKeyringReadCallback cb, gpointer data)
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
812 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
813 GError *error;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
814 PurpleKeyring *inuse;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
815 PurpleKeyringRead read_cb;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
816
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
817 g_return_if_fail(account != NULL);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
818
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
819 if (purple_keyring_is_quitting) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
820 purple_debug_error("keyring", "Cannot request a password while "
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
821 "quitting.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
822 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
823 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
824 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
825 PURPLE_KEYRING_ERROR_INTERNAL,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
826 _("Cannot request a password while quitting."));
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
827 cb(account, NULL, error, data);
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
828 g_error_free(error);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
829 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
830 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
831
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
832 inuse = purple_keyring_get_inuse();
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
833
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
834 if (inuse == NULL) {
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
835 purple_debug_error("keyring", "No keyring configured.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
836 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
837 return;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
838
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
839 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
840 PURPLE_KEYRING_ERROR_NOKEYRING,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
841 _("No keyring configured."));
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
842 cb(account, NULL, error, data);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
843 g_error_free(error);
34271
f76e88e80517 keyring: fix crash on g_assert
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34199
diff changeset
844 return;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
845 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
846
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
847 read_cb = purple_keyring_get_read_password(inuse);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
848 g_assert(read_cb != NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
849
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
850 purple_debug_info("keyring", "Reading password for account %s...\n",
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
851 purple_keyring_print_account(account));
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
852 read_cb(account, cb, data);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
853 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
854
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
855 static void
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
856 purple_keyring_set_password_save_cb(PurpleAccount *account, GError *error,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
857 gpointer _set_data)
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
858 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
859 PurpleKeyringSetPasswordData *set_data = _set_data;
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
860
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
861 g_return_if_fail(account != NULL);
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
862 g_return_if_fail(set_data != NULL);
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
863
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
864 if (error == NULL && purple_debug_is_verbose()) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
865 purple_debug_misc("keyring", "Password for account %s "
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
866 "saved successfully.\n",
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
867 purple_keyring_print_account(account));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
868 } else if (purple_debug_is_verbose()) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
869 purple_debug_warning("keyring", "Password for account %s "
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
870 "not saved successfully.\n",
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
871 purple_keyring_print_account(account));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
872 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
873
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
874 if (error != NULL) {
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
875 purple_notify_error(NULL, _("Keyrings"),
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
876 _("Failed to save a password in keyring."),
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34297
diff changeset
877 error->message, NULL);
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
878 }
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
879
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
880 if (set_data->cb != NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
881 set_data->cb(account, error, set_data->cb_data);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
882 g_free(set_data);
34032
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
883 }
2eeafc43c7f2 Rearrange code so we can drop the prototypes. Most of it was already
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34031
diff changeset
884
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
885 void
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
886 purple_keyring_set_password(PurpleAccount *account, const gchar *password,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
887 PurpleKeyringSaveCallback cb, gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
888 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
889 GError *error;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
890 PurpleKeyring *inuse;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
891 PurpleKeyringSave save_cb;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
892 PurpleKeyringSetPasswordData *set_data;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
893
33997
035d8594b66a Wrote a caching system that uses account->password to store password.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33996
diff changeset
894 g_return_if_fail(account != NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
895
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
896 if (purple_keyring_is_quitting) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
897 purple_debug_error("keyring", "Cannot save a password while "
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
898 "quitting.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
899 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
900 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
901 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
902 PURPLE_KEYRING_ERROR_INTERNAL,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
903 _("Cannot save a password while quitting."));
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
904 cb(account, error, data);
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
905 g_error_free(error);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
906 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
907 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
908
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
909 if (current_change_tracker != NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
910 purple_debug_error("keyring", "Cannot save a password during "
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
911 "password migration.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
912 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
913 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
914 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
915 PURPLE_KEYRING_ERROR_INTERNAL,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
916 _("Cannot save a password during password migration."));
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
917 cb(account, error, data);
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
918 g_error_free(error);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
919 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
920 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
921
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
922 inuse = purple_keyring_get_inuse();
33997
035d8594b66a Wrote a caching system that uses account->password to store password.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33996
diff changeset
923 if (inuse == NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
924 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
925 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
926 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
927 PURPLE_KEYRING_ERROR_NOKEYRING,
34199
73d122f25f2b Localize strings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34190
diff changeset
928 _("No keyring configured."));
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
929 cb(account, error, data);
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
930 g_error_free(error);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
931 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
932 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
933
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
934 save_cb = purple_keyring_get_save_password(inuse);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
935 g_assert(save_cb != NULL);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
936
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
937 set_data = g_new(PurpleKeyringSetPasswordData, 1);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
938 set_data->cb = cb;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
939 set_data->cb_data = data;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
940 purple_debug_info("keyring", "%s password for account %s...\n",
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
941 (password ? "Saving" : "Removing"),
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
942 purple_keyring_print_account(account));
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
943 save_cb(account, password, purple_keyring_set_password_save_cb, set_data);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
944 }
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
945
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
946 PurpleRequestFields *
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
947 purple_keyring_read_settings(void)
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
948 {
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
949 PurpleKeyring *inuse;
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
950 PurpleKeyringReadSettings read_settings;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
951
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
952 if (purple_keyring_is_quitting || current_change_tracker != NULL) {
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
953 purple_debug_error("keyring", "Cannot read settngs at the "
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
954 "moment.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
955 return NULL;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
956 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
957
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
958 inuse = purple_keyring_get_inuse();
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
959 if (inuse == NULL) {
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
960 purple_debug_error("keyring", "No keyring in use.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
961 return NULL;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
962 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
963
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
964 read_settings = purple_keyring_get_read_settings(inuse);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
965 if (read_settings == NULL)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
966 return NULL;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
967 return read_settings();
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
968 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
969
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
970 gboolean
34188
0680f2c10db3 Validation for internal keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34185
diff changeset
971 purple_keyring_apply_settings(void *notify_handle, PurpleRequestFields *fields)
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
972 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
973 PurpleKeyring *inuse;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
974 PurpleKeyringApplySettings apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
975
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
976 g_return_val_if_fail(fields != NULL, FALSE);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
977
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
978 if (purple_keyring_is_quitting || current_change_tracker != NULL) {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
979 purple_debug_error("keyring", "Cannot apply settngs at the "
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
980 "moment.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
981 return FALSE;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
982 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
983
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
984 inuse = purple_keyring_get_inuse();
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
985 if (inuse == NULL) {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
986 purple_debug_error("keyring", "No keyring in use.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
987 return FALSE;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
988 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
989
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
990 apply_settings = purple_keyring_get_apply_settings(inuse);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
991 if (apply_settings == NULL) {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
992 purple_debug_warning("keyring", "Applying settings not "
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
993 "supported.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
994 return FALSE;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
995 }
34188
0680f2c10db3 Validation for internal keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34185
diff changeset
996 return apply_settings(notify_handle, fields);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
997 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
998
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
999 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1000 /* PurpleKeyring accessors */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1001 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1002
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1003 PurpleKeyring *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1004 purple_keyring_new(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1005 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1006 return g_new0(PurpleKeyring, 1);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1007 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1008
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1009 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1010 purple_keyring_free(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1011 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1012 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1013
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1014 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1015 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1016 g_free(keyring);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1017 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1018
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1019 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1020 purple_keyring_get_name(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1021 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1022 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1023
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1024 return keyring->name;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1025 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1026
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1027 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1028 purple_keyring_get_id(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1029 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1030 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1031
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1032 return keyring->id;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1033 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1034
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1035 PurpleKeyringRead
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1036 purple_keyring_get_read_password(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1037 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1038 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1039
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1040 return keyring->read_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1041 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1042
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1043 PurpleKeyringSave
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1044 purple_keyring_get_save_password(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1045 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1046 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1047
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1048 return keyring->save_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1049 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1050
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1051 PurpleKeyringCancelRequests
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1052 purple_keyring_get_cancel_requests(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1053 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1054 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1055
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1056 return keyring->cancel_requests;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1057 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1058
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1059 PurpleKeyringClose
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1060 purple_keyring_get_close_keyring(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1061 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1062 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1063
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1064 return keyring->close_keyring;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1065 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1066
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1067 PurpleKeyringImportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1068 purple_keyring_get_import_password(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1069 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1070 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1071
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1072 return keyring->import_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1073 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1074
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1075 PurpleKeyringExportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1076 purple_keyring_get_export_password(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1077 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1078 g_return_val_if_fail(keyring != NULL, NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1079
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1080 return keyring->export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1081 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1082
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1083 PurpleKeyringReadSettings
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1084 purple_keyring_get_read_settings(const PurpleKeyring *keyring)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1085 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1086 g_return_val_if_fail(keyring != NULL, NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1087
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1088 return keyring->read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1089 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1090
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1091 PurpleKeyringApplySettings
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1092 purple_keyring_get_apply_settings(const PurpleKeyring *keyring)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1093 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1094 g_return_val_if_fail(keyring != NULL, NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1095
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1096 return keyring->apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1097 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1098
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1099 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1100 purple_keyring_set_name(PurpleKeyring *keyring, const gchar *name)
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1101 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1102 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1103 g_return_if_fail(name != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1104
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1105 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1106 keyring->name = g_strdup(name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1107 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1108
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1109 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1110 purple_keyring_set_id(PurpleKeyring *keyring, const gchar *id)
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1111 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1112 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1113 g_return_if_fail(id != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1114
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1115 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1116 keyring->id = g_strdup(id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1117 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1118
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1119 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1120 purple_keyring_set_read_password(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1121 PurpleKeyringRead read_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1122 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1123 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1124 g_return_if_fail(read_cb != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1125
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1126 keyring->read_password = read_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1127 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1128
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1129 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1130 purple_keyring_set_save_password(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1131 PurpleKeyringSave save_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1132 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1133 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1134 g_return_if_fail(save_cb != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1135
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1136 keyring->save_password = save_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1137 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1138
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1139 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1140 purple_keyring_set_cancel_requests(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1141 PurpleKeyringCancelRequests cancel_requests)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1142 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1143 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1144
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1145 keyring->cancel_requests = cancel_requests;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1146 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1147
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1148 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1149 purple_keyring_set_close_keyring(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1150 PurpleKeyringClose close_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1151 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1152 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1153
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1154 keyring->close_keyring = close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1155 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1156
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1157 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1158 purple_keyring_set_import_password(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1159 PurpleKeyringImportPassword import_password)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1160 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1161 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1162
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1163 keyring->import_password = import_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1164 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1165
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1166 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1167 purple_keyring_set_export_password(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1168 PurpleKeyringExportPassword export_password)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1169 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1170 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1171
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1172 keyring->export_password = export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1173 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1174
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1175 void
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1176 purple_keyring_set_read_settings(PurpleKeyring *keyring,
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1177 PurpleKeyringReadSettings read_settings)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1178 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1179 g_return_if_fail(keyring != NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1180
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1181 keyring->read_settings = read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1182 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1183
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1184 void
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1185 purple_keyring_set_apply_settings(PurpleKeyring *keyring,
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1186 PurpleKeyringApplySettings apply_settings)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1187 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1188 g_return_if_fail(keyring != NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1189
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1190 keyring->apply_settings = apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1191 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1192
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1193
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1194 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1195 /* Error Codes */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1196 /**************************************************************************/
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1197
33981
8c8fe2e5bbcd dded import/export in account.c, new version of internalkeyring.c, and added stuff to makefiles.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33978
diff changeset
1198 GQuark purple_keyring_error_domain(void)
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
1199 {
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
1200 return g_quark_from_static_string("libpurple keyring");
33970
4b6a0141a242 Fixed syntax and types error. keyring.c and keyring.h will now compile, but will issue warnings with -Wall
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33969
diff changeset
1201 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1202
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1203 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1204 /* Keyring Subsystem */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1205 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1206
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1207 static void purple_keyring_core_initialized_cb(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1208 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1209 if (purple_keyring_inuse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1210 purple_notify_error(NULL, _("Keyrings"),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1211 _("Failed to load selected keyring."),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1212 _("Check your system configuration or select another "
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34297
diff changeset
1213 "one in Preferences dialog."), NULL);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1214 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1215 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1216
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1217 static void purple_keyring_core_quitting_cb()
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1218 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1219 if (current_change_tracker != NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1220 PurpleKeyringChangeTracker *tracker = current_change_tracker;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1221 tracker->abort = TRUE;
35350
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
1222 if (tracker->old_kr)
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
1223 purple_keyring_cancel_requests(tracker->old_kr);
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
1224 if (current_change_tracker == tracker && tracker->new_kr)
c4a6a72c6662 Style: fix keyrings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35157
diff changeset
1225 purple_keyring_cancel_requests(tracker->new_kr);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1226 }
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1227
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1228 purple_keyring_is_quitting = TRUE;
34190
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
1229 if (purple_keyring_inuse != NULL)
b81cb5542862 Fix double close crash
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34188
diff changeset
1230 purple_keyring_cancel_requests(purple_keyring_inuse);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1231 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1232
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1233 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1234 purple_keyring_init(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1235 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1236 const gchar *touse;
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
1237 GList *plugins, *it;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1238
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1239 purple_keyring_keyrings = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1240 purple_keyring_inuse = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1241
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1242 purple_keyring_failed_imports = g_hash_table_new_full(g_direct_hash,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1243 g_direct_equal, NULL,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1244 (GDestroyNotify)purple_keyring_failed_import_free);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1245
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1246 /* void keyring_register(const char *keyring_id,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1247 * PurpleKeyring * keyring);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1248 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1249 * A signal called when keyring is registered.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1250 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1251 * @param keyring_id The keyring ID.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1252 * @param keyring The keyring.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1253 */
34819
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1254 purple_signal_register(purple_keyring_get_handle(), "keyring-register",
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1255 purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_STRING,
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1256 PURPLE_TYPE_KEYRING);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1257
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1258 /* void keyring_unregister(const char *keyring_id,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1259 * PurpleKeyring * keyring);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1260 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1261 * A signal called when keyring is unregistered.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1262 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1263 * @param keyring_id The keyring ID.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1264 * @param keyring The keyring.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1265 */
34819
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1266 purple_signal_register(purple_keyring_get_handle(), "keyring-unregister",
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1267 purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_STRING,
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1268 PURPLE_TYPE_KEYRING);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1269
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1270 /* void password_migration(PurpleAccount* account);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1271 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1272 * A signal called, when a password for the account was moved to another
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1273 * keyring.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1274 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1275 * @param account The account.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1276 */
34819
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1277 purple_signal_register(purple_keyring_get_handle(), "password-migration",
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1278 purple_marshal_VOID__POINTER, G_TYPE_NONE, 1, PURPLE_TYPE_ACCOUNT);
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1279
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1280 touse = purple_prefs_get_string("/purple/keyring/active");
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1281 if (touse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1282 purple_prefs_add_none("/purple/keyring");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1283 purple_prefs_add_string("/purple/keyring/active",
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1284 PURPLE_DEFAULT_KEYRING);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1285 purple_keyring_to_use = g_strdup(PURPLE_DEFAULT_KEYRING);
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1286 } else
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1287 purple_keyring_to_use = g_strdup(touse);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1288
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
1289 purple_keyring_pref_connect();
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1290
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
1291 plugins = purple_plugins_find_all();
37065
3546d731987e Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 37059 35362
diff changeset
1292 for (it = plugins; it != NULL; it = it->next) {
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36430
diff changeset
1293 PurplePlugin *plugin = PURPLE_PLUGIN(it->data);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36430
diff changeset
1294 PurplePluginInfo *info = purple_plugin_get_info(plugin);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1295
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36430
diff changeset
1296 if (strncmp(purple_plugin_info_get_id(info), "keyring-", 8) != 0)
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1297 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1298
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1299 if (purple_plugin_is_loaded(plugin))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1300 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1301
37065
3546d731987e Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 37059 35362
diff changeset
1302 if (purple_plugin_load(plugin, NULL)) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1303 purple_keyring_loaded_plugins = g_list_append(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1304 purple_keyring_loaded_plugins, plugin);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1305 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1306 }
36430
559d5d9d8a6c Refactored the codebase to remove purple_plugins_free_found_list()
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
1307 g_list_free(plugins);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1308
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1309 if (purple_keyring_inuse == NULL)
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1310 purple_debug_error("keyring", "Selected keyring failed to load\n");
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1311
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1312 purple_signal_connect(purple_get_core(), "core-initialized",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1313 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1314 PURPLE_CALLBACK(purple_keyring_core_initialized_cb), NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1315 purple_signal_connect(purple_get_core(), "quitting",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1316 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1317 PURPLE_CALLBACK(purple_keyring_core_quitting_cb), NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1318 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1319
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1320 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1321 purple_keyring_uninit(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1322 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1323 GList *it;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1324
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1325 purple_keyring_pref_disconnect();
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1326
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1327 g_free(purple_keyring_to_use);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1328 purple_keyring_inuse = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1329
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1330 g_hash_table_destroy(purple_keyring_failed_imports);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1331 purple_keyring_failed_imports = NULL;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1332
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1333 for (it = g_list_first(purple_keyring_loaded_plugins); it != NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1334 it = g_list_next(it))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1335 {
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36430
diff changeset
1336 PurplePlugin *plugin = PURPLE_PLUGIN(it->data);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1337 if (g_list_find(purple_plugins_get_loaded(), plugin) == NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1338 continue;
36509
86e882c3cfdf Refactored libpurple according to the changes
Ankit Vani <a@nevitus.org>
parents: 36449
diff changeset
1339 purple_plugin_unload(plugin, NULL);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1340 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1341 g_list_free(purple_keyring_loaded_plugins);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1342 purple_keyring_loaded_plugins = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1343
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1344 purple_signals_unregister_by_instance(purple_keyring_get_handle());
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1345 purple_signals_disconnect_by_handle(purple_keyring_get_handle());
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1346 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1347
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1348 void *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1349 purple_keyring_get_handle(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1350 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1351 static int handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1352
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1353 return &handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1354 }
34819
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1355
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1356 static PurpleKeyring *
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1357 purple_keyring_copy(PurpleKeyring *keyring)
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1358 {
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1359 PurpleKeyring *keyring_copy;
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1360
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1361 g_return_val_if_fail(keyring != NULL, NULL);
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1362
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1363 keyring_copy = purple_keyring_new();
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1364 *keyring_copy = *keyring;
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1365
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1366 keyring_copy->name = g_strdup(keyring->name);
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1367 keyring_copy->id = g_strdup(keyring->id);
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1368
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1369 return keyring_copy;
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1370 }
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1371
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1372 GType
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1373 purple_keyring_get_type(void)
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1374 {
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1375 static GType type = 0;
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1376
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1377 if (type == 0) {
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1378 type = g_boxed_type_register_static("PurpleKeyring",
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1379 (GBoxedCopyFunc)purple_keyring_copy,
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1380 (GBoxedFreeFunc)purple_keyring_free);
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1381 }
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1382
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1383 return type;
727f35cfde65 Added a boxed type for PurpleKeyring. Refactored keyring to use GType instead of PurpleValue.
Ankit Vani <a@nevitus.org>
parents: 34199
diff changeset
1384 }

mercurial