Sat, 14 Jun 2003 12:01:19 +0000
[gaim-migrate @ 6298]
Added a little bit of code to prevent duplicate accounts, but it doesn't
fix the problem of importing all new accounts when are importing from the
old .gaimrc and also have an accounts.xml already established.
|
5865
5b358b960d7d
[gaim-migrate @ 6296]
Christian Hammond <chipx86@chipx86.com>
parents:
5842
diff
changeset
|
1 | /** |
| 5563 | 2 | * @file account.c Account API |
| 3 | * @ingroup core | |
| 4 | * | |
| 5 | * gaim | |
| 6 | * | |
| 7 | * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
| 8 | * | |
| 9 | * This program is free software; you can redistribute it and/or modify | |
| 10 | * it under the terms of the GNU General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, | |
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 | * GNU General Public License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU General Public License | |
| 20 | * along with this program; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 22 | */ | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
23 | #ifdef HAVE_CONFIG_H |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
24 | #include <config.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
25 | #endif |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
26 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
27 | #include <string.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
28 | #include <stdio.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
29 | #include <stdlib.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
30 | #include <sys/stat.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
31 | #include <sys/types.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
32 | #include <glib.h> |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
33 | |
| 5563 | 34 | #include "account.h" |
| 5717 | 35 | #include "debug.h" |
| 5563 | 36 | #include "prefs.h" |
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
37 | #include "prpl.h" |
| 5717 | 38 | #include "util.h" |
| 5563 | 39 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
40 | typedef enum |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
41 | { |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
42 | TAG_NONE = 0, |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
43 | TAG_PROTOCOL, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
44 | TAG_NAME, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
45 | TAG_PASSWORD, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
46 | TAG_ALIAS, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
47 | TAG_USERINFO, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
48 | TAG_BUDDYICON, |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
49 | TAG_SETTING, |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
50 | TAG_TYPE, |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
51 | TAG_HOST, |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
52 | TAG_PORT |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
53 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
54 | } AccountParserTag; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
55 | |
| 5563 | 56 | typedef struct |
| 57 | { | |
| 58 | GaimPrefType type; | |
| 59 | ||
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
60 | char *ui; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
61 | |
| 5563 | 62 | union |
| 63 | { | |
| 64 | int integer; | |
| 65 | char *string; | |
| 66 | gboolean bool; | |
| 67 | ||
| 68 | } value; | |
| 69 | ||
| 70 | } GaimAccountSetting; | |
| 71 | ||
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
72 | typedef struct |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
73 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
74 | AccountParserTag tag; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
75 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
76 | GaimAccount *account; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
77 | GaimProtocol protocol; |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
78 | GaimProxyInfo *proxy_info; |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
79 | char *protocol_id; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
80 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
81 | GString *buffer; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
82 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
83 | GaimPrefType setting_type; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
84 | char *setting_ui; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
85 | char *setting_name; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
86 | |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
87 | gboolean in_proxy; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
88 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
89 | } AccountParserData; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
90 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
91 | static GList *accounts = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
92 | static guint accounts_save_timer = 0; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
93 | static gboolean accounts_loaded = FALSE; |
| 5563 | 94 | |
| 95 | static void | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
96 | delete_setting(void *data) |
| 5563 | 97 | { |
| 98 | GaimAccountSetting *setting = (GaimAccountSetting *)data; | |
| 99 | ||
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
100 | if (setting->ui != NULL) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
101 | g_free(setting->ui); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
102 | |
| 5563 | 103 | if (setting->type == GAIM_PREF_STRING) |
| 104 | g_free(setting->value.string); | |
| 105 | ||
| 106 | g_free(setting); | |
| 107 | } | |
| 108 | ||
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
109 | static gboolean |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
110 | accounts_save_cb(gpointer unused) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
111 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
112 | gaim_accounts_sync(); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
113 | accounts_save_timer = 0; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
114 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
115 | return FALSE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
116 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
117 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
118 | static void |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
119 | schedule_accounts_save() |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
120 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
121 | if (!accounts_save_timer) |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
122 | accounts_save_timer = g_timeout_add(5000, accounts_save_cb, NULL); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
123 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
124 | |
| 5563 | 125 | GaimAccount * |
| 126 | gaim_account_new(const char *username, GaimProtocol protocol) | |
| 127 | { | |
| 128 | GaimAccount *account; | |
|
5867
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
129 | GList *l; |
| 5563 | 130 | |
| 131 | g_return_val_if_fail(username != NULL, NULL); | |
| 132 | ||
|
5867
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
133 | for (l = gaim_accounts_get_all(); l != NULL; l = l->next) { |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
134 | account = l->data; |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
135 | |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
136 | if (!strcmp(gaim_account_get_username(account), username) && |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
137 | gaim_account_get_protocol(account) == protocol) { |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
138 | |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
139 | return account; |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
140 | } |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
141 | } |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
142 | |
| 5563 | 143 | account = g_new0(GaimAccount, 1); |
| 144 | ||
| 145 | gaim_account_set_username(account, username); | |
| 146 | gaim_account_set_protocol(account, protocol); | |
| 147 | ||
| 148 | account->settings = g_hash_table_new_full(g_str_hash, g_str_equal, | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
149 | g_free, delete_setting); |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
150 | account->ui_settings = g_hash_table_new_full(g_str_hash, g_str_equal, |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
151 | g_free, (GDestroyNotify)g_hash_table_destroy); |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
152 | |
| 5563 | 153 | return account; |
| 154 | } | |
| 155 | ||
| 156 | void | |
| 157 | gaim_account_destroy(GaimAccount *account) | |
| 158 | { | |
| 159 | g_return_if_fail(account != NULL); | |
| 160 | ||
| 161 | if (account->gc != NULL) | |
| 162 | gaim_connection_destroy(account->gc); | |
| 163 | ||
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
164 | if (account->username != NULL) g_free(account->username); |
|
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
165 | if (account->alias != NULL) g_free(account->alias); |
|
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
166 | if (account->password != NULL) g_free(account->password); |
|
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
167 | if (account->user_info != NULL) g_free(account->user_info); |
|
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
168 | if (account->protocol_id != NULL) g_free(account->protocol_id); |
| 5563 | 169 | |
| 170 | g_hash_table_destroy(account->settings); | |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
171 | g_hash_table_destroy(account->ui_settings); |
| 5563 | 172 | |
| 173 | g_free(account); | |
| 174 | } | |
| 175 | ||
| 176 | GaimConnection * | |
| 177 | gaim_account_connect(GaimAccount *account) | |
| 178 | { | |
| 179 | GaimConnection *gc; | |
| 180 | ||
| 181 | g_return_val_if_fail(account != NULL, NULL); | |
| 182 | g_return_val_if_fail(!gaim_account_is_connected(account), NULL); | |
| 183 | ||
| 184 | gc = gaim_connection_new(account); | |
| 185 | ||
| 186 | gaim_connection_connect(gc); | |
| 187 | ||
| 188 | return gc; | |
| 189 | } | |
| 190 | ||
| 191 | void | |
| 192 | gaim_account_disconnect(GaimAccount *account) | |
| 193 | { | |
| 194 | g_return_if_fail(account != NULL); | |
| 195 | g_return_if_fail(gaim_account_is_connected(account)); | |
| 196 | ||
| 197 | gaim_connection_disconnect(account->gc); | |
| 198 | ||
| 199 | account->gc = NULL; | |
| 200 | } | |
| 201 | ||
| 202 | void | |
| 203 | gaim_account_set_username(GaimAccount *account, const char *username) | |
| 204 | { | |
|
5711
5aa3984f5f80
[gaim-migrate @ 6132]
Christian Hammond <chipx86@chipx86.com>
parents:
5710
diff
changeset
|
205 | g_return_if_fail(account != NULL); |
| 5563 | 206 | |
| 207 | if (account->username != NULL) | |
| 208 | g_free(account->username); | |
| 209 | ||
| 210 | account->username = (username == NULL ? NULL : g_strdup(username)); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
211 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
212 | schedule_accounts_save(); |
| 5563 | 213 | } |
| 214 | ||
| 215 | void | |
| 216 | gaim_account_set_password(GaimAccount *account, const char *password) | |
| 217 | { | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
218 | g_return_if_fail(account != NULL); |
| 5563 | 219 | |
| 220 | if (account->password != NULL) | |
| 221 | g_free(account->password); | |
| 222 | ||
| 223 | account->password = (password == NULL ? NULL : g_strdup(password)); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
224 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
225 | schedule_accounts_save(); |
| 5563 | 226 | } |
| 227 | ||
| 228 | void | |
| 229 | gaim_account_set_alias(GaimAccount *account, const char *alias) | |
| 230 | { | |
| 231 | g_return_if_fail(account != NULL); | |
| 232 | ||
| 233 | if (account->alias != NULL) | |
| 234 | g_free(account->alias); | |
| 235 | ||
| 236 | account->alias = (alias == NULL ? NULL : g_strdup(alias)); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
237 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
238 | schedule_accounts_save(); |
| 5563 | 239 | } |
| 240 | ||
| 241 | void | |
| 242 | gaim_account_set_user_info(GaimAccount *account, const char *user_info) | |
| 243 | { | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
244 | g_return_if_fail(account != NULL); |
| 5563 | 245 | |
| 246 | if (account->user_info != NULL) | |
| 247 | g_free(account->user_info); | |
| 248 | ||
| 249 | account->user_info = (user_info == NULL ? NULL : g_strdup(user_info)); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
250 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
251 | schedule_accounts_save(); |
| 5563 | 252 | } |
| 253 | ||
| 254 | void | |
| 255 | gaim_account_set_buddy_icon(GaimAccount *account, const char *icon) | |
| 256 | { | |
| 257 | g_return_if_fail(account != NULL); | |
| 258 | ||
| 259 | if (account->buddy_icon != NULL) | |
| 260 | g_free(account->buddy_icon); | |
| 261 | ||
| 262 | account->buddy_icon = (icon == NULL ? NULL : g_strdup(icon)); | |
| 5842 | 263 | if (account->gc) |
| 264 | serv_set_buddyicon(account->gc, icon); | |
| 265 | ||
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
266 | schedule_accounts_save(); |
| 5563 | 267 | } |
| 268 | ||
| 269 | void | |
| 270 | gaim_account_set_protocol(GaimAccount *account, GaimProtocol protocol) | |
| 271 | { | |
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
272 | GaimPlugin *plugin; |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
273 | |
| 5563 | 274 | g_return_if_fail(account != NULL); |
| 275 | ||
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
276 | plugin = gaim_find_prpl(protocol); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
277 | |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
278 | g_return_if_fail(plugin != NULL); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
279 | |
| 5563 | 280 | account->protocol = protocol; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
281 | |
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
282 | if (account->protocol_id != NULL) |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
283 | g_free(account->protocol_id); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
284 | |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
285 | account->protocol_id = g_strdup(plugin->info->id); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5659
diff
changeset
|
286 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
287 | schedule_accounts_save(); |
| 5563 | 288 | } |
| 289 | ||
| 290 | void | |
| 291 | gaim_account_set_connection(GaimAccount *account, GaimConnection *gc) | |
| 292 | { | |
| 293 | g_return_if_fail(account != NULL); | |
| 294 | ||
| 295 | account->gc = gc; | |
| 296 | } | |
| 297 | ||
| 298 | void | |
| 299 | gaim_account_set_remember_password(GaimAccount *account, gboolean value) | |
| 300 | { | |
| 301 | g_return_if_fail(account != NULL); | |
| 302 | ||
| 303 | account->remember_pass = value; | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
304 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
305 | schedule_accounts_save(); |
| 5563 | 306 | } |
| 307 | ||
| 308 | void | |
|
5659
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
309 | gaim_account_set_check_mail(GaimAccount *account, gboolean value) |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
310 | { |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
311 | g_return_if_fail(account != NULL); |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
312 | |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
313 | account->check_mail = value; |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
314 | |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
315 | schedule_accounts_save(); |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
316 | } |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
317 | |
|
b263ee0ceaac
[gaim-migrate @ 6073]
Christian Hammond <chipx86@chipx86.com>
parents:
5643
diff
changeset
|
318 | void |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
319 | gaim_account_set_auto_login(GaimAccount *account, const char *ui, |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
320 | gboolean value) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
321 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
322 | g_return_if_fail(account != NULL); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
323 | g_return_if_fail(ui != NULL); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
324 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
325 | gaim_account_set_ui_bool(account, ui, "auto-login", value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
326 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
327 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
328 | void |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
329 | gaim_account_set_proxy_info(GaimAccount *account, GaimProxyInfo *info) |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
330 | { |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
331 | g_return_if_fail(account != NULL); |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
332 | |
|
5695
d0352e790c0a
[gaim-migrate @ 6116]
Christian Hammond <chipx86@chipx86.com>
parents:
5694
diff
changeset
|
333 | if (account->proxy_info != NULL) |
|
d0352e790c0a
[gaim-migrate @ 6116]
Christian Hammond <chipx86@chipx86.com>
parents:
5694
diff
changeset
|
334 | gaim_proxy_info_destroy(account->proxy_info); |
|
d0352e790c0a
[gaim-migrate @ 6116]
Christian Hammond <chipx86@chipx86.com>
parents:
5694
diff
changeset
|
335 | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
336 | account->proxy_info = info; |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
337 | |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
338 | schedule_accounts_save(); |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
339 | } |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
340 | |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
341 | void |
|
5694
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
342 | gaim_account_clear_settings(GaimAccount *account) |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
343 | { |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
344 | g_return_if_fail(account != NULL); |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
345 | |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
346 | g_hash_table_destroy(account->settings); |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
347 | |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
348 | account->settings = g_hash_table_new_full(g_str_hash, g_str_equal, |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
349 | g_free, delete_setting); |
|
5694
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
350 | } |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
351 | |
|
46768356e6a1
[gaim-migrate @ 6115]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
352 | void |
| 5563 | 353 | gaim_account_set_int(GaimAccount *account, const char *name, int value) |
| 354 | { | |
| 355 | GaimAccountSetting *setting; | |
| 356 | ||
| 357 | g_return_if_fail(account != NULL); | |
| 358 | g_return_if_fail(name != NULL); | |
| 359 | ||
| 360 | setting = g_new0(GaimAccountSetting, 1); | |
| 361 | ||
| 362 | setting->type = GAIM_PREF_INT; | |
| 363 | setting->value.integer = value; | |
| 364 | ||
| 365 | g_hash_table_insert(account->settings, g_strdup(name), setting); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
366 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
367 | schedule_accounts_save(); |
| 5563 | 368 | } |
| 369 | ||
| 370 | void | |
| 371 | gaim_account_set_string(GaimAccount *account, const char *name, | |
| 372 | const char *value) | |
| 373 | { | |
| 374 | GaimAccountSetting *setting; | |
| 375 | ||
| 376 | g_return_if_fail(account != NULL); | |
| 377 | g_return_if_fail(name != NULL); | |
| 378 | ||
| 379 | setting = g_new0(GaimAccountSetting, 1); | |
| 380 | ||
| 381 | setting->type = GAIM_PREF_STRING; | |
| 382 | setting->value.string = g_strdup(value); | |
| 383 | ||
| 384 | g_hash_table_insert(account->settings, g_strdup(name), setting); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
385 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
386 | schedule_accounts_save(); |
| 5563 | 387 | } |
| 388 | ||
| 389 | void | |
| 390 | gaim_account_set_bool(GaimAccount *account, const char *name, gboolean value) | |
| 391 | { | |
| 392 | GaimAccountSetting *setting; | |
| 393 | ||
| 394 | g_return_if_fail(account != NULL); | |
| 395 | g_return_if_fail(name != NULL); | |
| 396 | ||
| 397 | setting = g_new0(GaimAccountSetting, 1); | |
| 398 | ||
| 399 | setting->type = GAIM_PREF_BOOLEAN; | |
| 400 | setting->value.bool = value; | |
| 401 | ||
| 402 | g_hash_table_insert(account->settings, g_strdup(name), setting); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
403 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
404 | schedule_accounts_save(); |
| 5563 | 405 | } |
| 406 | ||
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
407 | static GHashTable * |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
408 | get_ui_settings_table(GaimAccount *account, const char *ui) |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
409 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
410 | GHashTable *table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
411 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
412 | table = g_hash_table_lookup(account->ui_settings, ui); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
413 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
414 | if (table == NULL) { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
415 | table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
416 | delete_setting); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
417 | g_hash_table_insert(account->ui_settings, g_strdup(ui), table); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
418 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
419 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
420 | return table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
421 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
422 | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
423 | void |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
424 | gaim_account_set_ui_int(GaimAccount *account, const char *ui, |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
425 | const char *name, int value) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
426 | { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
427 | GaimAccountSetting *setting; |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
428 | GHashTable *table; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
429 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
430 | g_return_if_fail(account != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
431 | g_return_if_fail(ui != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
432 | g_return_if_fail(name != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
433 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
434 | setting = g_new0(GaimAccountSetting, 1); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
435 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
436 | setting->type = GAIM_PREF_INT; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
437 | setting->ui = g_strdup(ui); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
438 | setting->value.integer = value; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
439 | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
440 | table = get_ui_settings_table(account, ui); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
441 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
442 | g_hash_table_insert(table, g_strdup(name), setting); |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
443 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
444 | schedule_accounts_save(); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
445 | } |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
446 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
447 | void |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
448 | gaim_account_set_ui_string(GaimAccount *account, const char *ui, |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
449 | const char *name, const char *value) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
450 | { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
451 | GaimAccountSetting *setting; |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
452 | GHashTable *table; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
453 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
454 | g_return_if_fail(account != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
455 | g_return_if_fail(ui != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
456 | g_return_if_fail(name != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
457 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
458 | setting = g_new0(GaimAccountSetting, 1); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
459 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
460 | setting->type = GAIM_PREF_STRING; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
461 | setting->ui = g_strdup(ui); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
462 | setting->value.string = g_strdup(value); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
463 | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
464 | table = get_ui_settings_table(account, ui); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
465 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
466 | g_hash_table_insert(table, g_strdup(name), setting); |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
467 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
468 | schedule_accounts_save(); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
469 | } |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
470 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
471 | void |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
472 | gaim_account_set_ui_bool(GaimAccount *account, const char *ui, |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
473 | const char *name, gboolean value) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
474 | { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
475 | GaimAccountSetting *setting; |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
476 | GHashTable *table; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
477 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
478 | g_return_if_fail(account != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
479 | g_return_if_fail(ui != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
480 | g_return_if_fail(name != NULL); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
481 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
482 | setting = g_new0(GaimAccountSetting, 1); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
483 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
484 | setting->type = GAIM_PREF_BOOLEAN; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
485 | setting->ui = g_strdup(ui); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
486 | setting->value.bool = value; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
487 | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
488 | table = get_ui_settings_table(account, ui); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
489 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
490 | g_hash_table_insert(table, g_strdup(name), setting); |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
491 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
492 | schedule_accounts_save(); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
493 | } |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
494 | |
| 5563 | 495 | gboolean |
| 496 | gaim_account_is_connected(const GaimAccount *account) | |
| 497 | { | |
| 498 | g_return_val_if_fail(account != NULL, FALSE); | |
| 499 | ||
| 500 | return (account->gc != NULL && | |
| 501 | gaim_connection_get_state(account->gc) == GAIM_CONNECTED); | |
| 502 | } | |
| 503 | ||
| 504 | const char * | |
| 505 | gaim_account_get_username(const GaimAccount *account) | |
| 506 | { | |
| 507 | g_return_val_if_fail(account != NULL, NULL); | |
| 508 | ||
| 509 | return account->username; | |
| 510 | } | |
| 511 | ||
| 512 | const char * | |
| 513 | gaim_account_get_password(const GaimAccount *account) | |
| 514 | { | |
| 515 | g_return_val_if_fail(account != NULL, NULL); | |
| 516 | ||
| 517 | return account->password; | |
| 518 | } | |
| 519 | ||
| 520 | const char * | |
| 521 | gaim_account_get_alias(const GaimAccount *account) | |
| 522 | { | |
| 523 | g_return_val_if_fail(account != NULL, NULL); | |
| 524 | ||
| 525 | return account->alias; | |
| 526 | } | |
| 527 | ||
| 528 | const char * | |
| 529 | gaim_account_get_user_info(const GaimAccount *account) | |
| 530 | { | |
| 531 | g_return_val_if_fail(account != NULL, NULL); | |
| 532 | ||
| 533 | return account->user_info; | |
| 534 | } | |
| 535 | ||
| 536 | const char * | |
| 537 | gaim_account_get_buddy_icon(const GaimAccount *account) | |
| 538 | { | |
| 539 | g_return_val_if_fail(account != NULL, NULL); | |
| 540 | ||
| 541 | return account->buddy_icon; | |
| 542 | } | |
| 543 | ||
| 544 | GaimProtocol | |
| 545 | gaim_account_get_protocol(const GaimAccount *account) | |
| 546 | { | |
| 547 | g_return_val_if_fail(account != NULL, -1); | |
| 548 | ||
| 549 | return account->protocol; | |
| 550 | } | |
| 551 | ||
| 552 | GaimConnection * | |
| 553 | gaim_account_get_connection(const GaimAccount *account) | |
| 554 | { | |
| 555 | g_return_val_if_fail(account != NULL, NULL); | |
| 556 | ||
| 557 | return account->gc; | |
| 558 | } | |
| 559 | ||
| 560 | gboolean | |
| 561 | gaim_account_get_remember_password(const GaimAccount *account) | |
| 562 | { | |
| 563 | g_return_val_if_fail(account != NULL, FALSE); | |
| 564 | ||
| 565 | return account->remember_pass; | |
| 566 | } | |
| 567 | ||
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
568 | gboolean |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
569 | gaim_account_get_check_mail(const GaimAccount *account) |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
570 | { |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
571 | g_return_val_if_fail(account != NULL, FALSE); |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
572 | |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
573 | return account->check_mail; |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
574 | } |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
575 | |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
576 | gboolean |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
577 | gaim_account_get_auto_login(const GaimAccount *account, const char *ui) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
578 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
579 | g_return_val_if_fail(account != NULL, FALSE); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
580 | g_return_val_if_fail(ui != NULL, FALSE); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
581 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
582 | return gaim_account_get_ui_bool(account, ui, "auto-login", FALSE); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
583 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
584 | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
585 | GaimProxyInfo * |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
586 | gaim_account_get_proxy_info(const GaimAccount *account) |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
587 | { |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
588 | g_return_val_if_fail(account != NULL, NULL); |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
589 | |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
590 | return account->proxy_info; |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
591 | } |
|
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5666
diff
changeset
|
592 | |
| 5563 | 593 | int |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
594 | gaim_account_get_int(const GaimAccount *account, const char *name, |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
595 | int default_value) |
| 5563 | 596 | { |
| 597 | GaimAccountSetting *setting; | |
| 598 | ||
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
599 | g_return_val_if_fail(account != NULL, default_value); |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
600 | g_return_val_if_fail(name != NULL, default_value); |
| 5563 | 601 | |
| 602 | setting = g_hash_table_lookup(account->settings, name); | |
| 603 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
604 | if (setting == NULL) |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
605 | return default_value; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
606 | |
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
607 | g_return_val_if_fail(setting->type == GAIM_PREF_INT, default_value); |
| 5563 | 608 | |
| 609 | return setting->value.integer; | |
| 610 | } | |
| 611 | ||
| 612 | const char * | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
613 | gaim_account_get_string(const GaimAccount *account, const char *name, |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
614 | const char *default_value) |
| 5563 | 615 | { |
| 616 | GaimAccountSetting *setting; | |
| 617 | ||
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
618 | g_return_val_if_fail(account != NULL, default_value); |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
619 | g_return_val_if_fail(name != NULL, default_value); |
| 5563 | 620 | |
| 621 | setting = g_hash_table_lookup(account->settings, name); | |
| 622 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
623 | if (setting == NULL) |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
624 | return default_value; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
625 | |
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
626 | g_return_val_if_fail(setting->type == GAIM_PREF_STRING, default_value); |
| 5563 | 627 | |
| 628 | return setting->value.string; | |
| 629 | } | |
| 630 | ||
| 631 | gboolean | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
632 | gaim_account_get_bool(const GaimAccount *account, const char *name, |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
633 | gboolean default_value) |
| 5563 | 634 | { |
| 635 | GaimAccountSetting *setting; | |
| 636 | ||
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
637 | g_return_val_if_fail(account != NULL, default_value); |
|
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
638 | g_return_val_if_fail(name != NULL, default_value); |
| 5563 | 639 | |
| 640 | setting = g_hash_table_lookup(account->settings, name); | |
| 641 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
642 | if (setting == NULL) |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
643 | return default_value; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
644 | |
|
5565
687cc390b7dc
[gaim-migrate @ 5967]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
645 | g_return_val_if_fail(setting->type == GAIM_PREF_BOOLEAN, default_value); |
| 5563 | 646 | |
| 647 | return setting->value.bool; | |
| 648 | } | |
| 649 | ||
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
650 | int |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
651 | gaim_account_get_ui_int(const GaimAccount *account, const char *ui, |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
652 | const char *name, int default_value) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
653 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
654 | GaimAccountSetting *setting; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
655 | GHashTable *table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
656 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
657 | g_return_val_if_fail(account != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
658 | g_return_val_if_fail(ui != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
659 | g_return_val_if_fail(name != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
660 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
661 | if ((table = g_hash_table_lookup(account->ui_settings, ui)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
662 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
663 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
664 | if ((setting = g_hash_table_lookup(table, name)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
665 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
666 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
667 | g_return_val_if_fail(setting->type == GAIM_PREF_INT, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
668 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
669 | return setting->value.integer; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
670 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
671 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
672 | const char * |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
673 | gaim_account_get_ui_string(const GaimAccount *account, const char *ui, |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
674 | const char *name, const char *default_value) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
675 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
676 | GaimAccountSetting *setting; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
677 | GHashTable *table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
678 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
679 | g_return_val_if_fail(account != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
680 | g_return_val_if_fail(ui != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
681 | g_return_val_if_fail(name != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
682 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
683 | if ((table = g_hash_table_lookup(account->ui_settings, ui)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
684 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
685 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
686 | if ((setting = g_hash_table_lookup(table, name)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
687 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
688 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
689 | g_return_val_if_fail(setting->type == GAIM_PREF_STRING, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
690 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
691 | return setting->value.string; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
692 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
693 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
694 | gboolean |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
695 | gaim_account_get_ui_bool(const GaimAccount *account, const char *ui, |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
696 | const char *name, gboolean default_value) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
697 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
698 | GaimAccountSetting *setting; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
699 | GHashTable *table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
700 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
701 | g_return_val_if_fail(account != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
702 | g_return_val_if_fail(ui != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
703 | g_return_val_if_fail(name != NULL, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
704 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
705 | if ((table = g_hash_table_lookup(account->ui_settings, ui)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
706 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
707 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
708 | if ((setting = g_hash_table_lookup(table, name)) == NULL) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
709 | return default_value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
710 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
711 | g_return_val_if_fail(setting->type == GAIM_PREF_BOOLEAN, default_value); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
712 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
713 | return setting->value.bool; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
714 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
715 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
716 | /* XML Stuff */ |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
717 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
718 | free_parser_data(gpointer user_data) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
719 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
720 | AccountParserData *data = user_data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
721 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
722 | if (data->buffer != NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
723 | g_free(data->buffer); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
724 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
725 | if (data->setting_name != NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
726 | g_free(data->setting_name); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
727 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
728 | g_free(data); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
729 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
730 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
731 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
732 | start_element_handler(GMarkupParseContext *context, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
733 | const gchar *element_name, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
734 | const gchar **attribute_names, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
735 | const gchar **attribute_values, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
736 | gpointer user_data, GError **error) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
737 | { |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
738 | const char *value; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
739 | AccountParserData *data = user_data; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
740 | GHashTable *atts; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
741 | int i; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
742 | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
743 | atts = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
744 | |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
745 | for (i = 0; attribute_names[i] != NULL; i++) { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
746 | g_hash_table_insert(atts, g_strdup(attribute_names[i]), |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
747 | g_strdup(attribute_values[i])); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
748 | } |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
749 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
750 | if (data->buffer != NULL) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
751 | g_string_free(data->buffer, TRUE); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
752 | data->buffer = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
753 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
754 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
755 | if (!strcmp(element_name, "protocol")) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
756 | data->tag = TAG_PROTOCOL; |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
757 | else if (!strcmp(element_name, "name") || !strcmp(element_name, "username")) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
758 | data->tag = TAG_NAME; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
759 | else if (!strcmp(element_name, "password")) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
760 | data->tag = TAG_PASSWORD; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
761 | else if (!strcmp(element_name, "alias")) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
762 | data->tag = TAG_ALIAS; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
763 | else if (!strcmp(element_name, "userinfo")) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
764 | data->tag = TAG_USERINFO; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
765 | else if (!strcmp(element_name, "buddyicon")) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
766 | data->tag = TAG_BUDDYICON; |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
767 | else if (!strcmp(element_name, "proxy")) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
768 | data->in_proxy = TRUE; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
769 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
770 | data->proxy_info = gaim_proxy_info_new(); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
771 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
772 | else if (!strcmp(element_name, "type")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
773 | data->tag = TAG_TYPE; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
774 | else if (!strcmp(element_name, "host")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
775 | data->tag = TAG_HOST; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
776 | else if (!strcmp(element_name, "port")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
777 | data->tag = TAG_PORT; |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
778 | else if (!strcmp(element_name, "settings")) { |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
779 | if ((value = g_hash_table_lookup(atts, "ui")) != NULL) { |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
780 | data->setting_ui = g_strdup(value); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
781 | } |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
782 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
783 | else if (!strcmp(element_name, "setting")) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
784 | data->tag = TAG_SETTING; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
785 | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
786 | if ((value = g_hash_table_lookup(atts, "name")) != NULL) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
787 | data->setting_name = g_strdup(value); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
788 | |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
789 | if ((value = g_hash_table_lookup(atts, "type")) != NULL) { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
790 | if (!strcmp(value, "string")) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
791 | data->setting_type = GAIM_PREF_STRING; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
792 | else if (!strcmp(value, "int")) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
793 | data->setting_type = GAIM_PREF_INT; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
794 | else if (!strcmp(value, "bool")) |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
795 | data->setting_type = GAIM_PREF_BOOLEAN; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
796 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
797 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
798 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
799 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
800 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
801 | end_element_handler(GMarkupParseContext *context, const gchar *element_name, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
802 | gpointer user_data, GError **error) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
803 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
804 | AccountParserData *data = user_data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
805 | gchar *buffer; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
806 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
807 | if (data->buffer == NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
808 | return; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
809 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
810 | buffer = g_string_free(data->buffer, FALSE); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
811 | data->buffer = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
812 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
813 | if (data->tag == TAG_PROTOCOL) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
814 | GList *l; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
815 | GaimPlugin *plugin; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
816 | |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
817 | data->protocol_id = g_strdup(buffer); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
818 | data->protocol = -1; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
819 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
820 | for (l = gaim_plugins_get_protocols(); l != NULL; l = l->next) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
821 | plugin = (GaimPlugin *)l->data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
822 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
823 | if (GAIM_IS_PROTOCOL_PLUGIN(plugin)) { |
|
5581
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
824 | if (!strcmp(plugin->info->id, buffer)) { |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
825 | data->protocol = |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
826 | GAIM_PLUGIN_PROTOCOL_INFO(plugin)->protocol; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
827 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
828 | break; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
829 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
830 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
831 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
832 | } |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
833 | else if (data->tag == TAG_NAME) { |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
834 | if (data->in_proxy) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
835 | gaim_proxy_info_set_username(data->proxy_info, buffer); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
836 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
837 | else { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
838 | data->account = gaim_account_new(buffer, data->protocol); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
839 | data->account->protocol_id = data->protocol_id; |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
840 | |
|
5710
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
841 | gaim_accounts_add(data->account); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
842 | |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
843 | data->protocol_id = NULL; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
844 | } |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
845 | } |
|
5581
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
846 | else if (data->tag == TAG_PASSWORD) { |
|
5792
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
847 | if (strcmp(buffer, "")) { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
848 | if (data->in_proxy) { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
849 | gaim_proxy_info_set_password(data->proxy_info, buffer); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
850 | } |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
851 | else { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
852 | gaim_account_set_password(data->account, buffer); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
853 | gaim_account_set_remember_password(data->account, TRUE); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
854 | } |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
855 | } |
|
5581
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
856 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
857 | else if (data->tag == TAG_ALIAS) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
858 | gaim_account_set_alias(data->account, buffer); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
859 | else if (data->tag == TAG_USERINFO) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
860 | gaim_account_set_user_info(data->account, buffer); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
861 | else if (data->tag == TAG_BUDDYICON) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
862 | gaim_account_set_buddy_icon(data->account, buffer); |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
863 | else if (data->tag == TAG_TYPE) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
864 | if (data->in_proxy) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
865 | if (!strcmp(buffer, "global")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
866 | gaim_proxy_info_set_type(data->proxy_info, |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
867 | GAIM_PROXY_USE_GLOBAL); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
868 | else if (!strcmp(buffer, "http")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
869 | gaim_proxy_info_set_type(data->proxy_info, GAIM_PROXY_HTTP); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
870 | else if (!strcmp(buffer, "socks4")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
871 | gaim_proxy_info_set_type(data->proxy_info, GAIM_PROXY_SOCKS4); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
872 | else if (!strcmp(buffer, "socks5")) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
873 | gaim_proxy_info_set_type(data->proxy_info, GAIM_PROXY_SOCKS5); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
874 | else |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
875 | gaim_debug(GAIM_DEBUG_ERROR, "account", |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
876 | "Invalid proxy type found when loading account " |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
877 | "information for %s\n", |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
878 | gaim_account_get_username(data->account)); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
879 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
880 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
881 | else if (data->tag == TAG_HOST) { |
|
5792
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
882 | if (data->in_proxy && strcmp(buffer, "")) |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
883 | gaim_proxy_info_set_host(data->proxy_info, buffer); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
884 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
885 | else if (data->tag == TAG_PORT) { |
|
5792
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
886 | if (data->in_proxy && strcmp(buffer, "")) |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
887 | gaim_proxy_info_set_port(data->proxy_info, atoi(buffer)); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
888 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
889 | else if (data->tag == TAG_SETTING) { |
|
5792
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
890 | if (strcmp(buffer, "")) { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
891 | if (data->setting_ui != NULL) { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
892 | if (data->setting_type == GAIM_PREF_STRING) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
893 | gaim_account_set_ui_string(data->account, data->setting_ui, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
894 | data->setting_name, buffer); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
895 | else if (data->setting_type == GAIM_PREF_INT) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
896 | gaim_account_set_ui_int(data->account, data->setting_ui, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
897 | data->setting_name, atoi(buffer)); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
898 | else if (data->setting_type == GAIM_PREF_BOOLEAN) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
899 | gaim_account_set_ui_bool(data->account, data->setting_ui, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
900 | data->setting_name, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
901 | (*buffer == '0' ? FALSE : TRUE)); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
902 | } |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
903 | else { |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
904 | if (data->setting_type == GAIM_PREF_STRING) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
905 | gaim_account_set_string(data->account, data->setting_name, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
906 | buffer); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
907 | else if (data->setting_type == GAIM_PREF_INT) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
908 | gaim_account_set_int(data->account, data->setting_name, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
909 | atoi(buffer)); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
910 | else if (data->setting_type == GAIM_PREF_BOOLEAN) |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
911 | gaim_account_set_bool(data->account, data->setting_name, |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
912 | (*buffer == '0' ? FALSE : TRUE)); |
|
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
913 | } |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
914 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
915 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
916 | g_free(data->setting_name); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
917 | data->setting_name = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
918 | } |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
919 | else if (!strcmp(element_name, "proxy")) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
920 | data->in_proxy = FALSE; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
921 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
922 | if (gaim_proxy_info_get_type(data->proxy_info) == GAIM_PROXY_NONE) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
923 | gaim_proxy_info_destroy(data->proxy_info); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
924 | data->proxy_info = NULL; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
925 | } |
|
5792
a046add39edc
[gaim-migrate @ 6217]
Christian Hammond <chipx86@chipx86.com>
parents:
5780
diff
changeset
|
926 | else if (strcmp(buffer, "")) { |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
927 | gaim_account_set_proxy_info(data->account, data->proxy_info); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
928 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
929 | } |
|
5777
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
930 | else if (!strcmp(element_name, "settings")) { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
931 | if (data->setting_ui != NULL) { |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
932 | g_free(data->setting_ui); |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
933 | data->setting_ui = NULL; |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
934 | } |
|
2b4e8214a7cd
[gaim-migrate @ 6202]
Christian Hammond <chipx86@chipx86.com>
parents:
5742
diff
changeset
|
935 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
936 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
937 | data->tag = TAG_NONE; |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
938 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
939 | g_free(buffer); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
940 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
941 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
942 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
943 | text_handler(GMarkupParseContext *context, const gchar *text, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
944 | gsize text_len, gpointer user_data, GError **error) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
945 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
946 | AccountParserData *data = user_data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
947 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
948 | if (data->buffer == NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
949 | data->buffer = g_string_new_len(text, text_len); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
950 | else |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
951 | g_string_append_len(data->buffer, text, text_len); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
952 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
953 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
954 | static GMarkupParser accounts_parser = |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
955 | { |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
956 | start_element_handler, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
957 | end_element_handler, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
958 | text_handler, |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
959 | NULL, |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
960 | NULL |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
961 | }; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
962 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
963 | gboolean |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
964 | gaim_accounts_load() |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
965 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
966 | gchar *filename = g_build_filename(gaim_user_dir(), "accounts.xml", NULL); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
967 | gchar *contents = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
968 | gsize length; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
969 | GMarkupParseContext *context; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
970 | GError *error = NULL; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
971 | AccountParserData *parser_data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
972 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
973 | if (filename == NULL) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
974 | accounts_loaded = TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
975 | return FALSE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
976 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
977 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
978 | if (!g_file_get_contents(filename, &contents, &length, &error)) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
979 | gaim_debug(GAIM_DEBUG_ERROR, "accounts", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
980 | "Error reading accounts: %s\n", error->message); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
981 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
982 | g_error_free(error); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
983 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
984 | accounts_loaded = TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
985 | return FALSE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
986 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
987 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
988 | parser_data = g_new0(AccountParserData, 1); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
989 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
990 | context = g_markup_parse_context_new(&accounts_parser, 0, |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
991 | parser_data, free_parser_data); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
992 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
993 | if (!g_markup_parse_context_parse(context, contents, length, NULL)) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
994 | g_markup_parse_context_free(context); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
995 | g_free(contents); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
996 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
997 | accounts_loaded = TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
998 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
999 | return FALSE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1000 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1001 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1002 | if (!g_markup_parse_context_end_parse(context, NULL)) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1003 | gaim_debug(GAIM_DEBUG_ERROR, "accounts", "Error parsing %s\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1004 | filename); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1005 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1006 | g_markup_parse_context_free(context); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1007 | g_free(contents); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1008 | accounts_loaded = TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1009 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1010 | return FALSE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1011 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1012 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1013 | g_markup_parse_context_free(context); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1014 | g_free(contents); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1015 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1016 | g_free(filename); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1017 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1018 | accounts_loaded = TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1019 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1020 | return TRUE; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1021 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1022 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1023 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
1024 | write_setting(gpointer key, gpointer value, gpointer user_data) |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1025 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1026 | GaimAccountSetting *setting; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1027 | const char *name; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1028 | FILE *fp; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1029 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1030 | setting = (GaimAccountSetting *)value; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1031 | name = (const char *)key; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1032 | fp = (FILE *)user_data; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1033 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1034 | if (setting->type == GAIM_PREF_INT) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1035 | fprintf(fp, " <setting name='%s' type='int'>%d</setting>\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1036 | name, setting->value.integer); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1037 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1038 | else if (setting->type == GAIM_PREF_STRING) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1039 | fprintf(fp, " <setting name='%s' type='string'>%s</setting>\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1040 | name, setting->value.string); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1041 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1042 | else if (setting->type == GAIM_PREF_BOOLEAN) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1043 | fprintf(fp, " <setting name='%s' type='bool'>%d</setting>\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1044 | name, setting->value.bool); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1045 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1046 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1047 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1048 | static void |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
1049 | write_ui_setting_list(gpointer key, gpointer value, gpointer user_data) |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1050 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1051 | GHashTable *table; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1052 | const char *ui; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1053 | FILE *fp; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1054 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1055 | table = (GHashTable *)value; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1056 | ui = (const char *)key; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1057 | fp = (FILE *)user_data; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1058 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1059 | fprintf(fp, " <settings ui='%s'>\n", ui); |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
1060 | g_hash_table_foreach(table, write_setting, fp); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1061 | fprintf(fp, " </settings>\n"); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1062 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1063 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1064 | static void |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1065 | gaim_accounts_write(FILE *fp, GaimAccount *account) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1066 | { |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1067 | GaimProxyInfo *proxy_info; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1068 | GaimProxyType proxy_type; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1069 | const char *password, *alias, *user_info, *buddy_icon; |
| 5610 | 1070 | char *esc; |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1071 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1072 | fprintf(fp, " <account>\n"); |
|
5643
d87bedde9a66
[gaim-migrate @ 6057]
Christian Hammond <chipx86@chipx86.com>
parents:
5620
diff
changeset
|
1073 | fprintf(fp, " <protocol>%s</protocol>\n", account->protocol_id); |
| 5610 | 1074 | esc = g_markup_escape_text(gaim_account_get_username(account), -1); |
| 1075 | fprintf(fp, " <name>%s</name>\n", esc); | |
| 1076 | g_free(esc); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1077 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1078 | if (gaim_account_get_remember_password(account) && |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1079 | (password = gaim_account_get_password(account)) != NULL) { |
| 5610 | 1080 | esc = g_markup_escape_text(password, -1); |
| 1081 | fprintf(fp, " <password>%s</password>\n", esc); | |
| 1082 | g_free(esc); | |
| 1083 | } | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1084 | |
| 5610 | 1085 | if ((alias = gaim_account_get_alias(account)) != NULL) { |
| 1086 | esc = g_markup_escape_text(alias, -1); | |
| 1087 | fprintf(fp, " <alias>%s</alias>\n", esc); | |
| 1088 | g_free(esc); | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1089 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1090 | |
| 5610 | 1091 | if ((user_info = gaim_account_get_user_info(account)) != NULL) { |
| 1092 | esc = g_markup_escape_text(user_info, -1); | |
| 1093 | fprintf(fp, " <userinfo>%s</userinfo>\n", esc); | |
| 1094 | g_free(esc); | |
| 1095 | } | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1096 | |
| 5610 | 1097 | if ((buddy_icon = gaim_account_get_buddy_icon(account)) != NULL) { |
| 1098 | esc = g_markup_escape_text(buddy_icon, -1); | |
| 1099 | fprintf(fp, " <buddyicon>%s</buddyicon>\n", esc); | |
| 1100 | g_free(esc); | |
| 1101 | } | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1102 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1103 | fprintf(fp, " <settings>\n"); |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
1104 | g_hash_table_foreach(account->settings, write_setting, fp); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1105 | fprintf(fp, " </settings>\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1106 | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5792
diff
changeset
|
1107 | g_hash_table_foreach(account->ui_settings, write_ui_setting_list, fp); |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1108 | |
|
5707
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1109 | if ((proxy_info = gaim_account_get_proxy_info(account)) != NULL && |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1110 | (proxy_type = gaim_proxy_info_get_type(proxy_info)) != GAIM_PROXY_NONE) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1111 | { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1112 | const char *value; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1113 | int int_value; |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1114 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1115 | fprintf(fp, " <proxy>\n"); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1116 | fprintf(fp, " <type>%s</type>\n", |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1117 | (proxy_type == GAIM_PROXY_USE_GLOBAL ? "global" : |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1118 | proxy_type == GAIM_PROXY_HTTP ? "http" : |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1119 | proxy_type == GAIM_PROXY_SOCKS4 ? "socks4" : |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1120 | proxy_type == GAIM_PROXY_SOCKS5 ? "socks5" : "unknown")); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1121 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1122 | if (proxy_type != GAIM_PROXY_USE_GLOBAL) { |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1123 | if ((value = gaim_proxy_info_get_host(proxy_info)) != NULL) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1124 | fprintf(fp, " <host>%s</host>\n", value); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1125 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1126 | if ((int_value = gaim_proxy_info_get_port(proxy_info)) != 0) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1127 | fprintf(fp, " <port>%d</port>\n", int_value); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1128 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1129 | if ((value = gaim_proxy_info_get_username(proxy_info)) != NULL) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1130 | fprintf(fp, " <username>%s</username>\n", value); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1131 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1132 | if ((value = gaim_proxy_info_get_password(proxy_info)) != NULL) |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1133 | fprintf(fp, " <password>%s</password>\n", value); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1134 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1135 | |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1136 | fprintf(fp, " </proxy>\n"); |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1137 | } |
|
15142336c2bc
[gaim-migrate @ 6128]
Christian Hammond <chipx86@chipx86.com>
parents:
5703
diff
changeset
|
1138 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1139 | fprintf(fp, " </account>\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1140 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1141 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1142 | void |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1143 | gaim_accounts_sync(void) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1144 | { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1145 | FILE *fp; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1146 | const char *user_dir = gaim_user_dir(); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1147 | char *filename; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1148 | char *filename_real; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1149 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1150 | if (!accounts_loaded) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1151 | gaim_debug(GAIM_DEBUG_WARNING, "accounts", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1152 | "Writing accounts to disk.\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1153 | schedule_accounts_save(); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1154 | return; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1155 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1156 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1157 | if (user_dir == NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1158 | return; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1159 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1160 | gaim_debug(GAIM_DEBUG_INFO, "accounts", "Writing accounts to disk.\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1161 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1162 | fp = fopen(user_dir, "r"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1163 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1164 | if (fp == NULL) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1165 | mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1166 | else |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1167 | fclose(fp); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1168 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1169 | filename = g_build_filename(user_dir, "accounts.xml.save", NULL); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1170 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1171 | if ((fp = fopen(filename, "w")) != NULL) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1172 | GList *l; |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1173 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1174 | fprintf(fp, "<?xml version='1.0' encoding='UTF-8' ?>\n\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1175 | fprintf(fp, "<accounts>\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1176 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1177 | for (l = gaim_accounts_get_all(); l != NULL; l = l->next) |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1178 | gaim_accounts_write(fp, l->data); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1179 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1180 | fprintf(fp, "</accounts>\n"); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1181 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1182 | fclose(fp); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1183 | chmod(filename, S_IRUSR | S_IWUSR); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1184 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1185 | else { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1186 | gaim_debug(GAIM_DEBUG_ERROR, "accounts", "Unable to write %s\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1187 | filename); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1188 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1189 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1190 | filename_real = g_build_filename(user_dir, "accounts.xml", NULL); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1191 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1192 | if (rename(filename, filename_real) < 0) { |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1193 | gaim_debug(GAIM_DEBUG_ERROR, "accounts", "Error renaming %s to %s\n", |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1194 | filename, filename_real); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1195 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1196 | |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1197 | g_free(filename); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1198 | g_free(filename_real); |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1199 | } |
|
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1200 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1201 | void |
|
5710
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1202 | gaim_accounts_add(GaimAccount *account) |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1203 | { |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1204 | g_return_if_fail(account != NULL); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1205 | |
|
5867
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
1206 | if (g_list_find(accounts, account) != NULL) |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
1207 | return; |
|
46d0ef5058c7
[gaim-migrate @ 6298]
Christian Hammond <chipx86@chipx86.com>
parents:
5865
diff
changeset
|
1208 | |
|
5710
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1209 | accounts = g_list_append(accounts, account); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1210 | |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1211 | schedule_accounts_save(); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1212 | } |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1213 | |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1214 | void |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1215 | gaim_accounts_remove(GaimAccount *account) |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1216 | { |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1217 | g_return_if_fail(account != NULL); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1218 | |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1219 | accounts = g_list_remove(accounts, account); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1220 | |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1221 | schedule_accounts_save(); |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1222 | } |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1223 | |
|
3c2bf5725bb0
[gaim-migrate @ 6131]
Christian Hammond <chipx86@chipx86.com>
parents:
5707
diff
changeset
|
1224 | void |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1225 | gaim_accounts_auto_login(const char *ui) |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1226 | { |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1227 | GaimAccount *account; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1228 | GList *l; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1229 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1230 | g_return_if_fail(ui != NULL); |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1231 | |
|
5780
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5779
diff
changeset
|
1232 | for (l = gaim_accounts_get_all(); l != NULL; l = l->next) { |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1233 | account = l->data; |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1234 | |
|
5780
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5779
diff
changeset
|
1235 | if (gaim_account_get_auto_login(account, ui) && |
|
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5779
diff
changeset
|
1236 | gaim_account_get_remember_password(account)) { |
|
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5779
diff
changeset
|
1237 | |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1238 | gaim_account_connect(account); |
|
5780
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5779
diff
changeset
|
1239 | } |
|
5779
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1240 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1241 | } |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1242 | |
|
8c8b8c8139c2
[gaim-migrate @ 6204]
Christian Hammond <chipx86@chipx86.com>
parents:
5777
diff
changeset
|
1243 | void |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1244 | gaim_accounts_reorder(GaimAccount *account, size_t new_index) |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1245 | { |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1246 | size_t index; |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1247 | GList *l; |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1248 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1249 | g_return_if_fail(account != NULL); |
|
5620
c5f0a3c434fd
[gaim-migrate @ 6027]
Christian Hammond <chipx86@chipx86.com>
parents:
5610
diff
changeset
|
1250 | g_return_if_fail(new_index >= 0 && new_index <= g_list_length(accounts)); |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1251 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1252 | index = g_list_index(accounts, account); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1253 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1254 | if (index == -1) { |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1255 | gaim_debug(GAIM_DEBUG_ERROR, "accounts", |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1256 | "Unregistered account (%s) discovered during reorder!\n", |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1257 | gaim_account_get_username(account)); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1258 | return; |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1259 | } |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1260 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1261 | l = g_list_nth(accounts, index); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1262 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1263 | if (new_index > index) |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1264 | new_index--; |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1265 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1266 | /* Remove the old one. */ |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1267 | accounts = g_list_delete_link(accounts, l); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1268 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1269 | /* Insert it where it should go. */ |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1270 | accounts = g_list_insert(accounts, account, new_index); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1271 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1272 | schedule_accounts_save(); |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5574
diff
changeset
|
1273 | } |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5565
diff
changeset
|
1274 | |
| 5563 | 1275 | GList * |
| 1276 | gaim_accounts_get_all(void) | |
| 1277 | { | |
| 1278 | return accounts; | |
| 1279 | } |