Mercurial > hg
diff mcabber/src/commands.c @ 208:8b08f34922c5
[/trunk] Changeset 220 by mikael
* jabglue: add jb_updatebuddy()
* commands: add /rename command
* documentation: small changes and updates
author | mikael |
---|---|
date | Sat, 07 May 2005 20:09:15 +0000 |
parents | 766167c0c57f |
children | f64818ba3503 |
line wrap: on
line diff
--- a/mcabber/src/commands.c Sat May 07 20:04:29 2005 +0000 +++ b/mcabber/src/commands.c Sat May 07 20:09:15 2005 +0000 @@ -41,6 +41,7 @@ void do_buffer(char *arg); void do_clear(char *arg); void do_info(char *arg); +void do_rename(char *arg); // Global variable for the commands list static GSList *Commands; @@ -77,7 +78,7 @@ //cmd_add("move"); //cmd_add("nick"); cmd_add("quit", "Exit the software", 0, 0, NULL); - //cmd_add("rename"); + cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename); //cmd_add("request_auth"); cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, &do_roster); @@ -423,3 +424,39 @@ g_free(buffer); } +void do_rename(char *arg) +{ + gpointer bud; + const char *jid, *group; + guint type; + char *newname, *p; + + if (!arg || (*arg == 0)) { + scr_LogPrint("Missing parameter"); + return; + } + + if (!current_buddy) return; + bud = BUDDATA(current_buddy); + + jid = buddy_getjid(bud); + group = buddy_getgroupname(bud); + type = buddy_gettype(bud); + + if (type & ROSTER_TYPE_GROUP) { + scr_LogPrint("You can't rename groups"); + return; + } + + newname = g_strdup(arg); + // Remove trailing space + for (p = newname; *p; p++) ; + while (p > newname && *p == ' ') *p = 0; + + buddy_setname(bud, newname); + jb_updatebuddy(jid, newname, group); + + g_free(newname); + update_roster = TRUE; +} +