Mercurial > pidgin-twitter
comparison util.c @ 331:b4c846870b3c
improved handling of RT string
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 13 Oct 2009 02:45:03 +0900 |
parents | cc41ee1f5d3a |
children | 227852ee649c |
comparison
equal
deleted
inserted
replaced
330:cc41ee1f5d3a | 331:b4c846870b3c |
---|---|
483 idstr = g_hash_table_lookup(params, "id"); | 483 idstr = g_hash_table_lookup(params, "id"); |
484 fav_with_api(strtoull(idstr, NULL, 10)); | 484 fav_with_api(strtoull(idstr, NULL, 10)); |
485 return TRUE; | 485 return TRUE; |
486 } | 486 } |
487 else if(strstr(cmd, "retweet-twitter")) { | 487 else if(strstr(cmd, "retweet-twitter")) { |
488 gchar *msg0; | |
488 sender = g_hash_table_lookup(params, "user"); | 489 sender = g_hash_table_lookup(params, "user"); |
489 idstr = g_hash_table_lookup(params, "id"); | 490 idstr = g_hash_table_lookup(params, "id"); |
490 msg = g_hash_table_lookup(params, "msg"); | 491 msg0 = g_hash_table_lookup(params, "msg"); |
492 msg = g_uri_unescape_string(msg0, NULL); | |
493 | |
491 if(idstr) | 494 if(idstr) |
492 msgid = strtoull(idstr, NULL, 10); | 495 msgid = strtoull(idstr, NULL, 10); |
493 | 496 |
494 /* find conv */ | 497 /* find conv */ |
495 conv = purple_find_conversation_with_account( | 498 conv = purple_find_conversation_with_account( |
499 gtkconv = PIDGIN_CONVERSATION(conv); | 502 gtkconv = PIDGIN_CONVERSATION(conv); |
500 | 503 |
501 twitter_debug("sender = %s, id = %llu\n", sender, (unsigned long long)msgid); | 504 twitter_debug("sender = %s, id = %llu\n", sender, (unsigned long long)msgid); |
502 | 505 |
503 recipient = g_strdup_printf("RT @%s: %s", sender, msg); | 506 recipient = g_strdup_printf("RT @%s: %s", sender, msg); |
507 g_free(msg); | |
504 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | 508 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, |
505 recipient, -1); | 509 recipient, -1); |
506 | 510 |
507 GtkTextIter iter; | 511 GtkTextIter iter; |
508 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &iter); | 512 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &iter); |
514 return TRUE; | 518 return TRUE; |
515 } | 519 } |
516 return FALSE; | 520 return FALSE; |
517 } | 521 } |
518 | 522 |
519 void | 523 gchar * |
520 twitter_add_links(gchar **str) | 524 twitter_make_link_string(gchar **str) |
521 { | 525 { |
522 GMatchInfo *match_info = NULL; | 526 GMatchInfo *match_info = NULL; |
523 gchar *tmpstr0 = NULL, *tmpstr = NULL; | 527 gchar *boddy0 = NULL, *boddy = NULL; |
524 gchar *newstr = NULL, *match = NULL; | 528 gchar *newstr = NULL, *match = NULL; |
525 gchar *linkstr = NULL; | 529 gchar *linkstr = NULL; |
526 gchar *user = NULL; | 530 gchar *user = NULL; |
527 | 531 |
528 twitter_debug("called\n"); | 532 twitter_debug("called\n"); |
529 | 533 |
530 /* buffer without ptmsgid=123 */ | 534 /* buffer without ptmsgid=123 */ |
531 tmpstr0 = g_regex_replace(regp[SENDER], *str, -1, 0, "", 0, NULL); | 535 boddy0 = g_regex_replace(regp[SENDER], *str, -1, 0, "", 0, NULL); |
532 tmpstr = g_regex_replace(regp[MESSAGE_ID], tmpstr0, -1, 0, "", 0, NULL); | 536 boddy = g_regex_replace(regp[MESSAGE_ID], boddy0, -1, 0, "", 0, NULL); |
533 g_free(tmpstr0); | 537 g_free(boddy0); |
534 tmpstr0 = NULL; | 538 boddy0 = NULL; |
535 twitter_debug("tmpstr = %s\n", tmpstr); | 539 twitter_debug("boddy = %s\n", boddy); |
540 | |
541 boddy0 = g_uri_escape_string(boddy, " !$()*,;:@/?#[]", TRUE); | |
542 g_free(boddy); | |
543 boddy = boddy0; | |
536 | 544 |
537 /* sender */ | 545 /* sender */ |
538 g_regex_match(regp[SENDER], *str, 0, &match_info); | 546 g_regex_match(regp[SENDER], *str, 0, &match_info); |
539 if(g_match_info_matches(match_info)) { | 547 if(g_match_info_matches(match_info)) { |
540 user = g_match_info_fetch(match_info, 2); | 548 user = g_match_info_fetch(match_info, 2); |
548 if(match_info) { | 556 if(match_info) { |
549 match = g_match_info_fetch(match_info, 1); | 557 match = g_match_info_fetch(match_info, 1); |
550 linkstr = g_strdup_printf(LINK_FORMAT_TWITTER, | 558 linkstr = g_strdup_printf(LINK_FORMAT_TWITTER, |
551 match, user, /* Reply */ | 559 match, user, /* Reply */ |
552 match, /* Favorite */ | 560 match, /* Favorite */ |
553 match, user, tmpstr); /* Retweet */ | 561 match, user, boddy); /* Retweet */ |
554 | 562 |
555 twitter_debug("linkstr = %s\n", linkstr); | 563 twitter_debug("linkstr = %s\n", linkstr); |
556 | 564 |
557 newstr = g_regex_replace(regp[MESSAGE_ID], *str, -1, 0, | 565 newstr = g_regex_replace(regp[MESSAGE_ID], *str, -1, 0, |
558 linkstr, | 566 "", |
559 0, NULL); | 567 0, NULL); |
560 | 568 |
561 twitter_debug("newstr = %s\n", newstr); | 569 twitter_debug("newstr = %s\n", newstr); |
562 | 570 |
563 g_free(*str); | 571 g_free(*str); |
564 *str = newstr; | 572 *str = newstr; |
565 | 573 |
566 g_free(linkstr); | |
567 | |
568 g_free(match); | 574 g_free(match); |
569 match = NULL; | 575 match = NULL; |
570 | 576 |
571 g_match_info_free(match_info); | 577 g_match_info_free(match_info); |
572 match_info = NULL; | 578 match_info = NULL; |
573 } | 579 } |
574 | 580 |
575 g_free(user); | 581 g_free(user); |
576 g_free(tmpstr); | 582 g_free(boddy); |
577 } | 583 |
584 return linkstr; | |
585 } |