changeset 650:c2d50b97ced4

MUC: /room {leave,nick,topic} can only be used when inside a room
author Mikael Berthe <mikael@lilotux.net>
date Sat, 07 Jan 2006 01:31:41 +0100
parents 3ad6675caaf1
children 936df057dda0
files mcabber/src/commands.c
diffstat 1 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sat Jan 07 01:15:04 2006 +0100
+++ b/mcabber/src/commands.c	Sat Jan 07 01:31:41 2006 +0100
@@ -1476,8 +1476,15 @@
 static void room_leave(gpointer bud, char *arg)
 {
   gchar *roomid, *utf8_nickname;
+  const char *nickname;
 
-  utf8_nickname = to_utf8(buddy_getnickname(bud));
+  nickname = buddy_getnickname(bud);
+  if (!nickname) {
+    scr_LogPrint(LPRINT_NORMAL, "You are not in this room");
+    return;
+  }
+
+  utf8_nickname = to_utf8(nickname);
   roomid = g_strdup_printf("%s/%s", buddy_getjid(bud), utf8_nickname);
   jb_setstatus(offline, roomid, arg);
   g_free(utf8_nickname);
@@ -1486,6 +1493,11 @@
 
 static void room_nick(gpointer bud, char *arg)
 {
+  if (!buddy_getinsideroom(bud)) {
+    scr_LogPrint(LPRINT_NORMAL, "You are not in this room");
+    return;
+  }
+
   if (!arg || !*arg) {
     const char *nick = buddy_getnickname(bud);
     if (nick)
@@ -1544,6 +1556,11 @@
 {
   gchar *msg;
 
+  if (!buddy_getinsideroom(bud)) {
+    scr_LogPrint(LPRINT_NORMAL, "You are not in this room");
+    return;
+  }
+
   // If no parameter is given, display the current topic
   if (!*arg) {
     const char *topic = buddy_gettopic(bud);