mcabber/src/commands.c
changeset 1072 2a3cfb98bd5e
parent 1070 9eaacc0ad3a2
child 1073 253e8988eb5c
equal deleted inserted replaced
1071:866be086cc9b 1072:2a3cfb98bd5e
  1280   esub   = buddy_getsubscription(bud);
  1280   esub   = buddy_getsubscription(bud);
  1281 
  1281 
  1282   buffer = g_new(char, 4096);
  1282   buffer = g_new(char, 4096);
  1283 
  1283 
  1284   if (bjid) {
  1284   if (bjid) {
  1285     GSList *resources;
  1285     GSList *resources, *p_res;
  1286     char *bstr = "unknown";
  1286     char *bstr = "unknown";
  1287 
  1287 
  1288     // Enter chat mode
  1288     // Enter chat mode
  1289     scr_set_chatmode(TRUE);
  1289     scr_set_chatmode(TRUE);
  1290     scr_ShowBuddyWindow();
  1290     scr_ShowBuddyWindow();
  1318       if (rst_msg) {
  1318       if (rst_msg) {
  1319         snprintf(buffer, 4095, "Last status message: %s", rst_msg);
  1319         snprintf(buffer, 4095, "Last status message: %s", rst_msg);
  1320         scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1320         scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1321       }
  1321       }
  1322     }
  1322     }
  1323     for ( ; resources ; resources = g_slist_next(resources) ) {
  1323     for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
  1324       gchar rprio;
  1324       gchar rprio;
  1325       enum imstatus rstatus;
  1325       enum imstatus rstatus;
  1326       const char *rst_msg;
  1326       const char *rst_msg;
  1327       time_t rst_time;
  1327       time_t rst_time;
  1328       struct pgp_data *rpgp;
  1328       struct pgp_data *rpgp;
  1329 
  1329 
  1330       rprio   = buddy_getresourceprio(bud, resources->data);
  1330       rprio   = buddy_getresourceprio(bud, p_res->data);
  1331       rstatus = buddy_getstatus(bud, resources->data);
  1331       rstatus = buddy_getstatus(bud, p_res->data);
  1332       rst_msg = buddy_getstatusmsg(bud, resources->data);
  1332       rst_msg = buddy_getstatusmsg(bud, p_res->data);
  1333       rst_time = buddy_getstatustime(bud, resources->data);
  1333       rst_time = buddy_getstatustime(bud, p_res->data);
  1334       rpgp = buddy_resource_pgp(bud, resources->data);
  1334       rpgp = buddy_resource_pgp(bud, p_res->data);
  1335 
  1335 
  1336       snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
  1336       snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
  1337                rprio, (char*)resources->data);
  1337                rprio, (char*)p_res->data);
  1338       scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1338       scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1339       if (rst_msg) {
  1339       if (rst_msg) {
  1340         snprintf(buffer, 4095, "Status message: %s", rst_msg);
  1340         snprintf(buffer, 4095, "Status message: %s", rst_msg);
  1341         scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1341         scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1342       }
  1342       }
  1358                    (ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
  1358                    (ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
  1359           scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1359           scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1360         }
  1360         }
  1361       }
  1361       }
  1362 #endif
  1362 #endif
  1363     }
  1363       g_free(p_res->data);
       
  1364     }
       
  1365     g_slist_free(resources);
  1364   } else {
  1366   } else {
  1365     if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name);
  1367     if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name);
  1366     scr_LogPrint(LPRINT_NORMAL, "Type: %s",
  1368     scr_LogPrint(LPRINT_NORMAL, "Type: %s",
  1367                  type == ROSTER_TYPE_GROUP ? "group" :
  1369                  type == ROSTER_TYPE_GROUP ? "group" :
  1368                  (type == ROSTER_TYPE_SPECIAL ? "special" : "unknown"));
  1370                  (type == ROSTER_TYPE_SPECIAL ? "special" : "unknown"));
  1388 // room_names() is a variation of do_info(), for chatrooms only
  1390 // room_names() is a variation of do_info(), for chatrooms only
  1389 static void room_names(gpointer bud, char *arg)
  1391 static void room_names(gpointer bud, char *arg)
  1390 {
  1392 {
  1391   const char *bjid;
  1393   const char *bjid;
  1392   char *buffer;
  1394   char *buffer;
  1393   GSList *resources;
  1395   GSList *resources, *p_res;
  1394 
  1396 
  1395   if (*arg) {
  1397   if (*arg) {
  1396     scr_LogPrint(LPRINT_NORMAL, "This action does not require a parameter.");
  1398     scr_LogPrint(LPRINT_NORMAL, "This action does not require a parameter.");
  1397     return;
  1399     return;
  1398   }
  1400   }
  1406   buffer = g_new(char, 4096);
  1408   buffer = g_new(char, 4096);
  1407   strncpy(buffer, "Room members:", 127);
  1409   strncpy(buffer, "Room members:", 127);
  1408   scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1410   scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1409 
  1411 
  1410   resources = buddy_getresources(bud);
  1412   resources = buddy_getresources(bud);
  1411   for ( ; resources ; resources = g_slist_next(resources) ) {
  1413   for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
  1412     enum imstatus rstatus;
  1414     enum imstatus rstatus;
  1413     const char *rst_msg;
  1415     const char *rst_msg;
  1414 
  1416 
  1415     rstatus = buddy_getstatus(bud, resources->data);
  1417     rstatus = buddy_getstatus(bud, p_res->data);
  1416     rst_msg = buddy_getstatusmsg(bud, resources->data);
  1418     rst_msg = buddy_getstatusmsg(bud, p_res->data);
  1417 
  1419 
  1418     snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
  1420     snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
  1419              (char*)resources->data);
  1421              (char*)p_res->data);
  1420     scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1422     scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO);
  1421     if (rst_msg) {
  1423     if (rst_msg) {
  1422       snprintf(buffer, 4095, "Status message: %s", rst_msg);
  1424       snprintf(buffer, 4095, "Status message: %s", rst_msg);
  1423       scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1425       scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_NONE);
  1424     }
  1426     }
  1425   }
  1427     g_free(p_res->data);
  1426 
  1428   }
       
  1429   g_slist_free(resources);
  1427   g_free(buffer);
  1430   g_free(buffer);
  1428 }
  1431 }
  1429 
  1432 
  1430 static void move_group_member(gpointer bud, void *groupnamedata)
  1433 static void move_group_member(gpointer bud, void *groupnamedata)
  1431 {
  1434 {