summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS11
-rw-r--r--docs/help/in/upgrade.in3
-rw-r--r--scripts/usercount.pl24
-rw-r--r--src/fe-common/core/utf8.h1
-rw-r--r--src/fe-common/irc/fe-ircnet.c2
-rw-r--r--src/fe-text/textbuffer.c12
-rw-r--r--src/irc/core/irc-servers.c2
-rw-r--r--src/perl/textui/TextUI.xs4
-rw-r--r--src/perl/ui/Formats.xs6
9 files changed, 53 insertions, 12 deletions
diff --git a/NEWS b/NEWS
index ed12036e..e9bf9d88 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,14 @@
+v0.8.17-head 2014-xx-xx The Irssi team <staff@irssi.org>
+ + Document that SSL connections aren't properly handled during /UPGRADE. See Github PR #39.
+ + Synchronize scripts with scripts.irssi.org.
+ + Performance enhancement of the nicklist as well as the window_item_find function. See Github PR #24.
+ + Disallow unloading of static modules.
+ + Allow UTF-8 characters in /bind. See Github PR #18.
+ - Fixed various compiler warnings.
+ - Fixed format_get_text Perl API. See Github PR #23.
+ - Fixed gui_printtext_after and term_refresh_*() visibility. See Github PR #22.
+ - Fixed issue where UTF-8 characters was corrupted once for every 32k text. See Github PR #12.
+
v0.8.16 2014-05-28 The Irssi team <staff@irssi.org>
+ Add -noautosendcmd to /SERVER and /CONNECT. Passing this option will
force Irssi to not execute the content of the autosendcmd chatnet-setting
diff --git a/docs/help/in/upgrade.in b/docs/help/in/upgrade.in
index 37feaf64..b130aff1 100644
--- a/docs/help/in/upgrade.in
+++ b/docs/help/in/upgrade.in
@@ -5,3 +5,6 @@ Upgrade irssi to new version on-the-fly without disconnecting from
server, so other people won't even notice you quit from IRC. This ONLY
executes the new binary, it does NOT download/compile/whatever irssi.
+Warning: This will not work with SSL connections to IRC, you will be
+disconnected.
+
diff --git a/scripts/usercount.pl b/scripts/usercount.pl
index 8bbc9e01..46dc0b46 100644
--- a/scripts/usercount.pl
+++ b/scripts/usercount.pl
@@ -1,21 +1,23 @@
-use Irssi 20020101.0250 ();
-$VERSION = "1.16";
+use Irssi 20040119.2359 ();
+$VERSION = "1.19";
%IRSSI = (
authors => 'David Leadbeater, Timo Sirainen, Georg Lukas',
contact => 'dgl@dgl.cx, tss@iki.fi, georg@boerde.de',
name => 'usercount',
description => 'Adds a usercount for a channel as a statusbar item',
license => 'GNU GPLv2 or later',
- url => 'http://irssi.dgl.yi.org/',
+ url => 'http://irssi.dgl.cx/',
+ changes => 'Only show halfops if server supports them',
);
# Once you have loaded this script run the following command:
# /statusbar window add usercount
# You can also add -alignment left|right option
-# /set usercount_show_zero on or off to show users when 0 users of that type
-# /set usercount_show_ircops (default off)
-# /set usercount_show_halfops (default on)
+# Settings:
+# /toggle usercount_show_zero to show item even when there are no users
+# /toggle usercount_show_ircops (default off)
+# /toggle usercount_show_halfops (default on)
# you can customize the look of this item from theme file:
# sb_usercount = "{sb %_$0%_ nicks ($1-)}";
@@ -114,6 +116,7 @@ sub calc_users() {
}
$total = $ops+$halfops+$voices+$normal;
+
if (!Irssi::settings_get_bool('usercount_show_zero')) {
$ircops = undef if ($ircops == 0);
$ops = undef if ($ops == 0);
@@ -121,7 +124,14 @@ sub calc_users() {
$voices = undef if ($voices == 0);
$normal = undef if ($normal == 0);
}
- $halfops = undef unless Irssi::settings_get_bool('usercount_show_halfops');
+
+ # Server doesn't support halfops?
+ if($server->isupport("PREFIX") !~ /\%/) {
+ $halfops = undef;
+ } else {
+ $halfops = undef unless Irssi::settings_get_bool('usercount_show_halfops');
+ }
+
$ircops = undef unless Irssi::settings_get_bool('usercount_show_ircops');
}
diff --git a/src/fe-common/core/utf8.h b/src/fe-common/core/utf8.h
index 163f1717..3c15dc7d 100644
--- a/src/fe-common/core/utf8.h
+++ b/src/fe-common/core/utf8.h
@@ -12,5 +12,6 @@
int mk_wcwidth(unichar c);
#define unichar_isprint(c) (((c) & ~0x80) >= 32)
+#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
#endif
diff --git a/src/fe-common/irc/fe-ircnet.c b/src/fe-common/irc/fe-ircnet.c
index b35ae898..6618edd7 100644
--- a/src/fe-common/irc/fe-ircnet.c
+++ b/src/fe-common/irc/fe-ircnet.c
@@ -82,7 +82,7 @@ static void cmd_network_list(void)
}
/* SYNTAX: NETWORK ADD [-nick <nick>] [-user <user>] [-realname <name>]
- [-host <host>] [-autosendcmd <cmd>]
+ [-host <host>] [-usermode <mode>] [-autosendcmd <cmd>]
[-querychans <count>] [-whois <count>] [-msgs <count>]
[-kicks <count>] [-modes <count>]
[-cmdspeed <ms>] [-cmdmax <count>] <name> */
diff --git a/src/fe-text/textbuffer.c b/src/fe-text/textbuffer.c
index 0ba7d16e..69f5969c 100644
--- a/src/fe-text/textbuffer.c
+++ b/src/fe-text/textbuffer.c
@@ -23,6 +23,7 @@
#include "module.h"
#include "misc.h"
#include "formats.h"
+#include "utf8.h"
#include "textbuffer.h"
@@ -154,6 +155,17 @@ static void text_chunk_append(TEXT_BUFFER_REC *buffer,
chunk = buffer->cur_text;
while (chunk->pos + len >= TEXT_CHUNK_USABLE_SIZE) {
left = TEXT_CHUNK_USABLE_SIZE - chunk->pos;
+
+ /* don't split utf-8 character. (assume we can split non-utf8 anywhere.) */
+ if (left < len && !is_utf8_leading(data[left])) {
+ int i;
+ for (i = 1; i < 4 && left >= i; i++)
+ if (is_utf8_leading(data[left - i])) {
+ left -= i;
+ break;
+ }
+ }
+
if (left > 0 && data[left-1] == 0)
left--; /* don't split the commands */
diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c
index 787044b3..e5f86c20 100644
--- a/src/irc/core/irc-servers.c
+++ b/src/irc/core/irc-servers.c
@@ -167,7 +167,7 @@ static void server_init(IRC_SERVER_REC *server)
(GCompareFunc) g_istr_equal);
/* set the standards */
- g_hash_table_insert(server->isupport, g_strdup("CHANMODES"), g_strdup("beIqd,k,lfJ,imnpst"));
+ g_hash_table_insert(server->isupport, g_strdup("CHANMODES"), g_strdup("beI,k,l,imnpst"));
g_hash_table_insert(server->isupport, g_strdup("PREFIX"), g_strdup("(ohv)@%+"));
server->cmdcount = 0;
diff --git a/src/perl/textui/TextUI.xs b/src/perl/textui/TextUI.xs
index 67c4c87b..84320ffa 100644
--- a/src/perl/textui/TextUI.xs
+++ b/src/perl/textui/TextUI.xs
@@ -175,7 +175,7 @@ CODE:
OUTPUT:
RETVAL
-MODULE = Irssi::TextUI PACKAGE = Irssi::UI::Server
+MODULE = Irssi::TextUI PACKAGE = Irssi::Server
void
gui_printtext_after(server, target, prev, level, str)
@@ -195,6 +195,8 @@ BOOT:
irssi_boot(TextUI__TextBuffer);
irssi_boot(TextUI__TextBufferView);
+MODULE = Irssi::TextUI PACKAGE = Irssi
+
void
term_refresh_freeze()
diff --git a/src/perl/ui/Formats.xs b/src/perl/ui/Formats.xs
index 7ff31aac..ba28f247 100644
--- a/src/perl/ui/Formats.xs
+++ b/src/perl/ui/Formats.xs
@@ -73,17 +73,18 @@ MODULE = Irssi::UI::Formats PACKAGE = Irssi::UI::Window
#*******************************
void
-format_get_text(window, module, server, target, formatnum, ...)
+format_get_text(window, module, server, target, format, ...)
Irssi::UI::Window window
char *module
Irssi::Server server
char *target
- int formatnum
+ char *format
PREINIT:
TEXT_DEST_REC dest;
THEME_REC *theme;
char **charargs;
char *ret;
+ int formatnum;
int n;
PPCODE:
charargs = g_new0(char *, items-5+1);
@@ -93,6 +94,7 @@ PPCODE:
format_create_dest(&dest, server, target, 0, window);
theme = window_get_theme(dest.window);
+ formatnum = format_find_tag(module, format);
ret = format_get_text_theme_charargs(theme, module, &dest, formatnum, charargs);
g_free(charargs);