void prplcb_conv_chat_msg( PurpleConversation *conv, const char *who, const char *message, PurpleMessageFlags flags, time_t mtime ) { struct groupchat *gc = conv->ui_data; PurpleBuddy *buddy; /* ..._SEND means it's an outgoing message, no need to echo those. */ if( flags & PURPLE_MESSAGE_SEND ) return; buddy = purple_find_buddy( conv->account, who ); if( buddy != NULL ) who = purple_buddy_get_name( buddy ); imcb_chat_msg( gc, who, (char*) message, 0, mtime ); }
/* Generic handler for IM or chat messages, covers write_chat, write_im and write_conv */ static void handle_conv_msg(PurpleConversation *conv, const char *who, const char *message, guint32 bee_flags, time_t mtime) { struct im_connection *ic = purple_ic_by_pa(conv->account); struct groupchat *gc = conv->ui_data; PurpleBuddy *buddy; buddy = purple_find_buddy(conv->account, who); if (buddy != NULL) { who = purple_buddy_get_name(buddy); } if (conv->type == PURPLE_CONV_TYPE_IM) { imcb_buddy_msg(ic, (char *) who, (char *) message, bee_flags, mtime); } else if (gc) { imcb_chat_msg(gc, who, (char *) message, bee_flags, mtime); } }
static void skype_parse_chatmessage_said_emoted(struct im_connection *ic, struct groupchat *gc, char *body) { struct skype_data *sd = ic->proto_data; char buf[IRC_LINE_SIZE]; if (!strcmp(sd->type, "SAID")) { if (!sd->is_edit) g_snprintf(buf, IRC_LINE_SIZE, "%s", body); else { g_snprintf(buf, IRC_LINE_SIZE, "%s %s", set_getstr(&ic->acc->set, "edit_prefix"), body); sd->is_edit = 0; } } else g_snprintf(buf, IRC_LINE_SIZE, "/me %s", body); if (!gc) /* Private message */ imcb_buddy_msg(ic, sd->handle, buf, 0, 0); else /* Groupchat message */ imcb_chat_msg(gc, sd->handle, buf, 0, 0); }