equal
deleted
inserted
replaced
92 gchar *name; |
92 gchar *name; |
93 gchar *jid; |
93 gchar *jid; |
94 guint type; |
94 guint type; |
95 enum subscr subscription; |
95 enum subscr subscription; |
96 GSList *resource; |
96 GSList *resource; |
|
97 res *active_resource; |
97 |
98 |
98 /* For groupchats */ |
99 /* For groupchats */ |
99 gchar *nickname; |
100 gchar *nickname; |
100 gchar *topic; |
101 gchar *topic; |
101 guint inside_room; |
102 guint inside_room; |
263 g_free(rost->offline_status_message); |
264 g_free(rost->offline_status_message); |
264 rost->offline_status_message = p_res->status_msg; |
265 rost->offline_status_message = p_res->status_msg; |
265 p_res->status_msg = NULL; |
266 p_res->status_msg = NULL; |
266 } |
267 } |
267 |
268 |
|
269 if (rost->active_resource == p_res) |
|
270 rost->active_resource = NULL; |
|
271 |
268 // Free allocations and delete resource node |
272 // Free allocations and delete resource node |
269 free_resource_data(p_res); |
273 free_resource_data(p_res); |
270 rost->resource = g_slist_delete_link(rost->resource, p_res_elt); |
274 rost->resource = g_slist_delete_link(rost->resource, p_res_elt); |
271 return; |
275 return; |
272 } |
276 } |
277 static inline void free_roster_user_data(roster *roster_usr) |
281 static inline void free_roster_user_data(roster *roster_usr) |
278 { |
282 { |
279 if (!roster_usr) |
283 if (!roster_usr) |
280 return; |
284 return; |
281 g_free((gchar*)roster_usr->jid); |
285 g_free((gchar*)roster_usr->jid); |
|
286 //g_free((gchar*)roster_usr->active_resource); |
282 g_free((gchar*)roster_usr->name); |
287 g_free((gchar*)roster_usr->name); |
283 g_free((gchar*)roster_usr->nickname); |
288 g_free((gchar*)roster_usr->nickname); |
284 g_free((gchar*)roster_usr->topic); |
289 g_free((gchar*)roster_usr->topic); |
285 g_free((gchar*)roster_usr->offline_status_message); |
290 g_free((gchar*)roster_usr->offline_status_message); |
286 free_all_resources(&roster_usr->resource); |
291 free_all_resources(&roster_usr->resource); |
1449 lp->data = oldname; |
1454 lp->data = oldname; |
1450 } |
1455 } |
1451 return reslist; |
1456 return reslist; |
1452 } |
1457 } |
1453 |
1458 |
|
1459 // buddy_getactiveresource(roster_data) |
|
1460 // Returns name of active (selected for chat) resource |
|
1461 const char *buddy_getactiveresource(gpointer rosterdata) |
|
1462 { |
|
1463 roster *roster_usr = rosterdata; |
|
1464 res *resource; |
|
1465 |
|
1466 if (!roster_usr) { |
|
1467 if (!current_buddy) return NULL; |
|
1468 roster_usr = BUDDATA(current_buddy); |
|
1469 } |
|
1470 |
|
1471 resource = roster_usr->active_resource; |
|
1472 if (!resource) return NULL; |
|
1473 return resource->name; |
|
1474 } |
|
1475 |
|
1476 void buddy_setactiveresource(gpointer rosterdata, const char *resname) |
|
1477 { |
|
1478 roster *roster_usr = rosterdata; |
|
1479 res *p_res = NULL; |
|
1480 if (resname) |
|
1481 p_res = get_resource(roster_usr, resname); |
|
1482 roster_usr->active_resource = p_res; |
|
1483 } |
|
1484 |
1454 /* |
1485 /* |
1455 // buddy_isresource(roster_data) |
1486 // buddy_isresource(roster_data) |
1456 // Return true if there is at least one resource |
1487 // Return true if there is at least one resource |
1457 // (which means, for a room, that it isn't empty) |
1488 // (which means, for a room, that it isn't empty) |
1458 int buddy_isresource(gpointer rosterdata) |
1489 int buddy_isresource(gpointer rosterdata) |