| 3262 fb_api_publish(api, "/typing", "%s", json); |
3262 fb_api_publish(api, "/typing", "%s", json); |
| 3263 g_free(json); |
3263 g_free(json); |
| 3264 } |
3264 } |
| 3265 |
3265 |
| 3266 FbApiEvent * |
3266 FbApiEvent * |
| 3267 fb_api_event_dup(const FbApiEvent *event, gboolean deep) |
3267 fb_api_event_dup(const FbApiEvent *event) |
| 3268 { |
3268 { |
| 3269 FbApiEvent *ret; |
3269 FbApiEvent *ret; |
| 3270 |
3270 |
| 3271 if (event == NULL) { |
3271 if (event == NULL) { |
| 3272 return NULL; |
3272 return NULL; |
| 3273 } |
3273 } |
| 3274 |
3274 |
| 3275 ret = g_memdup2(event, sizeof *event); |
3275 ret = g_memdup2(event, sizeof *event); |
| 3276 |
3276 ret->text = g_strdup(event->text); |
| 3277 if (deep) { |
|
| 3278 ret->text = g_strdup(event->text); |
|
| 3279 } |
|
| 3280 |
3277 |
| 3281 return ret; |
3278 return ret; |
| 3282 } |
3279 } |
| 3283 |
3280 |
| 3284 void |
3281 void |
| 3361 g_free(presence); |
3355 g_free(presence); |
| 3362 } |
3356 } |
| 3363 } |
3357 } |
| 3364 |
3358 |
| 3365 FbApiThread * |
3359 FbApiThread * |
| 3366 fb_api_thread_dup(const FbApiThread *thrd, gboolean deep) |
3360 fb_api_thread_dup(const FbApiThread *thrd) |
| 3367 { |
3361 { |
| 3368 FbApiThread *ret; |
3362 FbApiThread *ret; |
| 3369 FbApiUser *user; |
|
| 3370 GSList *l; |
|
| 3371 |
3363 |
| 3372 if (thrd == NULL) { |
3364 if (thrd == NULL) { |
| 3373 return NULL; |
3365 return NULL; |
| 3374 } |
3366 } |
| 3375 |
3367 |
| 3376 ret = g_memdup2(thrd, sizeof *thrd); |
3368 ret = g_memdup2(thrd, sizeof *thrd); |
| 3377 |
3369 ret->topic = g_strdup(thrd->topic); |
| 3378 if (deep) { |
3370 ret->users = g_slist_copy_deep(thrd->users, (GCopyFunc)fb_api_user_dup, NULL); |
| 3379 ret->users = NULL; |
|
| 3380 |
|
| 3381 for (l = thrd->users; l != NULL; l = l->next) { |
|
| 3382 user = fb_api_user_dup(l->data, TRUE); |
|
| 3383 ret->users = g_slist_prepend(ret->users, user); |
|
| 3384 } |
|
| 3385 |
|
| 3386 ret->topic = g_strdup(thrd->topic); |
|
| 3387 ret->users = g_slist_reverse(ret->users); |
|
| 3388 } |
|
| 3389 |
3371 |
| 3390 return ret; |
3372 return ret; |
| 3391 } |
3373 } |
| 3392 |
3374 |
| 3393 void |
3375 void |
| 3433 g_free(typg); |
3415 g_free(typg); |
| 3434 } |
3416 } |
| 3435 } |
3417 } |
| 3436 |
3418 |
| 3437 FbApiUser * |
3419 FbApiUser * |
| 3438 fb_api_user_dup(const FbApiUser *user, gboolean deep) |
3420 fb_api_user_dup(const FbApiUser *user) |
| 3439 { |
3421 { |
| 3440 FbApiUser *ret; |
3422 FbApiUser *ret; |
| 3441 |
3423 |
| 3442 if (user == NULL) { |
3424 if (user == NULL) { |
| 3443 return NULL; |
3425 return NULL; |
| 3444 } |
3426 } |
| 3445 |
3427 |
| 3446 ret = g_memdup2(user, sizeof *user); |
3428 ret = g_memdup2(user, sizeof *user); |
| 3447 |
3429 ret->name = g_strdup(user->name); |
| 3448 if (deep) { |
3430 ret->icon = g_strdup(user->icon); |
| 3449 ret->name = g_strdup(user->name); |
3431 ret->csum = g_strdup(user->csum); |
| 3450 ret->icon = g_strdup(user->icon); |
|
| 3451 ret->csum = g_strdup(user->csum); |
|
| 3452 } |
|
| 3453 |
3432 |
| 3454 return ret; |
3433 return ret; |
| 3455 } |
3434 } |
| 3456 |
3435 |
| 3457 void |
3436 void |