535 sbuf = g_string_new(""); |
535 sbuf = g_string_new(""); |
536 |
536 |
537 if (!winId) { |
537 if (!winId) { |
538 // We're writing to the status window, so let's show the jid too. |
538 // We're writing to the status window, so let's show the jid too. |
539 g_string_printf(sbuf, "Annotation on <%s>", note->jid); |
539 g_string_printf(sbuf, "Annotation on <%s>", note->jid); |
540 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); |
540 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0); |
541 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
541 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
542 } |
542 } |
543 |
543 |
544 // If we have the creation date, display it |
544 // If we have the creation date, display it |
545 if (note->cdate) { |
545 if (note->cdate) { |
546 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", |
546 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", |
547 localtime(¬e->cdate)); |
547 localtime(¬e->cdate)); |
548 g_string_printf(sbuf, "Note created %s", tbuf); |
548 g_string_printf(sbuf, "Note created %s", tbuf); |
549 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); |
549 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0); |
550 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
550 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
551 } |
551 } |
552 // If we have the modification date, display it |
552 // If we have the modification date, display it |
553 // unless it's the same as the creation date |
553 // unless it's the same as the creation date |
554 if (note->mdate && note->mdate != note->cdate) { |
554 if (note->mdate && note->mdate != note->cdate) { |
555 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", |
555 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", |
556 localtime(¬e->mdate)); |
556 localtime(¬e->mdate)); |
557 g_string_printf(sbuf, "Note modified %s", tbuf); |
557 g_string_printf(sbuf, "Note modified %s", tbuf); |
558 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); |
558 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0); |
559 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
559 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT; |
560 } |
560 } |
561 // Note text |
561 // Note text |
562 g_string_printf(sbuf, "Note: %s", note->text); |
562 g_string_printf(sbuf, "Note: %s", note->text); |
563 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag); |
563 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0); |
564 |
564 |
565 g_string_free(sbuf, TRUE); |
565 g_string_free(sbuf, TRUE); |
566 g_free(note->text); |
566 g_free(note->text); |
567 g_free(note->jid); |
567 g_free(note->jid); |
568 g_free(note); |
568 g_free(note); |
1392 // Enter chat mode |
1392 // Enter chat mode |
1393 scr_set_chatmode(TRUE); |
1393 scr_set_chatmode(TRUE); |
1394 scr_ShowBuddyWindow(); |
1394 scr_ShowBuddyWindow(); |
1395 |
1395 |
1396 snprintf(buffer, 4095, "jid: <%s>", bjid); |
1396 snprintf(buffer, 4095, "jid: <%s>", bjid); |
1397 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1397 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1398 if (name) { |
1398 if (name) { |
1399 snprintf(buffer, 4095, "Name: %s", name); |
1399 snprintf(buffer, 4095, "Name: %s", name); |
1400 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1400 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1401 } |
1401 } |
1402 |
1402 |
1403 if (type == ROSTER_TYPE_USER) bstr = "user"; |
1403 if (type == ROSTER_TYPE_USER) bstr = "user"; |
1404 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom"; |
1404 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom"; |
1405 else if (type == ROSTER_TYPE_AGENT) bstr = "agent"; |
1405 else if (type == ROSTER_TYPE_AGENT) bstr = "agent"; |
1406 snprintf(buffer, 127, "Type: %s", bstr); |
1406 snprintf(buffer, 127, "Type: %s", bstr); |
1407 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1407 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1408 |
1408 |
1409 if (esub == sub_both) bstr = "both"; |
1409 if (esub == sub_both) bstr = "both"; |
1410 else if (esub & sub_from) bstr = "from"; |
1410 else if (esub & sub_from) bstr = "from"; |
1411 else if (esub & sub_to) bstr = "to"; |
1411 else if (esub & sub_to) bstr = "to"; |
1412 else bstr = "none"; |
1412 else bstr = "none"; |
1413 snprintf(buffer, 64, "Subscription: %s", bstr); |
1413 snprintf(buffer, 64, "Subscription: %s", bstr); |
1414 if (esub & sub_pending) |
1414 if (esub & sub_pending) |
1415 strcat(buffer, " (pending)"); |
1415 strcat(buffer, " (pending)"); |
1416 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1416 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1417 |
1417 |
1418 resources = buddy_getresources(bud); |
1418 resources = buddy_getresources(bud); |
1419 if (!resources && type == ROSTER_TYPE_USER) { |
1419 if (!resources && type == ROSTER_TYPE_USER) { |
1420 // No resource; display last status message, if any. |
1420 // No resource; display last status message, if any. |
1421 const char *rst_msg = buddy_getstatusmsg(bud, ""); |
1421 const char *rst_msg = buddy_getstatusmsg(bud, ""); |
1422 if (rst_msg) { |
1422 if (rst_msg) { |
1423 snprintf(buffer, 4095, "Last status message: %s", rst_msg); |
1423 snprintf(buffer, 4095, "Last status message: %s", rst_msg); |
1424 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1424 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1425 } |
1425 } |
1426 } |
1426 } |
1427 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
1427 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
1428 gchar rprio; |
1428 gchar rprio; |
1429 enum imstatus rstatus; |
1429 enum imstatus rstatus; |
1437 rst_time = buddy_getstatustime(bud, p_res->data); |
1437 rst_time = buddy_getstatustime(bud, p_res->data); |
1438 rpgp = buddy_resource_pgp(bud, p_res->data); |
1438 rpgp = buddy_resource_pgp(bud, p_res->data); |
1439 |
1439 |
1440 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus], |
1440 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus], |
1441 rprio, (char*)p_res->data); |
1441 rprio, (char*)p_res->data); |
1442 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1442 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1443 if (rst_msg) { |
1443 if (rst_msg) { |
1444 snprintf(buffer, 4095, "Status message: %s", rst_msg); |
1444 snprintf(buffer, 4095, "Status message: %s", rst_msg); |
1445 scr_WriteIncomingMessage(bjid, buffer, |
1445 scr_WriteIncomingMessage(bjid, buffer, |
1446 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
1446 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
1447 } |
1447 } |
1448 if (rst_time) { |
1448 if (rst_time) { |
1449 char tbuf[128]; |
1449 char tbuf[128]; |
1450 |
1450 |
1451 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); |
1451 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); |
1452 snprintf(buffer, 127, "Status timestamp: %s", tbuf); |
1452 snprintf(buffer, 127, "Status timestamp: %s", tbuf); |
1453 scr_WriteIncomingMessage(bjid, buffer, |
1453 scr_WriteIncomingMessage(bjid, buffer, |
1454 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
1454 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
1455 } |
1455 } |
1456 #ifdef HAVE_GPGME |
1456 #ifdef HAVE_GPGME |
1457 if (rpgp && rpgp->sign_keyid) { |
1457 if (rpgp && rpgp->sign_keyid) { |
1458 snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid); |
1458 snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid); |
1459 scr_WriteIncomingMessage(bjid, buffer, |
1459 scr_WriteIncomingMessage(bjid, buffer, |
1460 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
1460 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
1461 if (rpgp->last_sigsum) { |
1461 if (rpgp->last_sigsum) { |
1462 gpgme_sigsum_t ss = rpgp->last_sigsum; |
1462 gpgme_sigsum_t ss = rpgp->last_sigsum; |
1463 snprintf(buffer, 4095, "Last PGP signature: %s", |
1463 snprintf(buffer, 4095, "Last PGP signature: %s", |
1464 (ss & GPGME_SIGSUM_GREEN ? "good": |
1464 (ss & GPGME_SIGSUM_GREEN ? "good": |
1465 (ss & GPGME_SIGSUM_RED ? "bad" : "unknown"))); |
1465 (ss & GPGME_SIGSUM_RED ? "bad" : "unknown"))); |
1466 scr_WriteIncomingMessage(bjid, buffer, |
1466 scr_WriteIncomingMessage(bjid, buffer, |
1467 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
1467 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
1468 } |
1468 } |
1469 } |
1469 } |
1470 #endif |
1470 #endif |
1471 g_free(p_res->data); |
1471 g_free(p_res->data); |
1472 } |
1472 } |
1520 |
1520 |
1521 bjid = buddy_getjid(bud); |
1521 bjid = buddy_getjid(bud); |
1522 |
1522 |
1523 buffer = g_new(char, 4096); |
1523 buffer = g_new(char, 4096); |
1524 strncpy(buffer, "Room members:", 127); |
1524 strncpy(buffer, "Room members:", 127); |
1525 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1525 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1526 |
1526 |
1527 resources = buddy_getresources(bud); |
1527 resources = buddy_getresources(bud); |
1528 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
1528 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
1529 enum imstatus rstatus; |
1529 enum imstatus rstatus; |
1530 const char *rst_msg; |
1530 const char *rst_msg; |
1534 |
1534 |
1535 if (style == style_short) { |
1535 if (style == style_short) { |
1536 snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], |
1536 snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], |
1537 (char*)p_res->data, |
1537 (char*)p_res->data, |
1538 rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); |
1538 rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); |
1539 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1539 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1540 } else { |
1540 } else { |
1541 // (Style "normal" or "quiet") |
1541 // (Style "normal" or "quiet") |
1542 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], |
1542 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], |
1543 (char*)p_res->data); |
1543 (char*)p_res->data); |
1544 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
1544 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
1545 if (rst_msg && style == style_normal) { |
1545 if (rst_msg && style == style_normal) { |
1546 snprintf(buffer, 4095, "Status message: %s", rst_msg); |
1546 snprintf(buffer, 4095, "Status message: %s", rst_msg); |
1547 scr_WriteIncomingMessage(bjid, buffer, |
1547 scr_WriteIncomingMessage(bjid, buffer, |
1548 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
1548 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
1549 } |
1549 } |
1550 } |
1550 } |
1551 g_free(p_res->data); |
1551 g_free(p_res->data); |
1552 } |
1552 } |
1553 g_slist_free(resources); |
1553 g_slist_free(resources); |
2304 realjid = buddy_getrjid(bud, nick); |
2304 realjid = buddy_getrjid(bud, nick); |
2305 |
2305 |
2306 buffer = g_new(char, 4096); |
2306 buffer = g_new(char, 4096); |
2307 |
2307 |
2308 snprintf(buffer, 4095, "Whois [%s]", nick); |
2308 snprintf(buffer, 4095, "Whois [%s]", nick); |
2309 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO); |
2309 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
2310 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus], |
2310 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus], |
2311 rst_msg); |
2311 rst_msg); |
2312 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2312 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2313 |
2313 |
2314 if (rst_time) { |
2314 if (rst_time) { |
2315 char tbuf[128]; |
2315 char tbuf[128]; |
2316 |
2316 |
2317 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); |
2317 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); |
2318 snprintf(buffer, 127, "Timestamp: %s", tbuf); |
2318 snprintf(buffer, 127, "Timestamp: %s", tbuf); |
2319 scr_WriteIncomingMessage(bjid, buffer, |
2319 scr_WriteIncomingMessage(bjid, buffer, |
2320 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2320 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2321 } |
2321 } |
2322 |
2322 |
2323 if (realjid) { |
2323 if (realjid) { |
2324 snprintf(buffer, 4095, "JID : <%s>", realjid); |
2324 snprintf(buffer, 4095, "JID : <%s>", realjid); |
2325 scr_WriteIncomingMessage(bjid, buffer, |
2325 scr_WriteIncomingMessage(bjid, buffer, |
2326 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2326 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2327 } |
2327 } |
2328 |
2328 |
2329 snprintf(buffer, 4095, "Role : %s", strrole[role]); |
2329 snprintf(buffer, 4095, "Role : %s", strrole[role]); |
2330 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2330 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2331 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]); |
2331 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]); |
2332 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2332 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2333 snprintf(buffer, 4095, "Priority : %d", rprio); |
2333 snprintf(buffer, 4095, "Priority : %d", rprio); |
2334 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2334 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2335 |
2335 |
2336 scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO); |
2336 scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, HBB_PREFIX_INFO, 0); |
2337 |
2337 |
2338 g_free(buffer); |
2338 g_free(buffer); |
2339 g_free(nick); |
2339 g_free(nick); |
2340 free_arg_lst(paramlst); |
2340 free_arg_lst(paramlst); |
2341 } |
2341 } |
2386 if (!bm) |
2386 if (!bm) |
2387 return; |
2387 return; |
2388 |
2388 |
2389 sbuf = g_string_new(""); |
2389 sbuf = g_string_new(""); |
2390 |
2390 |
2391 scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO); |
2391 scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:", 0, HBB_PREFIX_INFO, 0); |
2392 |
2392 |
2393 for (bmp = bm; bmp; bmp = g_slist_next(bmp)) { |
2393 for (bmp = bm; bmp; bmp = g_slist_next(bmp)) { |
2394 g_string_printf(sbuf, "<%s>", (char*)bmp->data); |
2394 g_string_printf(sbuf, "<%s>", (char*)bmp->data); |
2395 scr_WriteIncomingMessage(NULL, sbuf->str, |
2395 scr_WriteIncomingMessage(NULL, sbuf->str, |
2396 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT); |
2396 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2397 } |
2397 } |
2398 |
2398 |
2399 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); |
2399 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); |
2400 update_roster = TRUE; |
2400 update_roster = TRUE; |
2401 g_string_free(sbuf, TRUE); |
2401 g_string_free(sbuf, TRUE); |
2818 case pgp_info: |
2818 case pgp_info: |
2819 sbuf = g_string_new(""); |
2819 sbuf = g_string_new(""); |
2820 if (settings_pgp_getkeyid(fjid)) { |
2820 if (settings_pgp_getkeyid(fjid)) { |
2821 g_string_printf(sbuf, "PGP Encryption key id: %s", |
2821 g_string_printf(sbuf, "PGP Encryption key id: %s", |
2822 settings_pgp_getkeyid(fjid)); |
2822 settings_pgp_getkeyid(fjid)); |
2823 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO); |
2823 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0); |
2824 } |
2824 } |
2825 disabled = settings_pgp_getdisabled(fjid); |
2825 disabled = settings_pgp_getdisabled(fjid); |
2826 g_string_printf(sbuf, "PGP encryption is %s", |
2826 g_string_printf(sbuf, "PGP encryption is %s", |
2827 (disabled ? "disabled" : "enabled")); |
2827 (disabled ? "disabled" : "enabled")); |
2828 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO); |
2828 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0); |
2829 if (!disabled && settings_pgp_getforce(fjid)) { |
2829 if (!disabled && settings_pgp_getforce(fjid)) { |
2830 scr_WriteIncomingMessage(fjid, |
2830 scr_WriteIncomingMessage(fjid, |
2831 "Encryption enforced (no negotiation)", |
2831 "Encryption enforced (no negotiation)", |
2832 0, HBB_PREFIX_INFO); |
2832 0, HBB_PREFIX_INFO, 0); |
2833 } |
2833 } |
2834 g_string_free(sbuf, TRUE); |
2834 g_string_free(sbuf, TRUE); |
2835 break; |
2835 break; |
2836 default: |
2836 default: |
2837 break; |
2837 break; |