summaryrefslogtreecommitdiff
path: root/src/perl/common/Window.xs
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2000-12-29 19:48:02 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2000-12-29 19:48:02 +0000
commit86b714881cf5c32895c8dd1b947cd752ea6698a1 (patch)
tree7fec97ff806fb8aa0b664fc3fb23cb09634625ee /src/perl/common/Window.xs
parente50535a64e5a09066af9f10a2ac7177726502b1b (diff)
downloadirssi-86b714881cf5c32895c8dd1b947cd752ea6698a1.zip
Irssi::print() doesn't call printtext() with args (.., "%s", text)
since it broke %_ etc. formats. But instead of crashing every time someone prints %s with Irssi::print(), irssi now checks all those formats and prints them as-is. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1028 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/common/Window.xs')
-rw-r--r--src/perl/common/Window.xs24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/perl/common/Window.xs b/src/perl/common/Window.xs
index 540378b0..92db5391 100644
--- a/src/perl/common/Window.xs
+++ b/src/perl/common/Window.xs
@@ -30,15 +30,23 @@ void
print(str, level=MSGLEVEL_CLIENTNOTICE)
char *str
int level;
+PREINIT:
+ char *fixed;
CODE:
- printtext(NULL, NULL, level, "%s", str);
+ fixed = perl_fix_formats(str);
+ printtext(NULL, NULL, level, fixed);
+ g_free(fixed);
void
print_window(str, level=MSGLEVEL_CLIENTNOTICE)
char *str
int level;
+PREINIT:
+ char *fixed;
CODE:
- printtext_window(active_win, level, "%s", str);
+ fixed = perl_fix_formats(str);
+ printtext_window(active_win, level, fixed);
+ g_free(fixed);
void
command(cmd, server=active_win->active_server, item=active_win->active)
@@ -107,8 +115,12 @@ print(server, channel, str, level)
char *channel
char *str
int level
+PREINIT:
+ char *fixed;
CODE:
- printtext(server, channel, level, "%s", str);
+ fixed = perl_fix_formats(str);
+ printtext(server, channel, level, fixed);
+ g_free(fixed);
Irssi::Windowitem
window_item_find(server, name)
@@ -276,5 +288,9 @@ print(item, str, level=MSGLEVEL_CLIENTNOTICE)
Irssi::Windowitem item
int level
char *str
+PREINIT:
+ char *fixed;
CODE:
- printtext(item->server, item->name, level, "%s", str);
+ fixed = perl_fix_formats(str);
+ printtext(item->server, item->name, level, fixed);
+ g_free(fixed);