Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/commands.c @ 620:97dd14e22b2a
Rewrite buddy_setgroup()
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Fri, 16 Dec 2005 23:48:42 +0100 |
parents | d3a8b43bf9e7 |
children | 2b7ef605ddc6 |
comparison
equal
deleted
inserted
replaced
619:44ddf9bec3a5 | 620:97dd14e22b2a |
---|---|
1004 } | 1004 } |
1005 | 1005 |
1006 static void do_move(char *arg) | 1006 static void do_move(char *arg) |
1007 { | 1007 { |
1008 gpointer bud; | 1008 gpointer bud; |
1009 const char *jid, *name; | 1009 const char *jid, *name, *oldgroupname; |
1010 guint type; | 1010 guint type; |
1011 char *newgroupname, *p; | 1011 char *newgroupname, *p; |
1012 | 1012 |
1013 if (!current_buddy) return; | 1013 if (!current_buddy) return; |
1014 bud = BUDDATA(current_buddy); | 1014 bud = BUDDATA(current_buddy); |
1015 | 1015 |
1016 jid = buddy_getjid(bud); | 1016 jid = buddy_getjid(bud); |
1017 name = buddy_getname(bud); | 1017 name = buddy_getname(bud); |
1018 type = buddy_gettype(bud); | 1018 type = buddy_gettype(bud); |
1019 | |
1020 oldgroupname = buddy_getgroupname(bud); | |
1019 | 1021 |
1020 if (type & ROSTER_TYPE_GROUP) { | 1022 if (type & ROSTER_TYPE_GROUP) { |
1021 scr_LogPrint(LPRINT_NORMAL, "You can't move groups!"); | 1023 scr_LogPrint(LPRINT_NORMAL, "You can't move groups!"); |
1022 return; | 1024 return; |
1023 } | 1025 } |
1027 for (p = newgroupname; *p; p++) ; | 1029 for (p = newgroupname; *p; p++) ; |
1028 while (p > newgroupname && *p == ' ') *p-- = 0; | 1030 while (p > newgroupname && *p == ' ') *p-- = 0; |
1029 | 1031 |
1030 strip_arg_special_chars(newgroupname); | 1032 strip_arg_special_chars(newgroupname); |
1031 | 1033 |
1032 // Call to buddy_setgroup() should be at the end, as current implementation | 1034 if (strcmp(oldgroupname, newgroupname)) { |
1033 // clones the buddy and deletes the old one (and thus, jid and name are | 1035 jb_updatebuddy(jid, name, *newgroupname ? newgroupname : NULL); |
1034 // freed) | 1036 scr_RosterUp(); |
1035 jb_updatebuddy(jid, name, *newgroupname ? newgroupname : NULL); | 1037 buddy_setgroup(bud, newgroupname); |
1036 scr_RosterUp(); | 1038 } |
1037 buddy_setgroup(bud, newgroupname); | |
1038 | 1039 |
1039 g_free(newgroupname); | 1040 g_free(newgroupname); |
1040 update_roster = TRUE; | 1041 update_roster = TRUE; |
1041 } | 1042 } |
1042 | 1043 |