libpurple/keyring.c

Sat, 11 May 2013 15:34:47 +0200

author
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
date
Sat, 11 May 2013 15:34:47 +0200
branch
soc.2008.masterpassword
changeset 34185
cb2fe6b04447
parent 34170
94102637e7c7
child 34188
0680f2c10db3
permissions
-rw-r--r--

Initial support for keyring settings

33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1 /**
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
2 * @file keyring.c Keyring API
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
3 * @ingroup core
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
4 */
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
5
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
6 /* purple
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
7 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
8 * 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
9 * 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
10 * source distribution.
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 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
13 * 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
14 * 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
15 * (at your option) any later version.
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 * 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
18 * 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
19 * 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
20 * 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
21 *
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
22 * 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
23 * 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
24 * 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
25 */
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
26
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
27 #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
28 #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
29 #include "account.h"
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
30 #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
31 #include "signals.h"
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
32 #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
33 #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
34 #include "internal.h"
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
35 #include "dbus-maybe.h"
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
36
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
37 struct _PurpleKeyring
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
38 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
39 gchar *name;
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
40 gchar *id;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
41 PurpleKeyringRead read_password;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
42 PurpleKeyringSave save_password;
34138
2bda8642afa3 Early cancelling password requests before quitting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34137
diff changeset
43 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
44 PurpleKeyringClose close_keyring;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
45 PurpleKeyringImportPassword import_password;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
46 PurpleKeyringExportPassword export_password;
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
47 PurpleKeyringReadSettings read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
48 PurpleKeyringApplySettings apply_settings;
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;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
56 PurpleKeyring *new;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
57 PurpleKeyring *old;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
58
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
59 /**
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) {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
219 purple_keyring_close(tracker->old);
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
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
223 purple_keyring_inuse = tracker->new;
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
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
234 purple_keyring_close(tracker->new);
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",
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
238 purple_keyring_get_id(tracker->old));
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,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
246 "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
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
266 if (g_error_matches(error, PURPLE_KEYRING_ERROR,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
267 PURPLE_KEYRING_ERROR_NOPASSWORD)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
268 if (purple_debug_is_verbose()) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
269 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
270 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
271 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
272 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
273 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
274 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
275 PURPLE_KEYRING_ERROR_ACCESSDENIED)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
276 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
277 "keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
278 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
279 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
280 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
281 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
282 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
283 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
284 PURPLE_KEYRING_ERROR_CANCELLED)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
285 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
286 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
287 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
288 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
289 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
290 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
291 } else if (g_error_matches(error, PURPLE_KEYRING_ERROR,
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
292 PURPLE_KEYRING_ERROR_BACKENDFAIL)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
293 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
294 "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
295 "Aborting changes.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
296 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
297 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
298 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
299 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
300 tracker->error = g_error_copy(error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
301 } else if (error != NULL) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
302 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
303 "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
304 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
305 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
306 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
307 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
308 }
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
309
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
310 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
311 account);
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
312
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
313 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
314 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
315
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
316 /* This was the last one. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
317 if (tracker->abort && !tracker->force) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
318 tracker->succeeded = FALSE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
319 purple_keyring_drop_passwords(tracker->new,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
320 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
321 } else {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
322 tracker->succeeded = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
323 purple_keyring_drop_passwords(tracker->old,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
324 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
325 }
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
326 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
327
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
328 static void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
329 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
330 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
331 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
332 PurpleKeyringChangeTracker *tracker = _tracker;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
333 PurpleKeyringSave save_cb;
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
334
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
335 g_return_if_fail(account != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
336 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
337
34136
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
338 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
339 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
340 return;
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
341 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
342
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
343 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
344 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
345 PURPLE_KEYRING_ERROR,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
346 PURPLE_KEYRING_ERROR_NOPASSWORD)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
347 /* 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
348 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
349 tracker->abort = TRUE;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
350 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
351 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
352 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
353 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
354
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
355 save_cb = purple_keyring_get_save_password(tracker->new);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
356 g_assert(save_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
357
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
358 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
359 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
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 void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
362 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
363 PurpleKeyringSetInUseCallback cb, gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
364 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
365 PurpleKeyring *oldkeyring;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
366 PurpleKeyringChangeTracker *tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
367 GList *it;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
368 PurpleKeyringRead read_cb;
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
369
34139
37d7d0e22484 Revert existing password migration at exit, allow cancelling kwallet requests
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34138
diff changeset
370 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
371 GError *error;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
372 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
373 "session already running.\n");
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
374 if (cb == NULL)
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
375 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
376 error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
377 PURPLE_KEYRING_ERROR_INTERNAL,
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
378 "There is a password migration session already running");
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
379 cb(error, data);
34132
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
380 g_error_free(error);
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
381 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
382 }
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
383
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
384 oldkeyring = purple_keyring_get_inuse();
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
385
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
386 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
387 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
388 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
389 "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
390 (newkeyring != NULL) ?
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
391 newkeyring->id : "(null)");
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
392 }
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
393 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
394 cb(NULL, data);
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
395 return;
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
396 }
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
397
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
398 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
399 (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
400
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
401 if (oldkeyring == NULL) { /* No keyring was set before. */
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
402 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
403 purple_debug_misc("keyring", "Setting keyring for the "
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
404 "first time: %s.\n", newkeyring->id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
405 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
406
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
407 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
408 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
409 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
410 cb(NULL, data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
411 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
412 }
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
413
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
414 /* Starting a migration. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
415
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
416 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
417 g_assert(read_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
418
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
419 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
420 oldkeyring->id);
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 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
423 current_change_tracker = tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
424
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
425 tracker->cb = cb;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
426 tracker->cb_data = data;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
427 tracker->new = newkeyring;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
428 tracker->old = oldkeyring;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
429 tracker->force = force;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
430
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
431 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
432 if (tracker->abort) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
433 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
434 break;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
435 }
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
436 tracker->read_outstanding++;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
437
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
438 if (it->next == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
439 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
440
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
441 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
442 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
443 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
444
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
445 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
446 purple_keyring_register(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
447 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
448 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
449
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
450 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
451
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
452 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
453
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
454 purple_debug_info("keyring", "Registering keyring: %s\n",
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
455 keyring_id ? keyring_id : "(null)");
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
456
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
457 if (purple_keyring_get_id(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
458 purple_keyring_get_name(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
459 purple_keyring_get_read_password(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
460 purple_keyring_get_save_password(keyring) == NULL) {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
461 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
462 "required fields are missing.\n",
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
463 keyring_id ? keyring_id : "(null)");
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
464 return;
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
465 }
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
466
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
467 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
468 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
469 "Keyring is already registered.\n");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
470 return;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
471 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
472
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
473 /* 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
474 if (purple_keyring_inuse == NULL &&
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
475 g_strcmp0(keyring_id, purple_keyring_to_use) == 0) {
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
476 purple_debug_info("keyring", "Keyring %s matches keyring to "
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
477 "use, using it.\n", keyring_id);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
478 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
479 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
480
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
481 PURPLE_DBUS_REGISTER_POINTER(keyring, PurpleKeyring);
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
482 purple_signal_emit(purple_keyring_get_handle(), "keyring-register",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
483 keyring_id, keyring);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
484 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
485 purple_debug_info("keyring", "Registered keyring: %s.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
486 keyring_id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
487 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
488
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
489 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
490 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
491 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
492
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
493 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
494 purple_keyring_unregister(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
495 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
496 PurpleKeyring *inuse;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
497 PurpleKeyring *fallback;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
498 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
499
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
500 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
501
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
502 keyring_id = purple_keyring_get_id(keyring);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
503
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
504 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
505 keyring_id);
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
506
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
507 purple_signal_emit(purple_keyring_get_handle(), "keyring-unregister",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
508 keyring_id, keyring);
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
509 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
510
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
511 inuse = purple_keyring_get_inuse();
34036
bf17ffca901d Give this a better name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34034
diff changeset
512 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
513
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
514 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
515 if (inuse != fallback) {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
516 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
517 } else {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
518 fallback = NULL;
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
519 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
520 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
521 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
522
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
523 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
524 keyring);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
525 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
526
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
527 GList *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
528 purple_keyring_get_options(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
529 {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
530 GList *options = NULL;
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
531 GList *it;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
532 static gchar currentDisabledName[40];
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
533
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
534 if (purple_keyring_get_inuse() == NULL && purple_keyring_to_use != NULL
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
535 && purple_keyring_to_use[0] != '\0') {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
536 g_snprintf(currentDisabledName, sizeof(currentDisabledName),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
537 _("%s (disabled)"), purple_keyring_to_use);
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
538
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
539 options = g_list_append(options, currentDisabledName);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
540 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
541 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
542
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
543 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
544 PurpleKeyring *keyring = it->data;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
545
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
546 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
547 (gpointer)purple_keyring_get_name(keyring));
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
548 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
549 (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
550 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
551
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
552 return options;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
553 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
554
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
555
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
556 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
557 /* 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
558 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
559
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
560 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
561 purple_keyring_close(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
562 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
563 PurpleKeyringClose close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
564
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
565 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
566
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
567 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
568
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
569 if (close_cb != NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
570 close_cb();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
571 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
572
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
573 static void
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
574 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
575 gpointer _tracker)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
576 {
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
577 PurpleKeyringDropTracker *tracker = _tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
578
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
579 tracker->drop_outstanding--;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
580
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
581 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
582 return;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
583
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
584 if (tracker->cb)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
585 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
586 g_free(tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
587 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
588
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
589 static void
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
590 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
591 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
592 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
593 GList *it;
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
594 PurpleKeyringSave save_cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
595 PurpleKeyringDropTracker *tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
596
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
597 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
598
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
599 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
600 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
601
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
602 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
603 tracker->cb = cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
604 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
605
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
606 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
607 PurpleAccount *account = it->data;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
608
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
609 tracker->drop_outstanding++;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
610 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
611 tracker->finished = TRUE;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
612
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
613 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
614 tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
615 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
616 }
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
617
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
618 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
619 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
620 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
621 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
622 PurpleKeyring *keyring;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
623 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
624 PurpleKeyringImportPassword import;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
625
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
626 g_return_val_if_fail(account != NULL, FALSE);
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
627
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
628 if (keyring_id == NULL)
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
629 keyring_id = PURPLE_DEFAULT_KEYRING;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
630
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
631 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
632 "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
633 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
634
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
635 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
636 if (keyring == NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
637 if (error != NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
638 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
639 PURPLE_KEYRING_ERROR_BACKENDFAIL,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
640 "Specified keyring is not registered.");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
641 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
642 purple_debug_warning("Keyring", "Specified keyring is not "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
643 "registered, cannot import password info for account "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
644 "%s.\n", purple_keyring_print_account(account));
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
645 return FALSE;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
646 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
647
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
648 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
649 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
650 PurpleKeyringFailedImport *import;
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
651 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
652 *error = g_error_new(PURPLE_KEYRING_ERROR,
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
653 PURPLE_KEYRING_ERROR_NOKEYRING,
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
654 "No keyring loaded, cannot import password "
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
655 "info");
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
656 }
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
657 purple_debug_warning("Keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
658 "No keyring loaded, cannot import password info for "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
659 "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
660
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
661 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
662 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
663 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
664 import->data = g_strdup(data);
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
665 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
666 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
667 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
668 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
669
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
670 if (inuse != keyring) {
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
671 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
672 *error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
673 PURPLE_KEYRING_ERROR_INTERNAL,
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
674 "Specified keyring id does not match the "
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
675 "loaded one.");
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
676 }
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
677 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
678 "Specified keyring %s is not currently used (%s). "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
679 "Data will be lost.\n", keyring_id,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
680 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
681 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
682 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
683
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
684 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
685 if (import == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
686 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
687 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
688 "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
689 "normal.\n");
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
690 }
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
691 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
692 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
693
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
694 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
695 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
696
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
697 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
698 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
699 const gchar **mode, gchar **data, GError **error,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
700 GDestroyNotify *destroy)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
701 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
702 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
703 PurpleKeyringExportPassword export;
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
704
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
705 g_return_val_if_fail(account != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
706 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
707 g_return_val_if_fail(mode != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
708 g_return_val_if_fail(data != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
709 g_return_val_if_fail(error != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
710
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
711 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
712
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
713 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
714 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
715 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
716
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
717 if (import == NULL) {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
718 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
719 PURPLE_KEYRING_ERROR_NOKEYRING,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
720 "No keyring configured, cannot export password "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
721 "info");
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
722 purple_debug_warning("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
723 "No keyring configured, cannot export password "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
724 "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
725 return FALSE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
726 } else {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
727 purple_debug_info("keyring", "No keyring configured, "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
728 "getting fallback export data for %s.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
729 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
730
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
731 *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
732 *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
733 *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
734 *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
735 return TRUE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
736 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
737 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
738
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
739 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
740 purple_debug_misc("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
741 "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
742 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
743 purple_keyring_get_id(inuse));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
744 }
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
745
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
746 *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
747
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
748 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
749 if (export == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
750 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
751 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
752 "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
753 "normal.\n");
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
754 }
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
755 *mode = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
756 *data = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
757 *destroy = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
758 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
759 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
760
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
761 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
762 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
763
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
764 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
765 purple_keyring_get_password(PurpleAccount *account,
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
766 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
767 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
768 GError *error;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
769 PurpleKeyring *inuse;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
770 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
771
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
772 g_return_if_fail(account != NULL);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
773
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
774 if (purple_keyring_is_quitting) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
775 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
776 "quitting.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
777 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
778 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
779 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
780 PURPLE_KEYRING_ERROR_INTERNAL,
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
781 "Cannot request a password while quitting.");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
782 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
783 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
784 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
785 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
786
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
787 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
788
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
789 if (inuse == NULL) {
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
790 purple_debug_error("keyring", "No keyring configured.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
791 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
792 return;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
793
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
794 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
795 PURPLE_KEYRING_ERROR_NOKEYRING,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
796 "No keyring configured.");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
797 cb(account, NULL, error, data);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
798 g_error_free(error);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
799 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
800
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
801 read_cb = purple_keyring_get_read_password(inuse);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
802 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
803
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
804 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
805 purple_keyring_print_account(account));
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
806 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
807 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
808
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
809 static void
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
810 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
811 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
812 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
813 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
814
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
815 g_return_if_fail(account != NULL);
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
816 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
817
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
818 if (error == NULL && purple_debug_is_verbose()) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
819 purple_debug_misc("keyring", "Password for account %s "
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
820 "saved successfully.\n",
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
821 purple_keyring_print_account(account));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
822 } else if (purple_debug_is_verbose()) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
823 purple_debug_warning("keyring", "Password for account %s "
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
824 "not saved successfully.\n",
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
825 purple_keyring_print_account(account));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
826 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
827
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
828 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
829 purple_notify_error(NULL, _("Keyrings"),
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
830 _("Failed to save a password in 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
831 error->message);
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
832 }
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
833
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
834 if (set_data->cb != NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
835 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
836 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
837 }
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
838
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
839 void
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
840 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
841 PurpleKeyringSaveCallback cb, gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
842 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
843 GError *error;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
844 PurpleKeyring *inuse;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
845 PurpleKeyringSave save_cb;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
846 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
847
33997
035d8594b66a Wrote a caching system that uses account->password to store password.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33996
diff changeset
848 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
849
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
850 if (purple_keyring_is_quitting) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
851 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
852 "quitting.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
853 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
854 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
855 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
856 PURPLE_KEYRING_ERROR_INTERNAL,
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
857 "Cannot save a password while quitting.");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
858 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
859 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
860 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
861 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
862
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
863 if (current_change_tracker != NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
864 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
865 "password migration.\n");
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
866 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
867 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
868 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
869 PURPLE_KEYRING_ERROR_INTERNAL,
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
870 "Cannot save a password during password migration.");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
871 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
872 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
873 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
874 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
875
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
876 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
877 if (inuse == NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
878 if (cb == NULL)
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
879 return;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
880 error = g_error_new(PURPLE_KEYRING_ERROR,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
881 PURPLE_KEYRING_ERROR_NOKEYRING,
33997
035d8594b66a Wrote a caching system that uses account->password to store password.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33996
diff changeset
882 "No keyring configured.");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
883 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
884 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
885 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
886 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
887
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
888 save_cb = purple_keyring_get_save_password(inuse);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
889 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
890
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
891 set_data = g_new(PurpleKeyringSetPasswordData, 1);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
892 set_data->cb = cb;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
893 set_data->cb_data = data;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
894 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
895 (password ? "Saving" : "Removing"),
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
896 purple_keyring_print_account(account));
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
897 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
898 }
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
899
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
900 PurpleRequestFields *
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
901 purple_keyring_read_settings(void)
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
902 {
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
903 PurpleKeyring *inuse;
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
904 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
905
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
906 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
907 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
908 "moment.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
909 return NULL;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
910 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
911
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
912 inuse = purple_keyring_get_inuse();
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
913 if (inuse == NULL) {
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
914 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
915 return NULL;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
916 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
917
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
918 read_settings = purple_keyring_get_read_settings(inuse);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
919 if (read_settings == NULL)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
920 return NULL;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
921 return read_settings();
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
922 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
923
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
924 gboolean
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
925 purple_keyring_apply_settings(PurpleRequestFields *fields)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
926 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
927 PurpleKeyring *inuse;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
928 PurpleKeyringApplySettings apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
929
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
930 g_return_val_if_fail(fields != NULL, FALSE);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
931
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
932 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
933 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
934 "moment.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
935 return FALSE;
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
936 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
937
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
938 inuse = purple_keyring_get_inuse();
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
939 if (inuse == NULL) {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
940 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
941 return FALSE;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
942 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
943
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
944 apply_settings = purple_keyring_get_apply_settings(inuse);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
945 if (apply_settings == NULL) {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
946 purple_debug_warning("keyring", "Applying settings not "
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
947 "supported.\n");
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
948 return FALSE;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
949 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
950 return apply_settings(fields);
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
951 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
952
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
953 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
954 /* PurpleKeyring accessors */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
955 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
956
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
957 PurpleKeyring *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
958 purple_keyring_new(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
959 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
960 return g_new0(PurpleKeyring, 1);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
961 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
962
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
963 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
964 purple_keyring_free(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
965 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
966 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
967
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
968 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
969 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
970 g_free(keyring);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
971 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
972
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
973 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
974 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
975 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
976 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
977
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
978 return keyring->name;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
979 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
980
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
981 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
982 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
983 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
984 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
985
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
986 return keyring->id;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
987 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
988
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
989 PurpleKeyringRead
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
990 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
991 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
992 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
993
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
994 return keyring->read_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
995 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
996
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
997 PurpleKeyringSave
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
998 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
999 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1000 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
1001
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1002 return keyring->save_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1003 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1004
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1005 PurpleKeyringCancelRequests
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1006 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
1007 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1008 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
1009
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1010 return keyring->cancel_requests;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1013 PurpleKeyringClose
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1014 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
1015 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1016 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
1017
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1018 return keyring->close_keyring;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1019 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1020
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1021 PurpleKeyringImportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1022 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
1023 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1024 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
1025
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1026 return keyring->import_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1027 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1028
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1029 PurpleKeyringExportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1030 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
1031 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1032 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
1033
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1034 return keyring->export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1035 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1036
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1037 PurpleKeyringReadSettings
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1038 purple_keyring_get_read_settings(const PurpleKeyring *keyring)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1039 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1040 g_return_val_if_fail(keyring != NULL, NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1041
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1042 return keyring->read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1043 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1044
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1045 PurpleKeyringApplySettings
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1046 purple_keyring_get_apply_settings(const PurpleKeyring *keyring)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1047 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1048 g_return_val_if_fail(keyring != NULL, NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1049
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1050 return keyring->apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1051 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1052
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1053 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1054 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
1055 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1056 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1057 g_return_if_fail(name != NULL);
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 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1060 keyring->name = g_strdup(name);
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1063 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1064 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
1065 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1066 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1067 g_return_if_fail(id != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1068
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1069 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1070 keyring->id = g_strdup(id);
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1073 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1074 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
1075 PurpleKeyringRead read_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1076 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1077 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1078 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
1079
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1080 keyring->read_password = read_cb;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1083 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1084 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
1085 PurpleKeyringSave save_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1086 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1087 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1088 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
1089
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1090 keyring->save_password = save_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1091 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1092
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1093 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1094 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
1095 PurpleKeyringCancelRequests cancel_requests)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1096 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1097 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1098
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1099 keyring->cancel_requests = cancel_requests;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1100 }
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 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1103 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
1104 PurpleKeyringClose close_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1105 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1106 g_return_if_fail(keyring != NULL);
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 keyring->close_keyring = close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1109 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1110
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1111 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1112 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
1113 PurpleKeyringImportPassword import_password)
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_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1116
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1117 keyring->import_password = import_password;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1120 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1121 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
1122 PurpleKeyringExportPassword export_password)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1123 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1124 g_return_if_fail(keyring != 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->export_password = export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1127 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1128
34185
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1129 void
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1130 purple_keyring_set_read_settings(PurpleKeyring *keyring,
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1131 PurpleKeyringReadSettings read_settings)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1132 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1133 g_return_if_fail(keyring != NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1134
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1135 keyring->read_settings = read_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1136 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1137
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1138 void
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1139 purple_keyring_set_apply_settings(PurpleKeyring *keyring,
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1140 PurpleKeyringApplySettings apply_settings)
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1141 {
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1142 g_return_if_fail(keyring != NULL);
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1143
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1144 keyring->apply_settings = apply_settings;
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1145 }
cb2fe6b04447 Initial support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34170
diff changeset
1146
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1147
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1148 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1149 /* Error Codes */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1150 /**************************************************************************/
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1151
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
1152 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
1153 {
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
1154 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
1155 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1156
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1157 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1158 /* Keyring Subsystem */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1159 /**************************************************************************/
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 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
1162 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1163 if (purple_keyring_inuse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1164 purple_notify_error(NULL, _("Keyrings"),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1165 _("Failed to load selected keyring."),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1166 _("Check your system configuration or select another "
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1167 "one in Preferences dialog."));
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1168 }
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1171 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
1172 {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1173 PurpleKeyringCancelRequests cancel;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1174
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1175 if (current_change_tracker != NULL) {
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1176 PurpleKeyringChangeTracker *tracker = current_change_tracker;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1177 tracker->abort = TRUE;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1178 if (tracker->old) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1179 cancel = purple_keyring_get_cancel_requests(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1180 tracker->old);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1181 if (cancel)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1182 cancel();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1183 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1184 if (current_change_tracker == tracker && tracker->new) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1185 cancel = purple_keyring_get_cancel_requests(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1186 tracker->new);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1187 if (cancel)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1188 cancel();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1189 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1190 }
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1191
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1192 purple_keyring_is_quitting = TRUE;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1193 if (purple_keyring_inuse != NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1194 cancel = purple_keyring_get_cancel_requests(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1195 purple_keyring_inuse);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1196 if (cancel)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1197 cancel();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1198 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1199 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1200
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1201 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1202 purple_keyring_init(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1203 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1204 const gchar *touse;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1205 GList *it;
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 purple_keyring_keyrings = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1208 purple_keyring_inuse = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1209
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1210 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
1211 g_direct_equal, NULL,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1212 (GDestroyNotify)purple_keyring_failed_import_free);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1213
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1214 /* void keyring_register(const char *keyring_id,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1215 * PurpleKeyring * keyring);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1216 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1217 * A signal called when keyring is registered.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1218 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1219 * @param keyring_id The keyring ID.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1220 * @param keyring The keyring.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1221 */
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1222 purple_signal_register(purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1223 "keyring-register",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1224 purple_marshal_VOID__POINTER_POINTER,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1225 NULL, 2,
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1226 purple_value_new(PURPLE_TYPE_STRING),
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1227 purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *"));
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1228
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1229 /* void keyring_unregister(const char *keyring_id,
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1230 * PurpleKeyring * keyring);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1231 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1232 * A signal called when keyring is unregistered.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1233 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1234 * @param keyring_id The keyring ID.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1235 * @param keyring The keyring.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1236 */
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1237 purple_signal_register(purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1238 "keyring-unregister",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1239 purple_marshal_VOID__POINTER_POINTER,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1240 NULL, 2,
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1241 purple_value_new(PURPLE_TYPE_STRING),
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1242 purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *"));
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1243
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1244 /* void password_migration(PurpleAccount* account);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1245 *
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1246 * 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
1247 * 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 * @param account The account.
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1250 */
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1251 purple_signal_register(purple_keyring_get_handle(),
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1252 "password-migration",
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1253 purple_marshal_VOID__POINTER,
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1254 NULL, 1,
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1255 purple_value_new(PURPLE_TYPE_BOXED, "PurpleAccount *"));
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1256
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1257 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
1258 if (touse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1259 purple_prefs_add_none("/purple/keyring");
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1260 purple_prefs_add_string("/purple/keyring/active",
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1261 PURPLE_DEFAULT_KEYRING);
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1262 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
1263 } else
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1264 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
1265
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
1266 purple_keyring_pref_connect();
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1267
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1268 for (it = purple_plugins_get_all(); it != NULL; it = it->next)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1269 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1270 PurplePlugin *plugin = (PurplePlugin *)it->data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1271
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1272 if (plugin->info == NULL || plugin->info->id == NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1273 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1274 if (strncmp(plugin->info->id, "keyring-", 8) != 0)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1275 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1276
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1277 if (purple_plugin_is_loaded(plugin))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1278 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1279
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1280 if (purple_plugin_load(plugin))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1281 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1282 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
1283 purple_keyring_loaded_plugins, plugin);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1284 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1285 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1286
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1287 if (purple_keyring_inuse == NULL)
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1288 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
1289
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1290 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
1291 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1292 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
1293 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
1294 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1295 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
1296 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1297
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1298 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1299 purple_keyring_uninit(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1300 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1301 GList *it;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1302
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1303 purple_keyring_pref_disconnect();
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1304
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1305 g_free(purple_keyring_to_use);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1306 purple_keyring_inuse = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1307
34168
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1308 g_hash_table_destroy(purple_keyring_failed_imports);
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1309 purple_keyring_failed_imports = NULL;
449a39c8e26f keyring.c refactoring: finish it
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34167
diff changeset
1310
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1311 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
1312 it = g_list_next(it))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1313 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1314 PurplePlugin *plugin = (PurplePlugin *)it->data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1315 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
1316 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1317 purple_plugin_unload(plugin);
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 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
1320 purple_keyring_loaded_plugins = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1321
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1322 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
1323 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
1324 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1325
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1326 void *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1327 purple_keyring_get_handle(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1328 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1329 static int handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1330
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1331 return &handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1332 }

mercurial