static void ggp_message_format_from_gg(ggp_message_got_data *msg, const gchar *text) { gchar *text_new, *tmp; if (text == NULL) { msg->text = g_strdup(""); return; } text_new = g_strdup(text); purple_str_strip_char(text_new, '\r'); tmp = text_new; text_new = purple_strreplace(text_new, GGP_GG10_DEFAULT_FORMAT, GGP_GG10_DEFAULT_FORMAT_REPLACEMENT); g_free(tmp); tmp = text_new; text_new = g_regex_replace_eval(global_data.re_gg_img, text_new, -1, 0, 0, ggp_message_format_from_gg_found_img, msg, NULL); g_free(tmp); msg->text = text_new; }
static void om_start_im_cb(OmegleAccount *oma, gchar *response, gsize len, gpointer userdata) { gchar *id; //This should come back with an ID that we pass around id = g_strdup(response); purple_str_strip_char(id, '"'); //Start the event loop om_fetch_events(oma, g_strdup(id)); g_free(id); }
static const gchar * pb_normalise_clean(const PurpleAccount *account, const char *who) { static gchar normalised[100]; gint i, len, next = 0; memset(normalised, 0, sizeof(normalised)); len = strlen(who); if (PB_IS_SMS(who)) { for(i = 0; i < len && i < sizeof(normalised); i++) { //strip out anything not a number if ((who[i] >= '0' && who[i] <= '9') || who[i] == '+') normalised[next++] = who[i]; } } else { memcpy(normalised, who, MIN(len, sizeof(normalised))); purple_str_strip_char(normalised, ' '); } return normalised; }
static void historize(PurpleConversation *c) { PurpleAccount *account = purple_conversation_get_account(c); const char *name = purple_conversation_get_name(c); PurpleConversationType convtype; GList *logs = NULL; const char *alias = name; PurpleLogReadFlags flags; char *history; char *header; PurpleMessageFlags mflag; convtype = purple_conversation_get_type(c); if (convtype == PURPLE_CONV_TYPE_IM) { GSList *buddies; GSList *cur; FinchConv *fc = FINCH_CONV(c); if (fc->list && fc->list->next) /* We were already in the middle of a conversation. */ return; /* If we're not logging, don't show anything. * Otherwise, we might show a very old log. */ if (!purple_prefs_get_bool("/purple/logging/log_ims")) return; /* Find buddies for this conversation. */ buddies = purple_find_buddies(account, name); /* If we found at least one buddy, save the first buddy's alias. */ if (buddies != NULL) alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data); for (cur = buddies; cur != NULL; cur = cur->next) { PurpleBlistNode *node = cur->data; if ((node != NULL) && ((purple_blist_node_get_sibling_prev(node) != NULL) || (purple_blist_node_get_sibling_next(node) != NULL))) { PurpleBlistNode *node2; alias = purple_buddy_get_contact_alias((PurpleBuddy *)node); /* We've found a buddy that matches this conversation. It's part of a * PurpleContact with more than one PurpleBuddy. Loop through the PurpleBuddies * in the contact and get all the logs. */ for (node2 = purple_blist_node_get_first_child(purple_blist_node_get_parent(node)); node2 != NULL ; node2 = purple_blist_node_get_sibling_next(node2)) { logs = g_list_concat( purple_log_get_logs(PURPLE_LOG_IM, purple_buddy_get_name((PurpleBuddy *)node2), purple_buddy_get_account((PurpleBuddy *)node2)), logs); } break; } } g_slist_free(buddies); if (logs == NULL) logs = purple_log_get_logs(PURPLE_LOG_IM, name, account); else logs = g_list_sort(logs, purple_log_compare); } else if (convtype == PURPLE_CONV_TYPE_CHAT) { /* If we're not logging, don't show anything. * Otherwise, we might show a very old log. */ if (!purple_prefs_get_bool("/purple/logging/log_chats")) return; logs = purple_log_get_logs(PURPLE_LOG_CHAT, name, account); } if (logs == NULL) return; mflag = PURPLE_MESSAGE_NO_LOG | PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_DELAYED; history = purple_log_read((PurpleLog*)logs->data, &flags); header = g_strdup_printf(_("<b>Conversation with %s on %s:</b><br>"), alias, purple_date_format_full(localtime(&((PurpleLog *)logs->data)->time))); purple_conversation_write(c, "", header, mflag, time(NULL)); g_free(header); if (flags & PURPLE_LOG_READ_NO_NEWLINE) purple_str_strip_char(history, '\n'); purple_conversation_write(c, "", history, mflag, time(NULL)); g_free(history); purple_conversation_write(c, "", "<hr>", mflag, time(NULL)); g_list_foreach(logs, (GFunc)purple_log_free, NULL); g_list_free(logs); }
static gboolean eval(const GMatchInfo *match_info, GString *result, gpointer user_data) { eval_data *data = (eval_data *)user_data; gint which = data->which; gint service = data->service; gchar sub[SUBST_BUF_SIZE]; twitter_debug("which = %d service = %d\n", which, service); if(which == RECIPIENT) { gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding \s */ gchar *match2 = g_match_info_fetch(match_info, 2); /* recipient */ const gchar *format = NULL; switch(service) { case twitter_service: format = RECIPIENT_FORMAT_TWITTER; break; case wassr_service: format = RECIPIENT_FORMAT_WASSR; break; case identica_service: format = RECIPIENT_FORMAT_IDENTICA; break; case jisko_service: format = RECIPIENT_FORMAT_JISKO; break; case ffeed_service: format = RECIPIENT_FORMAT_FFEED; break; default: twitter_debug("unknown service\n"); break; } g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); g_free(match1); g_free(match2); } else if(which == SENDER) { gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */ gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */ const gchar *format = NULL; switch(service) { case twitter_service: format = SENDER_FORMAT_TWITTER; break; case wassr_service: format = SENDER_FORMAT_WASSR; break; case identica_service: format = SENDER_FORMAT_IDENTICA; break; case jisko_service: format = SENDER_FORMAT_JISKO; break; default: twitter_debug("unknown service\n"); break; } g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); g_free(match1); g_free(match2); } else if(which == SENDER_FFEED) { gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */ gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */ const gchar *format = NULL; format = SENDER_FORMAT_FFEED; g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); g_free(match1); g_free(match2); } else if(which == CHANNEL_WASSR && service == wassr_service) { gchar *match1 = g_match_info_fetch(match_info, 1); /* before channel */ gchar *match2 = g_match_info_fetch(match_info, 2); /* channel */ const gchar *format = CHANNEL_FORMAT_WASSR; g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); g_free(match1); g_free(match2); } else if(which == TAG_TWITTER && service == twitter_service) { gchar *match1 = g_match_info_fetch(match_info, 1); /* white space */ gchar *match2 = g_match_info_fetch(match_info, 2); /* search tag */ const gchar *format = TAG_FORMAT_TWITTER; g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); g_free(match1); g_free(match2); } else if(which == TAG_IDENTICA && service == identica_service) { gchar *match = g_match_info_fetch(match_info, 1); gchar *link = g_ascii_strdown(match, -1); purple_str_strip_char(link, '-'); purple_str_strip_char(link, '_'); g_snprintf(sub, SUBST_BUF_SIZE, TAG_FORMAT_IDENTICA, link, match); g_free(match); g_free(link); } else if(which == GROUP_IDENTICA && service == identica_service) { gchar *match = g_match_info_fetch(match_info, 1); gchar *link = g_ascii_strdown(match, -1); purple_str_strip_char(link, '-'); purple_str_strip_char(link, '_'); g_snprintf(sub, SUBST_BUF_SIZE, GROUP_FORMAT_IDENTICA, link, match); g_free(match); g_free(link); } else if(which == EXCESS_LF) { g_snprintf(sub, SUBST_BUF_SIZE, "%s", "\n"); } else if(which == TRAIL_HASH) { g_snprintf(sub, SUBST_BUF_SIZE, "%s", ""); /* xxx --yaz */ } g_string_append(result, sub); twitter_debug("sub = %s\n", sub); return FALSE; }