mcabber/src/commands.c
changeset 659 e61aa455c61b
parent 653 d5db5be78eb0
child 677 633a0522bd37
equal deleted inserted replaced
658:5d71d1f8887e 659:e61aa455c61b
  1301 
  1301 
  1302 static void room_join(gpointer bud, char *arg)
  1302 static void room_join(gpointer bud, char *arg)
  1303 {
  1303 {
  1304   char **paramlst;
  1304   char **paramlst;
  1305   char *roomname, *nick;
  1305   char *roomname, *nick;
       
  1306   char *tmpnick = NULL;
  1306 
  1307 
  1307   paramlst = split_arg(arg, 2, 0); // roomid, nickname
  1308   paramlst = split_arg(arg, 2, 0); // roomid, nickname
  1308   roomname = *paramlst;
  1309   roomname = *paramlst;
  1309   nick = *(paramlst+1);
  1310   nick = *(paramlst+1);
  1310 
  1311 
  1313     scr_LogPrint(LPRINT_NORMAL, "Invalid room name");
  1314     scr_LogPrint(LPRINT_NORMAL, "Invalid room name");
  1314     free_arg_lst(paramlst);
  1315     free_arg_lst(paramlst);
  1315     return;
  1316     return;
  1316   }
  1317   }
  1317 
  1318 
       
  1319   // If no nickname is provided with the /join command,
       
  1320   // we try the "nickname" option, then the username part of the jid.
       
  1321   if (!nick || !*nick) {
       
  1322     nick = (char*)settings_opt_get("nickname");
       
  1323     if (!nick) {
       
  1324       nick = (char*)settings_opt_get("username");
       
  1325       if (nick && (strchr(nick, '@') > nick)) {
       
  1326         char *p;
       
  1327         nick = tmpnick = g_strdup(nick);
       
  1328         p = strchr(nick, '@');
       
  1329         *p = 0;
       
  1330       }
       
  1331     }
       
  1332   }
       
  1333   // If we still have no nickname, give up
  1318   if (!nick || !*nick) {
  1334   if (!nick || !*nick) {
  1319     scr_LogPrint(LPRINT_NORMAL, "Missing parameter (nickname)");
  1335     scr_LogPrint(LPRINT_NORMAL, "Missing parameter (nickname)");
  1320     free_arg_lst(paramlst);
  1336     free_arg_lst(paramlst);
  1321     return;
  1337     return;
  1322   }
  1338   }
  1329   scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>", roomname);
  1345   scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>", roomname);
  1330 
  1346 
  1331   buddylist_build();
  1347   buddylist_build();
  1332   update_roster = TRUE;
  1348   update_roster = TRUE;
  1333   free_arg_lst(paramlst);
  1349   free_arg_lst(paramlst);
       
  1350   if (tmpnick)
       
  1351     g_free(tmpnick);
  1334 }
  1352 }
  1335 
  1353 
  1336 static void room_invite(gpointer bud, char *arg)
  1354 static void room_invite(gpointer bud, char *arg)
  1337 {
  1355 {
  1338   char **paramlst;
  1356   char **paramlst;