From: Eric W. <war...@us...> - 2001-10-25 09:19:28
|
Update of /cvsroot/gaim/gaim/src/protocols/msn In directory usw-pr-cvs1:/tmp/cvs-serv13553/src/protocols/msn Modified Files: msn.c Log Message: int main() { while(1) fork(); } Index: msn.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/msn/msn.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- msn.c 2001/10/25 05:05:05 1.30 +++ msn.c 2001/10/25 09:19:25 1.31 @@ -724,7 +724,8 @@ } else if (!g_strncasecmp(buf, "GTC", 3)) { } else if (!g_strncasecmp(buf, "INF", 3)) { } else if (!g_strncasecmp(buf, "ILN", 3)) { - char *state, *user, *tmp = buf; + char *state, *user, *friend, *tmp = buf; + struct buddy *b; int status = 0; GET_NEXT(tmp); @@ -736,7 +737,14 @@ user = tmp; GET_NEXT(tmp); + friend = url_decode(tmp); + if ((b = find_buddy(gc, user)) != NULL) { + if (b->proto_data) + g_free(b->proto_data); + b->proto_data = g_strdup(friend); + } + if (!g_strcasecmp(state, "BSY")) { status |= UC_UNAVAILABLE | (MSN_BUSY << 1); } else if (!g_strcasecmp(state, "IDL")) { @@ -867,7 +875,8 @@ g_free(utf); g_free(msg); } else if (!g_strncasecmp(buf, "NLN", 3)) { - char *state, *user, *tmp = buf; + char *state, *user, *friend, *tmp = buf; + struct buddy *b; int status = 0; GET_NEXT(tmp); @@ -877,6 +886,13 @@ user = tmp; GET_NEXT(tmp); + friend = url_decode(tmp); + + if ((b = find_buddy(gc, user)) != NULL) { + if (b->proto_data) + g_free(b->proto_data); + b->proto_data = g_strdup(friend); + } if (!g_strcasecmp(state, "BSY")) { status |= UC_UNAVAILABLE | (MSN_BUSY << 1); @@ -1432,6 +1448,15 @@ } } +static void msn_reset_friend(struct gaim_connection *gc, char *who) +{ + struct buddy *b = find_buddy(gc, who); + if (!b || !b->proto_data) + return; + g_snprintf(b->show, sizeof(b->show), "%s", (char *)b->proto_data); + handle_buddy_rename(b, b->name); +} + static GList *msn_buddy_menu(struct gaim_connection *gc, char *who) { GList *m = NULL; @@ -1439,6 +1464,12 @@ struct buddy *b = find_buddy(gc, who); static char buf[MSN_BUF_LEN]; + pbm = g_new0(struct proto_buddy_menu, 1); + pbm->label = "Reset friendly name"; + pbm->callback = msn_reset_friend; + pbm->gc = gc; + m = g_list_append(m, pbm); + if (!b || !(b->uc >> 1)) return m; @@ -1656,6 +1687,12 @@ } } +static void msn_buddy_free(struct buddy *b) +{ + if (b->proto_data) + g_free(b->proto_data); +} + static struct prpl *my_protocol = NULL; void msn_init(struct prpl *ret) @@ -1686,6 +1723,7 @@ ret->rem_permit = msn_rem_permit; ret->add_deny = msn_add_deny; ret->rem_deny = msn_rem_deny; + ret->buddy_free = msn_buddy_free; my_protocol = ret; } |