comparison mcabber/src/commands.c @ 626:b75f4105ce32

Use a larger buffer for commands like /info Thus we can display big status messages (up to ~4kB).
author Mikael Berthe <mikael@lilotux.net>
date Mon, 19 Dec 2005 20:32:25 +0100
parents 028c01940490
children 423c24e5875a
comparison
equal deleted inserted replaced
625:028c01940490 626:b75f4105ce32
872 jid = buddy_getjid(bud); 872 jid = buddy_getjid(bud);
873 name = buddy_getname(bud); 873 name = buddy_getname(bud);
874 type = buddy_gettype(bud); 874 type = buddy_gettype(bud);
875 esub = buddy_getsubscription(bud); 875 esub = buddy_getsubscription(bud);
876 876
877 buffer = g_new(char, 128); 877 buffer = g_new(char, 4096);
878 878
879 if (jid) { 879 if (jid) {
880 GSList *resources; 880 GSList *resources;
881 char *bstr = "unknown"; 881 char *bstr = "unknown";
882 882
883 snprintf(buffer, 127, "jid: <%s>", jid); 883 snprintf(buffer, 4095, "jid: <%s>", jid);
884 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 884 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
885 if (name) { 885 if (name) {
886 snprintf(buffer, 127, "Name: %s", name); 886 snprintf(buffer, 4095, "Name: %s", name);
887 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 887 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
888 } 888 }
889 889
890 if (type == ROSTER_TYPE_USER) bstr = "user"; 890 if (type == ROSTER_TYPE_USER) bstr = "user";
891 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom"; 891 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom";
912 rprio = buddy_getresourceprio(bud, resources->data); 912 rprio = buddy_getresourceprio(bud, resources->data);
913 rstatus = buddy_getstatus(bud, resources->data); 913 rstatus = buddy_getstatus(bud, resources->data);
914 rst_msg = buddy_getstatusmsg(bud, resources->data); 914 rst_msg = buddy_getstatusmsg(bud, resources->data);
915 rst_time = buddy_getstatustime(bud, resources->data); 915 rst_time = buddy_getstatustime(bud, resources->data);
916 916
917 snprintf(buffer, 127, "Resource: [%c] (%d) %s", imstatus2char[rstatus], 917 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
918 rprio, (char*)resources->data); 918 rprio, (char*)resources->data);
919 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 919 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
920 if (rst_msg) { 920 if (rst_msg) {
921 snprintf(buffer, 127, "Status message: %s", rst_msg); 921 snprintf(buffer, 4095, "Status message: %s", rst_msg);
922 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 922 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
923 } 923 }
924 if (rst_time) { 924 if (rst_time) {
925 char tbuf[256]; 925 char tbuf[128];
926 926
927 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); 927 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
928 snprintf(buffer, 127, "Status timestamp: %s", tbuf); 928 snprintf(buffer, 127, "Status timestamp: %s", tbuf);
929 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 929 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
930 } 930 }
950 return; 950 return;
951 } 951 }
952 952
953 jid = buddy_getjid(bud); 953 jid = buddy_getjid(bud);
954 954
955 buffer = g_new(char, 128); 955 buffer = g_new(char, 4096);
956 snprintf(buffer, 127, "Room members:"); 956 strncpy(buffer, "Room members:", 127);
957 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 957 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
958 958
959 resources = buddy_getresources(bud); 959 resources = buddy_getresources(bud);
960 for ( ; resources ; resources = g_slist_next(resources) ) { 960 for ( ; resources ; resources = g_slist_next(resources) ) {
961 enum imstatus rstatus; 961 enum imstatus rstatus;
962 const char *rst_msg; 962 const char *rst_msg;
963 963
964 rstatus = buddy_getstatus(bud, resources->data); 964 rstatus = buddy_getstatus(bud, resources->data);
965 rst_msg = buddy_getstatusmsg(bud, resources->data); 965 rst_msg = buddy_getstatusmsg(bud, resources->data);
966 966
967 snprintf(buffer, 127, "[%c] %s", imstatus2char[rstatus], 967 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
968 (char*)resources->data); 968 (char*)resources->data);
969 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 969 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
970 if (rst_msg) { 970 if (rst_msg) {
971 snprintf(buffer, 127, "Status message: %s", rst_msg); 971 snprintf(buffer, 4095, "Status message: %s", rst_msg);
972 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 972 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
973 } 973 }
974 } 974 }
975 975
976 g_free(buffer); 976 g_free(buffer);
1545 1545
1546 role = buddy_getrole(bud, nick); 1546 role = buddy_getrole(bud, nick);
1547 affil = buddy_getaffil(bud, nick); 1547 affil = buddy_getaffil(bud, nick);
1548 realjid = buddy_getrjid(bud, nick); 1548 realjid = buddy_getrjid(bud, nick);
1549 1549
1550 buffer = g_new(char, 128); 1550 buffer = g_new(char, 4096);
1551 1551
1552 snprintf(buffer, 127, "Whois [%s]", nick); 1552 snprintf(buffer, 4095, "Whois [%s]", nick);
1553 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1553 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1554 snprintf(buffer, 127, "Status : [%c] %s", imstatus2char[rstatus], 1554 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus],
1555 rst_msg); 1555 rst_msg);
1556 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1556 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1557 1557
1558 if (rst_time) { 1558 if (rst_time) {
1559 char tbuf[256]; 1559 char tbuf[128];
1560 1560
1561 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time)); 1561 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
1562 snprintf(buffer, 127, "Timestamp: %s", tbuf); 1562 snprintf(buffer, 127, "Timestamp: %s", tbuf);
1563 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1563 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1564 } 1564 }
1565 1565
1566 if (realjid) { 1566 if (realjid) {
1567 snprintf(buffer, 127, "JID : <%s>", realjid); 1567 snprintf(buffer, 4095, "JID : <%s>", realjid);
1568 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1568 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1569 } 1569 }
1570 1570
1571 snprintf(buffer, 127, "Role : %s", strroles[role]); 1571 snprintf(buffer, 4095, "Role : %s", strroles[role]);
1572 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1572 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1573 snprintf(buffer, 127, "Affiliat.: %s", straffil[affil]); 1573 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
1574 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1574 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1575 snprintf(buffer, 127, "Priority : %d", rprio); 1575 snprintf(buffer, 4095, "Priority : %d", rprio);
1576 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); 1576 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
1577 1577
1578 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO); 1578 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO);
1579 1579
1580 g_free(buffer); 1580 g_free(buffer);