libpurple/keyring.c

Sun, 28 Apr 2013 12:28:20 +0200

author
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
date
Sun, 28 Apr 2013 12:28:20 +0200
branch
soc.2008.masterpassword
changeset 34167
43db4e8d785a
parent 34166
8be287b0d6be
child 34168
449a39c8e26f
permissions
-rw-r--r--

keyring.c refactoring: import, export

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 PurpleKeyringChangeMaster change_master;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
46 PurpleKeyringImportPassword import_password;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
47 PurpleKeyringExportPassword export_password;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
48 };
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
49
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
50 typedef struct
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
51 {
34137
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
52 GError *error;
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
53 PurpleKeyringSetInUseCallback cb;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
54 gpointer cb_data;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
55 PurpleKeyring *new;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
56 PurpleKeyring *old;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
57
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 * 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
60 */
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
61 gboolean finished;
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
62 int read_outstanding;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
63
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
64 gboolean abort;
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
65 gboolean force;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
66 gboolean succeeded;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
67 } PurpleKeyringChangeTracker;
33991
0eb45874d73a Made more calls asynch, enhanced error checking and reporting.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33987
diff changeset
68
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
69 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
70
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
71 typedef struct
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
72 {
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
73 PurpleKeyringDropCallback cb;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
74 gpointer cb_data;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
75
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
76 gboolean finished;
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
77 int drop_outstanding;
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
78 } PurpleKeyringDropTracker;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
79
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
80 typedef struct
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
81 {
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
82 PurpleKeyringSaveCallback cb;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
83 gpointer cb_data;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
84 } PurpleKeyringSetPasswordData;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
85
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
86 typedef struct
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
87 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
88 gchar *keyring_id;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
89 gchar *mode;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
90 gchar *data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
91 } PurpleKeyringFailedImport;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
92
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
93 static void
34137
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
94 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
95 {
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
96 if (tracker->error)
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
97 g_error_free(tracker->error);
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
98 g_free(tracker);
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
99 }
d53bf5bde2c0 Fix use-after-free in error reporting
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34136
diff changeset
100
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
101 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
102 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
103 {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
104 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
105
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
106 g_free(import->keyring_id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
107 g_free(import->mode);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
108 g_free(import->data);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
109 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
110 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
111
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
112 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
113 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
114
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
115 static void
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
116 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
117 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
118
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
119 /* A list of available keyrings */
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
120 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
121
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
122 /* Keyring being used. */
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
123 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
124
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
125 /* 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
126 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
127
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
128 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
129 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
130 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
131 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
132 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
133
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
134 static const gchar *
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
135 purple_keyring_print_account(PurpleAccount *account)
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
136 {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
137 static gchar print_buff[100];
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
138
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
139 if (account == NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
140 g_snprintf(print_buff, 100, "(null)");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
141 return print_buff;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
142 }
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 g_snprintf(print_buff, 100, "%s:%s",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
145 purple_account_get_protocol_id(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
146 purple_account_get_username(account));
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
147 return print_buff;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
148 }
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
149
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 /* Setting used keyrings */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
152 /**************************************************************************/
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
153
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
154 PurpleKeyring *
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
155 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
156 {
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
157 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
158
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
159 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
160 PurpleKeyring *keyring = it->data;
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
161 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
162
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
163 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
164 return keyring;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
165 }
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 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
168 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
169
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
170 static void
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
171 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
172 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
173 {
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
174 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
175
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 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
177 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
178 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
179
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
180 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
181 g_return_if_fail(new_keyring != NULL);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
182
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
183 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
184 }
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 static void
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
187 purple_keyring_pref_connect(void)
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
188 {
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
189 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
190
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
191 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
192 "/purple/keyring/active", purple_keyring_pref_callback, NULL);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
193 }
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 static void
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
196 purple_keyring_pref_disconnect(void)
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
197 {
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
198 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
199
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
200 purple_prefs_disconnect_callback(purple_keyring_pref_cbid);
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
201 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
202 }
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
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
204 PurpleKeyring *
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
205 purple_keyring_get_inuse(void)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
206 {
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
207 return purple_keyring_inuse;
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
208 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
209
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
210 static void
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
211 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
212 {
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
213 PurpleKeyringChangeTracker *tracker = _tracker;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
214
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
215 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
216
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
217 if (tracker->succeeded) {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
218 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
219
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
220 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
221
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
222 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
223 current_change_tracker = NULL;
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
224
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
225 if (tracker->cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
226 tracker->cb(NULL, tracker->cb_data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
227 purple_keyring_change_tracker_free(tracker);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
228 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
229 }
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
230
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
231 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
232
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
233 purple_keyring_close(tracker->new);
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
234
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
235 purple_keyring_pref_disconnect();
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
236 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
237 purple_keyring_get_id(tracker->old));
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
238 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
239
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
240 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
241
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
242 if (tracker->error == NULL) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
243 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
244 PURPLE_KEYRING_ERROR_UNKNOWN,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
245 "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
246 }
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
247
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
248 if (tracker->cb != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
249 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
250
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
251 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
252 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
253
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
254 static void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
255 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
256 gpointer _tracker)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
257 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
258 PurpleKeyringChangeTracker *tracker = _tracker;
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
259
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
260 g_return_if_fail(account != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
261 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
262
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
263 tracker->read_outstanding--;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
264
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
265 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
266 PURPLE_KEYRING_ERROR_NOPASSWORD)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
267 if (purple_debug_is_verbose()) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
268 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
269 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
270 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
271 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
272 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
273 } 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
274 PURPLE_KEYRING_ERROR_ACCESSDENIED)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
275 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
276 "keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
277 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
278 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
279 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
280 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
281 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
282 } 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
283 PURPLE_KEYRING_ERROR_CANCELLED)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
284 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
285 "changing keyring for account %s: %s.\n",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
286 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
287 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
288 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
289 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
290 } 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
291 PURPLE_KEYRING_ERROR_BACKENDFAIL)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
292 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
293 "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
294 "Aborting changes.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
295 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
296 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
297 if (tracker->error != NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
298 g_error_free(tracker->error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
299 tracker->error = g_error_copy(error);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
300 } else if (error != NULL) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
301 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
302 "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
303 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
304 tracker->abort = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
305 if (tracker->error == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
306 tracker->error = g_error_copy(error);
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
307 }
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
308
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
309 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
310 account);
34141
9d90967f2485 Don't close a keyring before dropping all passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34140
diff changeset
311
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
312 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
313 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
314
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
315 /* This was the last one. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
316 if (tracker->abort && !tracker->force) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
317 tracker->succeeded = FALSE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
318 purple_keyring_drop_passwords(tracker->new,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
319 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
320 } else {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
321 tracker->succeeded = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
322 purple_keyring_drop_passwords(tracker->old,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
323 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
324 }
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
325 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
326
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
327 static void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
328 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
329 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
330 {
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
331 PurpleKeyringChangeTracker *tracker = _tracker;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
332 PurpleKeyringSave save_cb;
33973
b193c0e9044b Fixed problem in async purple_peyring_set_inuse()
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33972
diff changeset
333
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
334 g_return_if_fail(account != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
335 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
336
34136
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
337 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
338 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
339 return;
e9722a935271 Re-implemented GNOME Keyring plugin
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34134
diff changeset
340 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
341
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
342 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
343 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
344 PURPLE_KEYRING_ERROR,
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
345 PURPLE_KEYRING_ERROR_NOPASSWORD)) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
346 /* 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
347 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
348 tracker->abort = TRUE;
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
349 }
34164
66d56d8d495f keyring.c refactoring: fix compilation errors (how could I miss that?)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34163
diff changeset
350 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
351 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
352 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
353
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
354 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
355 g_assert(save_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
356
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
357 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
358 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
359
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
360 void
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
361 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
362 PurpleKeyringSetInUseCallback cb, gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
363 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
364 PurpleKeyring *oldkeyring;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
365 PurpleKeyringChangeTracker *tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
366 GList *it;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
367 PurpleKeyringRead read_cb;
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
368
34139
37d7d0e22484 Revert existing password migration at exit, allow cancelling kwallet requests
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34138
diff changeset
369 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
370 GError *error;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
371 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
372 "session already running.\n");
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
373 if (cb == NULL)
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
374 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
375 error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
376 PURPLE_KEYRING_ERROR_INTERNAL,
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
377 "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
378 cb(error, data);
34132
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
379 g_error_free(error);
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
380 return;
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
381 }
ecbcce03ecbc Don't let two concurrent password migrations being run
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34131
diff changeset
382
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
383 oldkeyring = purple_keyring_get_inuse();
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
384
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
385 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
386 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
387 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
388 "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
389 (newkeyring != NULL) ?
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
390 newkeyring->id : "(null)");
fa72f1e5cd77 Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34143
diff changeset
391 }
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
392 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
393 cb(NULL, data);
34131
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
394 return;
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
395 }
e56d3dd7b0e4 Track migrating passwords in prefs window
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34129
diff changeset
396
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
397 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
398 (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
399
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
400 if (oldkeyring == NULL) { /* No keyring was set before. */
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
401 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
402 purple_debug_misc("keyring", "Setting keyring for the "
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
403 "first time: %s.\n", newkeyring->id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
404 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
405
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
406 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
407 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
408 if (cb != NULL)
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
409 cb(NULL, data);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
410 return;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
411 }
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 /* Starting a migration. */
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
414
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
415 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
416 g_assert(read_cb != NULL);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
417
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
418 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
419 oldkeyring->id);
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
420
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
421 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
422 current_change_tracker = tracker;
34163
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
423
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
424 tracker->cb = cb;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
425 tracker->cb_data = data;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
426 tracker->new = newkeyring;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
427 tracker->old = oldkeyring;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
428 tracker->force = force;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
429
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
430 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
431 if (tracker->abort) {
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
432 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
433 break;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
434 }
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
435 tracker->read_outstanding++;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
436
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
437 if (it->next == NULL)
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
438 tracker->finished = TRUE;
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
439
3dfcc838b66b keyring.c refactoring: purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34162
diff changeset
440 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
441 }
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
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
444 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
445 purple_keyring_register(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
446 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
447 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
448
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
449 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
450
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
451 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
452
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
453 purple_debug_info("keyring", "Registering keyring: %s\n",
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
454 keyring_id ? keyring_id : "(null)");
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
455
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
456 if (purple_keyring_get_id(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
457 purple_keyring_get_name(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
458 purple_keyring_get_read_password(keyring) == NULL ||
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
459 purple_keyring_get_save_password(keyring) == NULL) {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
460 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
461 "required fields are missing.\n",
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
462 keyring_id ? keyring_id : "(null)");
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
463 return;
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
464 }
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
465
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
466 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
467 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
468 "Keyring is already registered.\n");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
469 return;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
470 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
471
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
472 /* 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
473 if (purple_keyring_inuse == NULL &&
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
474 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
475 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
476 "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
477 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
478 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
479
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
480 PURPLE_DBUS_REGISTER_POINTER(keyring, PurpleKeyring);
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
481 purple_signal_emit(purple_keyring_get_handle(), "keyring-register",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
482 keyring_id, keyring);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
483 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
484 purple_debug_info("keyring", "Registered keyring: %s.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
485 keyring_id);
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
486 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
487
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
488 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
489 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
490 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
491
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
492 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
493 purple_keyring_unregister(PurpleKeyring *keyring)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
494 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
495 PurpleKeyring *inuse;
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
496 PurpleKeyring *fallback;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
497 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
498
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
499 g_return_if_fail(keyring != NULL);
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
500
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
501 keyring_id = purple_keyring_get_id(keyring);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
502
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
503 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
504 keyring_id);
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
505
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
506 purple_signal_emit(purple_keyring_get_handle(), "keyring-unregister",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
507 keyring_id, keyring);
34110
bda1c52322fe Keyring: more verbosity, handle kwallet connection errors
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34066
diff changeset
508 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
509
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
510 inuse = purple_keyring_get_inuse();
34036
bf17ffca901d Give this a better name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34034
diff changeset
511 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
512
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
513 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
514 if (inuse != fallback) {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
515 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
516 } else {
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
517 fallback = NULL;
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
518 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
519 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
520 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
521
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
522 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
523 keyring);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
524 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
525
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
526 GList *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
527 purple_keyring_get_options(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
528 {
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
529 GList *options = NULL;
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
530 GList *it;
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
531 static gchar currentDisabledName[40];
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
532
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
533 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
534 && purple_keyring_to_use[0] != '\0') {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
535 g_snprintf(currentDisabledName, sizeof(currentDisabledName),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
536 _("%s (disabled)"), purple_keyring_to_use);
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
537
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
538 options = g_list_append(options, currentDisabledName);
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
539 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
540 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
541
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
542 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
543 PurpleKeyring *keyring = it->data;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
544
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
545 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
546 (gpointer)purple_keyring_get_name(keyring));
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
547 options = g_list_append(options,
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
548 (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
549 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
550
34166
8be287b0d6be keyring.c refactoring: registering, unregistering
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34165
diff changeset
551 return options;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
552 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
553
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
554
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
555 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
556 /* 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
557 /**************************************************************************/
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
558
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
559 static void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
560 purple_keyring_close(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
561 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
562 PurpleKeyringClose close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
563
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
564 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
565
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
566 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
567
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
568 if (close_cb != NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
569 close_cb();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
570 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
571
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
572 static void
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
573 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
574 gpointer _tracker)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
575 {
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
576 PurpleKeyringDropTracker *tracker = _tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
577
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
578 tracker->drop_outstanding--;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
579
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
580 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
581 return;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
582
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
583 if (tracker->cb)
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
584 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
585 g_free(tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
586 }
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 static void
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
589 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
590 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
591 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
592 GList *it;
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
593 PurpleKeyringSave save_cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
594 PurpleKeyringDropTracker *tracker;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
595
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
596 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
597
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
598 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
599 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
600
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
601 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
602 tracker->cb = cb;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
603 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
604
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
605 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
606 PurpleAccount *account = it->data;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
607
34162
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
608 tracker->drop_outstanding++;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
609 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
610 tracker->finished = TRUE;
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
611
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
612 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
613 tracker);
31427d618b09 keyring.c refactoring: fix naming for purple_keyring_set_inuse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34161
diff changeset
614 }
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
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
617 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
618 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
619 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
620 {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
621 PurpleKeyring *keyring;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
622 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
623 PurpleKeyringImportPassword import;
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
624
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
625 g_return_val_if_fail(account != NULL, FALSE);
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
626
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
627 if (keyring_id == NULL)
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
628 keyring_id = PURPLE_DEFAULT_KEYRING;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
629
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
630 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
631 "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
632 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
633
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
634 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
635 if (keyring == NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
636 if (error != NULL) {
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
637 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
638 PURPLE_KEYRING_ERROR_BACKENDFAIL,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
639 "Specified keyring is not registered.");
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
640 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
641 purple_debug_warning("Keyring", "Specified keyring is not "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
642 "registered, cannot import password info for account "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
643 "%s.\n", purple_keyring_print_account(account));
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
644 return FALSE;
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
645 }
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
646
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
647 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
648 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
649 PurpleKeyringFailedImport *import;
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
650 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
651 *error = g_error_new(PURPLE_KEYRING_ERROR,
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
652 PURPLE_KEYRING_ERROR_NOKEYRING,
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
653 "No keyring loaded, cannot import password "
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
654 "info");
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
655 }
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
656 purple_debug_warning("Keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
657 "No keyring loaded, cannot import password info for "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
658 "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
659
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
660 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
661 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
662 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
663 import->data = g_strdup(data);
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
664 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
665 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
666 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
667 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
668
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
669 if (inuse != keyring) {
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
670 if (error != NULL) {
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
671 *error = g_error_new(PURPLE_KEYRING_ERROR,
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
672 PURPLE_KEYRING_ERROR_INTERNAL,
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
673 "Specified keyring id does not match the "
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
674 "loaded one.");
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
675 }
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
676 purple_debug_error("keyring",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
677 "Specified keyring %s is not currently used (%s). "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
678 "Data will be lost.\n", keyring_id,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
679 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
680 return FALSE;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
681 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
682
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
683 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
684 if (import == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
685 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
686 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
687 "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
688 "normal.\n");
34125
34c3dbf12e95 Fix some memleaks
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34123
diff changeset
689 }
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
690 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
691 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
692
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
693 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
694 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
695
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
696 gboolean
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
697 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
698 const gchar **mode, gchar **data, GError **error,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
699 GDestroyNotify *destroy)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
700 {
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
701 PurpleKeyring *inuse;
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
702 PurpleKeyringExportPassword export;
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
703
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
704 g_return_val_if_fail(account != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
705 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
706 g_return_val_if_fail(mode != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
707 g_return_val_if_fail(data != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
708 g_return_val_if_fail(error != NULL, FALSE);
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
709
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
710 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
711
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
712 if (inuse == NULL) {
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
713 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
714 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
715
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
716 if (import == NULL) {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
717 *error = g_error_new(PURPLE_KEYRING_ERROR,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
718 PURPLE_KEYRING_ERROR_NOKEYRING,
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
719 "No keyring configured, cannot export password "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
720 "info");
34157
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
721 purple_debug_warning("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
722 "No keyring configured, cannot export password "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
723 "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
724 return FALSE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
725 } else {
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
726 purple_debug_info("keyring", "No keyring configured, "
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
727 "getting fallback export data for %s.\n",
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
728 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
729
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
730 *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
731 *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
732 *data = g_strdup(import->data);
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
733 *destroy = g_free;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
734 return TRUE;
c67266e97d75 Don't drop exported passwords, when keyring plugin is not loadable
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34155
diff changeset
735 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
736 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
737
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
738 if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
739 purple_debug_misc("keyring",
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
740 "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
741 purple_keyring_print_account(account),
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
742 purple_keyring_get_id(inuse));
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
743 }
33987
9beebdbf44d6 Fixed many bugs and crashes in the keyring subsystem.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33983
diff changeset
744
34167
43db4e8d785a keyring.c refactoring: import, export
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34166
diff changeset
745 *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
746
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
747 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
748 if (export == NULL) {
34134
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
749 if (purple_debug_is_verbose()) {
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
750 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
751 "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
752 "normal.\n");
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
753 }
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
754 *mode = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
755 *data = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
756 *destroy = NULL;
fda68dc6481c Don't require implementing import/export of password
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34133
diff changeset
757 return TRUE;
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
758 }
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
759
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
760 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
761 }
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
762
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
763 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
764 purple_keyring_get_password(PurpleAccount *account,
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 PurpleKeyringReadCallback cb,
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
766 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 {
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
768 GError *error = NULL;
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
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
772 if (purple_keyring_is_quitting) {
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
773 purple_debug_error("keyring", "Cannot request a password while quitting.\n");
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
774 error = g_error_new(PURPLE_KEYRING_ERROR, 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
775 "Cannot request a password while quitting.");
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
776 if (cb != NULL)
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
777 cb(account, NULL, error, data);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
778 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
779 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
780 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
781
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
782 if (account == NULL) {
34116
825c98f8c7f6 Get rid of PURPLE_PLUGIN_FLAG_AUTOLOAD
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34110
diff changeset
783 purple_debug_error("keyring", "No account passed to the function.\n");
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
784 error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_INTERNAL,
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
785 "No account passed to the function.");
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
786
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
787 if (cb != NULL)
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
788 cb(account, NULL, error, data);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
789
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
790 g_error_free(error);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
791
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
792 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
793 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
794
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
795 if (inuse == NULL) {
34116
825c98f8c7f6 Get rid of PURPLE_PLUGIN_FLAG_AUTOLOAD
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34110
diff changeset
796 purple_debug_error("keyring", "No keyring configured.\n");
34047
c2e68ddbf27c Correctly namespace these keyring errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34046
diff changeset
797 error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_NOKEYRING,
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
798 "No keyring configured.");
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
799
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
800 if (cb != NULL)
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
801 cb(account, NULL, error, data);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
802
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
803 g_error_free(error);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
804
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
805 } else {
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
806 read_cb = purple_keyring_get_read_password(inuse);
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
807 g_return_if_fail(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
808
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
809 purple_debug_info("keyring", "Reading password for account %s (%s)...\n",
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
810 purple_account_get_username(account),
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
811 purple_account_get_protocol_id(account));
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
812 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
813 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
814 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
815 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
816
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
817 static void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
818 purple_keyring_set_password_async_cb(PurpleAccount *account,
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
819 GError *error,
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
820 gpointer _sp_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
821 {
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
822 PurpleKeyringSetPasswordData *sp_data = _sp_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
823
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
824 g_return_if_fail(account != NULL);
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
825 g_return_if_fail(sp_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
826
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
827 if (error == NULL && purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
828 purple_debug_misc("keyring", "Password for account %s (%s) "
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
829 "saved successfully.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
830 purple_account_get_username(account),
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
831 purple_account_get_protocol_id(account));
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
832 } else if (purple_debug_is_verbose()) {
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
833 purple_debug_warning("keyring", "Password for account %s (%s) "
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
834 "not saved successfully.\n",
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
835 purple_account_get_username(account),
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
836 purple_account_get_protocol_id(account));
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
837 }
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
838
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
839 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
840 purple_notify_error(NULL, _("Keyrings"),
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
841 _("Failed to save password in keyring."),
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
842 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
843 }
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
844
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
845 if (sp_data->cb != NULL)
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
846 sp_data->cb(account, error, sp_data->cb_data);
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
847 g_free(sp_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
848 }
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
849
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
850 void
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
851 purple_keyring_set_password(PurpleAccount *account,
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
852 const gchar *password,
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
853 PurpleKeyringSaveCallback cb,
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
854 gpointer data)
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
855 {
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
856 GError *error = NULL;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
857 PurpleKeyring *inuse;
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
858 PurpleKeyringSave save_cb;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
859
33997
035d8594b66a Wrote a caching system that uses account->password to store password.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33996
diff changeset
860 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
861
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
862 if (purple_keyring_is_quitting) {
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
863 purple_debug_error("keyring", "Cannot save a password while quitting.\n");
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
864 error = g_error_new(PURPLE_KEYRING_ERROR, 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
865 "Cannot save a password while quitting.");
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
866 if (cb != NULL)
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
867 cb(account, error, data);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
868 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
869 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
870 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
871
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
872 if (current_change_tracker != NULL) {
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
873 purple_debug_error("keyring", "Cannot save a password during password migration.\n");
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
874 error = g_error_new(PURPLE_KEYRING_ERROR, 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
875 "Cannot save a password during password migration.");
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
876 if (cb != NULL)
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
877 cb(account, error, data);
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
878 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
879 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
880 }
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
881
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
882 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
883 if (inuse == NULL) {
34047
c2e68ddbf27c Correctly namespace these keyring errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34046
diff changeset
884 error = g_error_new(PURPLE_KEYRING_ERROR, 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
885 "No keyring configured.");
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
886 if (cb != NULL)
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
887 cb(account, error, data);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
888 g_error_free(error);
33971
96eff57a4349 Fixed warnings
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33970
diff changeset
889
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
890 } else {
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
891 PurpleKeyringSetPasswordData *sp_data;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
892
34153
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
893 save_cb = purple_keyring_get_save_password(inuse);
d90e86be44f7 Fix master password branch for win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34146
diff changeset
894 g_return_if_fail(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
895
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
896 sp_data = g_new(PurpleKeyringSetPasswordData, 1);
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
897 sp_data->cb = cb;
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
898 sp_data->cb_data = data;
34146
99bad5c80d1e More password wiping, better password management withing account.c, using actual UI name with KWallet
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34145
diff changeset
899 purple_debug_info("keyring", "%s password for account %s (%s)...\n",
99bad5c80d1e More password wiping, better password management withing account.c, using actual UI name with KWallet
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34145
diff changeset
900 (password ? "Saving" : "Removing"),
34142
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
901 purple_account_get_username(account),
544f05bc883d Don't allow registering invalid keyring
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34141
diff changeset
902 purple_account_get_protocol_id(account));
34158
166870f3adf8 keyring.c refactoring - internal structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34157
diff changeset
903 save_cb(account, password, purple_keyring_set_password_async_cb, sp_data);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
904 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
905 }
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
906
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
907 void
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
908 purple_keyring_change_master(PurpleKeyringChangeMasterCallback cb,
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
909 gpointer data)
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
910 {
34034
f508fa47f2ac Reformat many things.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34033
diff changeset
911 GError *error = NULL;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
912 PurpleKeyringChangeMaster change;
34155
567c48f9658c Refactor the keyring API
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34154
diff changeset
913 PurpleKeyring *inuse;
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
914
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
915 inuse = purple_keyring_get_inuse();
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
916
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
917 if (purple_keyring_is_quitting || current_change_tracker != NULL) {
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
918 purple_debug_error("keyring", "Cannot change a master password at the moment.\n");
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
919 error = g_error_new(PURPLE_KEYRING_ERROR, 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
920 "Cannot change a master password at the moment.");
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
921 if (cb != NULL)
34143
a57368227f78 Get rid of redundant parameters
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34142
diff changeset
922 cb(error, data);
34140
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
923 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
924 return;
2fd6b1439c56 Don't allow sensitive operations while quitting or migrating passwords
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34139
diff changeset
925 }
34033
910f2ed3988b Remove trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34032
diff changeset
926
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
927 if (inuse == NULL) {
34120
50bc553c8c52 Handle the case of disabled KWallet system
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34117
diff changeset
928 error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_NOKEYRING,
50bc553c8c52 Handle the case of disabled KWallet system
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34117
diff changeset
929 "No keyring configured, cannot change master password.");
34127
51c1bce7f52f Tidying debug messages, signals
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34126
diff changeset
930 purple_debug_error("keyring", "No keyring configured, cannot change master password.\n");
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
931 if (cb)
34143
a57368227f78 Get rid of redundant parameters
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34142
diff changeset
932 cb(error, data);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
933 g_error_free(error);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
934
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
935 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
936 change = purple_keyring_get_change_master(inuse);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
937
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
938 if (change == NULL) {
34154
857c361d3791 Refine keyring error coded
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34153
diff changeset
939 error = g_error_new(PURPLE_KEYRING_ERROR, PURPLE_KEYRING_ERROR_BACKENDFAIL,
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
940 "Keyring doesn't support master passwords.");
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
941 if (cb)
34143
a57368227f78 Get rid of redundant parameters
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34142
diff changeset
942 cb(error, data);
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
943
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
944 g_error_free(error);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
945
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
946 } else {
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
947 change(cb, data);
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
948
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
949 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
950 }
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 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
955 /* PurpleKeyring accessors */
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
958 PurpleKeyring *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
959 purple_keyring_new(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
960 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
961 return g_new0(PurpleKeyring, 1);
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
964 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
965 purple_keyring_free(PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
966 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
967 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
968
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
969 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
970 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
971 g_free(keyring);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
972 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
973
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
974 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
975 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
976 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
977 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
978
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
979 return keyring->name;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
980 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
981
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
982 const gchar *
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
983 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
984 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
985 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
986
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
987 return keyring->id;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
990 PurpleKeyringRead
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
991 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
992 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
993 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
994
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
995 return keyring->read_password;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
998 PurpleKeyringSave
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
999 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
1000 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1001 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
1002
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1003 return keyring->save_password;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1006 PurpleKeyringCancelRequests
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1007 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
1008 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1009 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
1010
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1011 return keyring->cancel_requests;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1014 PurpleKeyringClose
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1015 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
1016 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1017 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
1018
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1019 return keyring->close_keyring;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1022 PurpleKeyringChangeMaster
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1023 purple_keyring_get_change_master(const PurpleKeyring *keyring)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1024 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1025 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
1026
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1027 return keyring->change_master;
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
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1030 PurpleKeyringImportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1031 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
1032 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1033 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
1034
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1035 return keyring->import_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1036 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1037
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1038 PurpleKeyringExportPassword
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1039 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
1040 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1041 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
1042
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1043 return keyring->export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1044 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1045
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1046 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1047 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
1048 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1049 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1050 g_return_if_fail(name != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1051
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1052 g_free(keyring->name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1053 keyring->name = g_strdup(name);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1054 }
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 void
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1057 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
1058 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1059 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1060 g_return_if_fail(id != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1061
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1062 g_free(keyring->id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1063 keyring->id = g_strdup(id);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1064 }
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 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1067 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
1068 PurpleKeyringRead read_cb)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1069 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1070 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1071 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
1072
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1073 keyring->read_password = read_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1074 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1075
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1076 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1077 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
1078 PurpleKeyringSave save_cb)
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 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1081 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
1082
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1083 keyring->save_password = save_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1084 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1085
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1086 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1087 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
1088 PurpleKeyringCancelRequests cancel_requests)
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 g_return_if_fail(keyring != NULL);
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 keyring->cancel_requests = cancel_requests;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1093 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1094
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1095 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1096 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
1097 PurpleKeyringClose close_cb)
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 g_return_if_fail(keyring != NULL);
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 keyring->close_keyring = close_cb;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1102 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1103
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1104 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1105 purple_keyring_set_change_master(PurpleKeyring *keyring,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1106 PurpleKeyringChangeMaster change_master)
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 g_return_if_fail(keyring != NULL);
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 keyring->change_master = change_master;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1111 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1112
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1113 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1114 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
1115 PurpleKeyringImportPassword import_password)
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 g_return_if_fail(keyring != NULL);
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 keyring->import_password = import_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1120 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1121
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1122 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1123 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
1124 PurpleKeyringExportPassword export_password)
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 g_return_if_fail(keyring != NULL);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1127
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1128 keyring->export_password = export_password;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1129 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1130
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1131
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1132 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1133 /* Error Codes */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1134 /**************************************************************************/
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1135
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
1136 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
1137 {
33998
5fcfc69be362 Added support for master password in pidgin's pref interface.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33997
diff changeset
1138 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
1139 }
33969
cd9387938af8 added files that were'nt in workspace
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents:
diff changeset
1140
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1141 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1142 /* Keyring Subsystem */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1143 /**************************************************************************/
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1144
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1145 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
1146 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1147 if (purple_keyring_inuse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1148 purple_notify_error(NULL, _("Keyrings"),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1149 _("Failed to load selected keyring."),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1150 _("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
1151 "one in Preferences dialog."));
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1152 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1153 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1154
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1155 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
1156 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1157 if (current_change_tracker != NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1158 PurpleKeyringChangeTracker *tracker;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1159 PurpleKeyringCancelRequests cancel = NULL;
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 tracker = current_change_tracker;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1162 tracker->abort = TRUE;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1163 if (tracker->old) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1164 cancel = purple_keyring_get_cancel_requests(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1165 tracker->old);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1166 if (cancel)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1167 cancel();
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 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
1170 cancel = purple_keyring_get_cancel_requests(
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1171 tracker->new);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1172 if (cancel)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1173 cancel();
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1174 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1175 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1176 purple_keyring_is_quitting = TRUE;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1177 if (purple_keyring_inuse != NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1178 PurpleKeyringCancelRequests cancel;
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 purple_keyring_inuse);
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 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1185
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1186 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1187 purple_keyring_init(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1188 {
34160
8f0843214194 keyring.c refactoring: replace char with gchar
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34159
diff changeset
1189 const gchar *touse;
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1190 GList *it;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1191
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1192 purple_keyring_keyrings = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1193 purple_keyring_inuse = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1194
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1195 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
1196 g_direct_equal, NULL,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1197 (GDestroyNotify)purple_keyring_failed_import_free);
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 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
1200 "keyring-register",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1201 purple_marshal_VOID__POINTER_POINTER,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1202 NULL, 2,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1203 purple_value_new(PURPLE_TYPE_STRING), /* keyring ID */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1204 purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1205
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1206 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
1207 "keyring-unregister",
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1208 purple_marshal_VOID__POINTER_POINTER,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1209 NULL, 2,
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1210 purple_value_new(PURPLE_TYPE_STRING), /* keyring ID */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1211 purple_value_new(PURPLE_TYPE_BOXED, "PurpleKeyring *")); /* a pointer to the keyring */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1212
34165
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1213 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
1214 "password-migration",
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1215 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
1216 NULL, 1,
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1217 purple_value_new(PURPLE_TYPE_BOXED, "PurpleAccount *")); /* a pointer to the account */
cdd4b0dfe92b keyring.c refactoring: use signal instead of hack depending on implementation
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34164
diff changeset
1218
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1219 /* see what keyring we want to use */
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1220 touse = purple_prefs_get_string("/purple/keyring/active");
33978
2c649fae664e Final version of the API, corrected, cleaned, and documented.
Vivien Bernet-Rollande <scrouaf@soc.pidgin.im>
parents: 33976
diff changeset
1221
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1222 if (touse == NULL) {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1223 purple_prefs_add_none("/purple/keyring");
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1224 purple_prefs_add_string("/purple/keyring/active", PURPLE_DEFAULT_KEYRING);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1225 purple_keyring_to_use = g_strdup(PURPLE_DEFAULT_KEYRING);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1226 } else {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1227 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
1228 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1229
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
1230 purple_keyring_pref_connect();
34159
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1231
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1232 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
1233 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1234 PurplePlugin *plugin = (PurplePlugin *)it->data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1235
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1236 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
1237 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1238 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
1239 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1240
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1241 if (purple_plugin_is_loaded(plugin))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1242 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1243
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1244 if (purple_plugin_load(plugin))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1245 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1246 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
1247 purple_keyring_loaded_plugins, plugin);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1248 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1249 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1250
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1251 if (purple_keyring_inuse == NULL)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1252 purple_debug_error("keyring", "selected keyring failed to load\n");
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1253
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1254 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
1255 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1256 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
1257 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
1258 purple_keyring_get_handle(),
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1259 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
1260 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1261
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1262 void
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1263 purple_keyring_uninit(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1264 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1265 GList *it;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1266
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1267 g_free(purple_keyring_to_use);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1268 purple_keyring_inuse = NULL;
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 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
1271 it = g_list_next(it))
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1272 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1273 PurplePlugin *plugin = (PurplePlugin *)it->data;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1274 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
1275 continue;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1276 purple_plugin_unload(plugin);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1277 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1278 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
1279 purple_keyring_loaded_plugins = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1280
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1281 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
1282 purple_signals_disconnect_by_handle(purple_keyring_get_handle());
34161
ab354da721d5 keyring.c refactoring: prefs watching
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34160
diff changeset
1283 purple_keyring_pref_disconnect();
34159
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 g_hash_table_destroy(purple_keyring_failed_imports);
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1286 purple_keyring_failed_imports = NULL;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1287 }
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1288
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1289 void *
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1290 purple_keyring_get_handle(void)
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1291 {
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1292 static int handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1293
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1294 return &handle;
c47b85d03439 keyring.c refactoring - order up function implementations
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34158
diff changeset
1295 }

mercurial