mirror of
https://github.com/weechat/weechat.git
synced 2026-07-08 18:53:12 +02:00
ruby: fix ruby init with ruby >= 2.0 (bug #41115)
This commit is contained in:
@@ -95,6 +95,7 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
|
||||
message (task #12777)
|
||||
* lua: fix crash on calls to callbacks during load of script
|
||||
* python: fix load of scripts with python >= 3.3
|
||||
* ruby: fix ruby init with ruby >= 2.0 (bug #41115)
|
||||
|
||||
== Version 0.4.2 (2013-10-06)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#undef _
|
||||
|
||||
#include <ruby.h>
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >=19
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
|
||||
#include <ruby/encoding.h>
|
||||
#endif
|
||||
#ifdef HAVE_RUBY_VERSION_H
|
||||
@@ -1084,62 +1084,61 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
{
|
||||
struct t_plugin_script_init init;
|
||||
int ruby_error;
|
||||
char *weechat_ruby_code =
|
||||
{
|
||||
"$stdout = WeechatOutputs\n"
|
||||
"$stderr = WeechatOutputs\n"
|
||||
"begin"
|
||||
" if RUBY_VERSION.split('.')[1] == '9'\n"
|
||||
" require 'enc/encdb.so'\n"
|
||||
" require 'enc/trans/transdb.so'\n"
|
||||
"\n"
|
||||
" require 'thread'\n"
|
||||
" class ::Mutex\n"
|
||||
" def synchronize(*args)\n"
|
||||
" yield\n"
|
||||
" end\n"
|
||||
" end\n"
|
||||
" require 'rubygems'\n"
|
||||
" else\n"
|
||||
" require 'rubygems'\n"
|
||||
" end\n"
|
||||
"rescue LoadError\n"
|
||||
"end\n"
|
||||
"\n"
|
||||
"class Module\n"
|
||||
"\n"
|
||||
" def load_eval_file (file)\n"
|
||||
" lines = ''\n"
|
||||
" begin\n"
|
||||
" lines = File.read(file)\n"
|
||||
" rescue => e\n"
|
||||
" return 1\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" begin\n"
|
||||
" module_eval(lines)\n"
|
||||
" rescue Exception => e\n"
|
||||
" @load_eval_file_error = e\n"
|
||||
" return 2\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" has_init = false\n"
|
||||
"\n"
|
||||
" instance_methods.each do |meth|\n"
|
||||
" if meth.to_s == 'weechat_init'\n"
|
||||
" has_init = true\n"
|
||||
" end\n"
|
||||
" module_eval('module_function :' + meth.to_s)\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" unless has_init\n"
|
||||
" return 3\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" return 0\n"
|
||||
" end\n"
|
||||
"end\n"
|
||||
};
|
||||
char *weechat_ruby_code = {
|
||||
"$stdout = WeechatOutputs\n"
|
||||
"$stderr = WeechatOutputs\n"
|
||||
"begin"
|
||||
" if RUBY_VERSION.split('.')[0] == '1' and RUBY_VERSION.split('.')[1] <= '8'\n"
|
||||
" require 'rubygems'\n"
|
||||
" else\n"
|
||||
" require 'enc/encdb.so'\n"
|
||||
" require 'enc/trans/transdb.so'\n"
|
||||
"\n"
|
||||
" require 'thread'\n"
|
||||
" class ::Mutex\n"
|
||||
" def synchronize(*args)\n"
|
||||
" yield\n"
|
||||
" end\n"
|
||||
" end\n"
|
||||
" require 'rubygems'\n"
|
||||
" end\n"
|
||||
"rescue LoadError\n"
|
||||
"end\n"
|
||||
"\n"
|
||||
"class Module\n"
|
||||
"\n"
|
||||
" def load_eval_file (file)\n"
|
||||
" lines = ''\n"
|
||||
" begin\n"
|
||||
" lines = File.read(file)\n"
|
||||
" rescue => e\n"
|
||||
" return 1\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" begin\n"
|
||||
" module_eval(lines)\n"
|
||||
" rescue Exception => e\n"
|
||||
" @load_eval_file_error = e\n"
|
||||
" return 2\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" has_init = false\n"
|
||||
"\n"
|
||||
" instance_methods.each do |meth|\n"
|
||||
" if meth.to_s == 'weechat_init'\n"
|
||||
" has_init = true\n"
|
||||
" end\n"
|
||||
" module_eval('module_function :' + meth.to_s)\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" unless has_init\n"
|
||||
" return 3\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" return 0\n"
|
||||
" end\n"
|
||||
"end\n"
|
||||
};
|
||||
|
||||
weechat_ruby_plugin = plugin;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user