libpurple/keyring.c

Wed, 02 Apr 2014 02:37:34 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Wed, 02 Apr 2014 02:37:34 +0200
changeset 35717
45bde03f86a6
parent 35462
901dfa763f15
child 36130
aaeddb178055
child 37071
3ebf3bb2d317
permissions
-rw-r--r--

Custom smileys: simplify storage implementation

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

mercurial