diff mcabber/src/commands.c @ 469:a926523d2392

Use UTF8 to handle resources and room nicknames
author Mikael Berthe <mikael@lilotux.net>
date Sat, 01 Oct 2005 23:17:05 +0200
parents e4840b288be0
children eaa2ad773192
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sat Oct 01 18:53:14 2005 +0200
+++ b/mcabber/src/commands.c	Sat Oct 01 23:17:05 2005 +0200
@@ -930,7 +930,7 @@
     gchar *buffer;
     for (arg += 5; *arg && *arg == ' '; arg++)
       ;
-    buffer = g_locale_to_utf8(arg, -1, NULL, NULL, NULL);
+    buffer = to_utf8(arg);
     if (!buffer) {
       scr_LogPrint(LPRINT_NORMAL, "Conversion error in XML string");
       return;
@@ -956,8 +956,7 @@
   bud = BUDDATA(current_buddy);
 
   if (!strncasecmp(arg, "join", 4))  {
-    GSList *roster_usr;
-    char *roomname, *nick, *roomid;
+    char *roomname, *nick;
 
     arg += 4;
     if (*arg++ != ' ') {
@@ -988,29 +987,15 @@
       g_free(roomname);
       return;
     }
-    // room syntax: "room@server/nick"
-    roomid = g_strdup_printf("%s/%s", roomname, nick);
-    if (check_jid_syntax(roomid)) {
-      scr_LogPrint(LPRINT_NORMAL, "<%s> is not a valid Jabber room", roomid);
-      g_free(roomname);
-      g_free(roomid);
-      return;
-    }
 
-    mc_strtolower(roomid);
-    jb_room_join(roomid);
-
-    // We need to save the nickname for future use
-    roster_usr = roster_add_user(roomname, NULL, NULL, ROSTER_TYPE_ROOM);
-    if (roster_usr)
-      buddy_setnickname(roster_usr->data, nick);
+    mc_strtolower(roomname);
+    jb_room_join(roomname, nick);
 
     g_free(roomname);
-    g_free(roomid);
     buddylist_build();
     update_roster = TRUE;
   } else if (!strncasecmp(arg, "leave", 5))  {
-    char *roomid;
+    gchar *roomid, *utf8_nickname;
     arg += 5;
     for (; *arg && *arg == ' '; arg++)
       ;
@@ -1018,9 +1003,10 @@
       scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom");
       return;
     }
-    roomid = g_strdup_printf("%s/%s", buddy_getjid(bud),
-                             buddy_getnickname(bud));
+    utf8_nickname = to_utf8(buddy_getnickname(bud));
+    roomid = g_strdup_printf("%s/%s", buddy_getjid(bud), utf8_nickname);
     jb_setstatus(offline, roomid, arg);
+    g_free(utf8_nickname);
     g_free(roomid);
     buddy_setnickname(bud, NULL);
     buddy_del_all_resources(bud);