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