diff options
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/twitter/twitter.c | 4 | ||||
-rw-r--r-- | protocols/twitter/twitter_lib.c | 63 |
2 files changed, 15 insertions, 52 deletions
diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 8f5dc168..eb30187f 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -538,10 +538,6 @@ static void twitter_init(account_t * acc) s = set_add(&acc->set, "show_old_mentions", "0", set_eval_int, acc); s = set_add(&acc->set, "strip_newlines", "false", set_eval_bool, acc); - - s = set_add(&acc->set, "format_string", "\002[\002%i\002]\002 %c", NULL, acc); - s = set_add(&acc->set, "retweet_format_string", "\002[\002%i\002]\002 RT @%a: %c", NULL, acc); - s = set_add(&acc->set, "reply_format_string", "\002[\002%i->%r\002]\002 %c", NULL, acc); s = set_add(&acc->set, "_last_tweet", "0", NULL, acc); s->flags |= SET_HIDDEN | SET_NOSAVE; diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c index b827a139..c8956606 100644 --- a/protocols/twitter/twitter_lib.c +++ b/protocols/twitter/twitter_lib.c @@ -62,7 +62,6 @@ struct twitter_xml_status { guint64 id, rt_id; /* Usually equal, with RTs id == *original* id */ guint64 reply_to; gboolean from_filter; - struct twitter_xml_status *rt; }; /** @@ -88,7 +87,6 @@ static void txs_free(struct twitter_xml_status *txs) g_free(txs->text); txu_free(txs->user); - txs_free(txs->rt); g_free(txs); } @@ -490,9 +488,9 @@ static struct twitter_xml_status *twitter_xt_get_status(const json_value *node) struct twitter_xml_status *rtxs = twitter_xt_get_status(rt); if (rtxs) { g_free(txs->text); - txs->text = g_strdup(rtxs->text); + txs->text = g_strdup_printf("RT @%s: %s", rtxs->user->screen_name, rtxs->text); txs->id = rtxs->id; - txs->rt = rtxs; + txs_free(rtxs); } } else if (entities) { txs->text = expand_entities(txs->text, entities); @@ -610,49 +608,6 @@ static gboolean twitter_xt_get_status_list(struct im_connection *ic, const json_ return TRUE; } -/** - * Function to properly format a tweet as per the users configuration. - */ -static char *twitter_msg_get_text(struct im_connection *ic, int log_id, int reply_to, - struct twitter_xml_status *txs, const char *prefix) { - gchar * format = set_getstr(&ic->acc->set, "format_string"); - GString * text = g_string_new(NULL); - - gchar *c; - if (reply_to != -1) - format = set_getstr(&ic->acc->set, "reply_format_string"); - if (txs->rt) - format = set_getstr(&ic->acc->set, "retweet_format_string"); - - for (c = format; *c ; c++) { - if (!(*c == '%' && *(c+1))) { - text = g_string_append_c(text, *c); - continue; - } - c++; // Move past the % - switch (*c) { - case 'i': - g_string_append_printf(text, "%02x", log_id); - break; - case 'r': - if (reply_to != -1) // In case someone does put %r in the wrong format_string - g_string_append_printf(text, "%02x", reply_to); - break; - case 'a': - if (txs->rt) // In case someone does put %a in the wrong format_string - text = g_string_append(text, txs->rt->user->screen_name); - break; - case 'c': - text = g_string_append(text, txs->text); - break; - default: - text = g_string_append_c(text, *c); - } - } - text = g_string_prepend(text, prefix); - return g_string_free(text, FALSE); -} - /* Will log messages either way. Need to keep track of IDs for stream deduping. Plus, show_ids is on by default and I don't see why anyone would disable it. */ static char *twitter_msg_add_id(struct im_connection *ic, @@ -691,7 +646,19 @@ static char *twitter_msg_add_id(struct im_connection *ic, if (g_strcasecmp(txs->user->screen_name, td->user) == 0) td->log[td->log_id].id = txs->rt_id; - return twitter_msg_get_text(ic, td->log_id, reply_to, txs, prefix); + if (set_getbool(&ic->acc->set, "show_ids")) { + if (reply_to != -1) + return g_strdup_printf("\002[\002%02x->%02x\002]\002 %s%s", + td->log_id, reply_to, prefix, txs->text); + else + return g_strdup_printf("\002[\002%02x\002]\002 %s%s", + td->log_id, prefix, txs->text); + } else { + if (*prefix) + return g_strconcat(prefix, txs->text, NULL); + else + return NULL; + } } /** |