| 265 g_free(gc->proto_data); |
265 g_free(gc->proto_data); |
| 266 } |
266 } |
| 267 |
267 |
| 268 static void toc_build_config(struct gaim_account *account, char *s, int len, gboolean show) |
268 static void toc_build_config(struct gaim_account *account, char *s, int len, gboolean show) |
| 269 { |
269 { |
| 270 GSList *grp = gaim_blist_groups(); |
270 GaimBlistNode *gnode,*bnode; |
| 271 GSList *grp1 = grp; |
|
| 272 GSList *mem, *mem1; |
|
| 273 struct group *g; |
271 struct group *g; |
| 274 struct buddy *b; |
272 struct buddy *b; |
| 275 GSList *plist = account->permit; |
273 GSList *plist = account->permit; |
| 276 GSList *dlist = account->deny; |
274 GSList *dlist = account->deny; |
| 277 |
275 |
| 279 |
277 |
| 280 if (!account->permdeny) |
278 if (!account->permdeny) |
| 281 account->permdeny = 1; |
279 account->permdeny = 1; |
| 282 |
280 |
| 283 pos += g_snprintf(&s[pos], len - pos, "m %d\n", account->permdeny); |
281 pos += g_snprintf(&s[pos], len - pos, "m %d\n", account->permdeny); |
| 284 while (len > pos && grp1) { |
282 for(gnode = gaim_get_blist()->root; gnode && len > pos; gnode = gnode->next) { |
| 285 g = (struct group *)grp1->data; |
283 g = (struct group *)gnode; |
| |
284 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
| |
285 continue; |
| 286 if(gaim_group_on_account(g, account)) { |
286 if(gaim_group_on_account(g, account)) { |
| 287 pos += g_snprintf(&s[pos], len - pos, "g %s\n", g->name); |
287 pos += g_snprintf(&s[pos], len - pos, "g %s\n", g->name); |
| 288 mem = gaim_blist_members(g); |
288 for(bnode = gnode->child; bnode && len > pos; bnode = bnode->next) { |
| 289 mem1 = mem; |
289 b = (struct buddy *)bnode; |
| 290 while (len > pos && mem1) { |
290 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
| 291 b = (struct buddy *)mem1->data; |
291 continue; |
| 292 if(b->account == account) { |
292 if(b->account == account) { |
| 293 pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n", b->name, |
293 pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n", b->name, |
| 294 (show && b->alias) ? ":" : "", |
294 (show && b->alias) ? ":" : "", |
| 295 (show && b->alias) ? b->alias : ""); |
295 (show && b->alias) ? b->alias : ""); |
| 296 } |
296 } |
| 297 mem1 = mem1->next; |
|
| 298 } |
297 } |
| 299 g_slist_free(mem); |
|
| 300 } |
298 } |
| 301 grp1 = g_slist_next(grp1); |
299 } |
| 302 } |
|
| 303 g_slist_free(grp); |
|
| 304 |
300 |
| 305 while (len > pos && plist) { |
301 while (len > pos && plist) { |
| 306 pos += g_snprintf(&s[pos], len - pos, "p %s\n", (char *)plist->data); |
302 pos += g_snprintf(&s[pos], len - pos, "p %s\n", (char *)plist->data); |
| 307 plist = plist->next; |
303 plist = plist->next; |
| 308 } |
304 } |