aboutsummaryrefslogtreecommitdiff
path: root/textproc/eruby
diff options
context:
space:
mode:
authorDirk Meyer <dinoex@FreeBSD.org>2010-02-17 17:01:03 +0000
committerDirk Meyer <dinoex@FreeBSD.org>2010-02-17 17:01:03 +0000
commit876787e3b3da982c58eb21596fbc94d01084bc46 (patch)
tree0befb846eb9796c2d41fbb5ecbfbb8ed39052387 /textproc/eruby
parent8289e6d75c1b7a76c6e9801ee00454af89dc8d51 (diff)
downloadports-876787e3b3da982c58eb21596fbc94d01084bc46.tar.gz
ports-876787e3b3da982c58eb21596fbc94d01084bc46.zip
- Fix for ruby 1.9.1
Obtained from: github Feature safe: yes
Notes
Notes: svn path=/head/; revision=250005
Diffstat (limited to 'textproc/eruby')
-rw-r--r--textproc/eruby/Makefile4
-rw-r--r--textproc/eruby/files/patch-aa-git1027
-rw-r--r--textproc/eruby/files/patch-configure.rb77
-rw-r--r--textproc/eruby/files/patch-eruby.h11
-rw-r--r--textproc/eruby/files/patch-eruby_lib.c59
-rw-r--r--textproc/eruby/files/patch-eruby_main.c206
6 files changed, 1069 insertions, 315 deletions
diff --git a/textproc/eruby/Makefile b/textproc/eruby/Makefile
index 18d7e960c6db..0cd8d2de96f6 100644
--- a/textproc/eruby/Makefile
+++ b/textproc/eruby/Makefile
@@ -7,7 +7,7 @@
PORTNAME= eruby
PORTVERSION= 1.0.5
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= textproc www ruby
MASTER_SITES= http://www.modruby.net/archive/
PKGNAMEPREFIX= ${RUBY_PKGNAMEPREFIX}
@@ -63,7 +63,7 @@ CONFIGURE_ENV+= EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -pthread"
.endif
.if ${RUBY_RELVERSION} == 1.9.1
-CFLAGS+= -DWITH_RUBY_19
+CONFIGURE_ENV+= EXTRA_CFLAGS="${EXTRA_CFLAGS} -DWITH_RUBY_19"
.endif
.include <bsd.port.post.mk>
diff --git a/textproc/eruby/files/patch-aa-git b/textproc/eruby/files/patch-aa-git
new file mode 100644
index 000000000000..e7343a25177b
--- /dev/null
+++ b/textproc/eruby/files/patch-aa-git
@@ -0,0 +1,1027 @@
+Only in eruby: .git
+diff -ur eruby-1.0.5/ChangeLog eruby/ChangeLog
+--- eruby-1.0.5/ChangeLog 2003-12-23 16:11:54.000000000 +0100
++++ ChangeLog 2010-02-17 14:20:36.000000000 +0100
+@@ -1,3 +1,23 @@
++Tue Jul 19 19:07:12 2005 Jb Evain <jbevain@gmail.com>
++
++ * eruby_lib.c: clean warnings, little refactoring
++
++Tue Mar 9 14:16:06 2004 Shugo Maeda <shugo@modruby.net>
++
++ * Makefile.in: use $(RUBY) to execute bin2c.
++
++Tue Mar 9 14:08:19 2004 MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
++
++ * eruby_main.c (proc_args): pass ARGV to scripts.
++
++Wed Feb 25 13:37:07 2004 U.Nakamura <usa@garbagecollect.jp>
++
++ * autoconf.rb: should use RUBY_PLATFORM instead of PLATFORM.
++
++Wed Dec 24 00:45:29 2003 Shugo Maeda <shugo@modruby.net>
++
++ * eruby_main.c (run): call rb_exec_end_proc().
++
+ Wed Dec 24 00:11:19 2003 Shugo Maeda <shugo@modruby.net>
+
+ * version 1.0.5 released.
+diff -ur eruby-1.0.5/Makefile.in eruby/Makefile.in
+--- eruby-1.0.5/Makefile.in 2003-07-26 12:21:33.000000000 +0200
++++ Makefile.in 2010-02-17 14:20:36.000000000 +0100
+@@ -160,7 +160,7 @@
+ $(RM) $@~
+
+ eruby_logo.c: @VPATH@eruby_logo.png
+- $(srcdir)/bin2c $(srcdir)/eruby_logo.png
++ $(RUBY) $(srcdir)/bin2c $(srcdir)/eruby_logo.png
+ eruby_lib.@OBJEXT@: @VPATH@eruby_lib.c @VPATH@eruby.h config.h
+ eruby_logo.@OBJEXT@: @VPATH@eruby_logo.c @VPATH@eruby_logo.h
+ eruby_main.@OBJEXT@: @VPATH@eruby_main.c @VPATH@eruby.h @VPATH@eruby_logo.h
+diff -ur eruby-1.0.5/README.ja eruby/README.ja
+--- eruby-1.0.5/README.ja 2001-05-16 11:27:08.000000000 +0200
++++ README.ja 2010-02-17 14:20:36.000000000 +0100
+@@ -5,8 +5,7 @@
+ == eRubyとは?
+
+ eRubyはRubyのコードが埋めこまれたテキストファイルを解釈実行します。
+-たとえば、eRubyを使えば、HTMLにRubyのコードをHTMLファイルに埋めこむ
+-ことができます。
++たとえば、eRubyを使えば、HTMLにRubyのコードを埋めこむことができます。
+
+ == 要求される環境
+
+diff -ur eruby-1.0.5/configure.rb eruby/configure.rb
+--- eruby-1.0.5/configure.rb 2003-02-10 04:18:10.000000000 +0100
++++ configure.rb 2010-02-17 14:20:36.000000000 +0100
+@@ -59,21 +59,24 @@
+ end
+ end
+
+-require 'ftools'
++require 'fileutils'
+
+ def AC_OUTPUT(*files)
++ $DEFS ||= ""
+ if $AC_LIST_HEADER
+- $DEFS = "-DHAVE_CONFIG_H"
++ $DEFS << " -DHAVE_CONFIG_H"
+ AC_OUTPUT_HEADER($AC_LIST_HEADER)
+ else
+- $DEFS = $ac_confdefs.collect {|k, v| "-D#{k}=#{v}" }.join(" ")
++ $DEFS << " " + $ac_confdefs.collect {|k, v| "-D#{k}=#{v}" }.join(" ")
+ end
+ for file in files
+ print "creating ", file, "\n"
+ open(File.join($srcdir, file + ".in")) do |fin|
+- File.makedirs(File.dirname(file))
++ FileUtils.mkdir_p(File.dirname(file))
+ open(file, "w") do |fout|
++ depend = false
+ while line = fin.gets
++ depend = true if /^\#\#\# depend/ =~ line
+ line.gsub!(/@([A-Za-z_]+)@/) do |s|
+ name = $1
+ if $ac_sed.key?(name)
+@@ -82,6 +85,7 @@
+ s
+ end
+ end
++ line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{$(srcdir)}\2') if depend && $nmake
+ fout.print(line)
+ end
+ end
+@@ -153,13 +157,18 @@
+ file = File.join(dir, prog)
+ if File.file?(file); then
+ $ac_aux_dir = dir
+- $ac_install_rb = "#{file} -c"
++ $ac_install_rb = "$(RUBY) #{file} -c"
+ return
+ end
+ end
+ end
+ end
+
++begin
++ require "continuation"
++rescue LoadError
++end
++
+ def AC_PROG_INSTALL
+ AC_MSG_CHECKING("for a BSD compatible install")
+ $ac_cv_path_install = callcc { |c|
+@@ -291,6 +300,13 @@
+ $AR = CONFIG["AR"]
+ $LD = "$(CC)"
+ $RANLIB = CONFIG["RANLIB"]
++$ruby = arg_config("--ruby", File.join(Config::CONFIG["bindir"], CONFIG["ruby_install_name"]))
++$RUBY = ($nmake && !$configure_args.has_key?('--ruby')) ? $ruby.gsub(%r'/', '\\') : $ruby
++if RUBY_VERSION < "1.8.0"
++ $RM = 'rm -f'
++else
++ $RM = CONFIG["RM"] || '$(RUBY) -run -e rm -- -f'
++end
+
+ if not defined? CFLAGS
+ CFLAGS = CONFIG["CFLAGS"]
+@@ -306,7 +322,7 @@
+ $LDFLAGS = "-link -incremental:no -pdb:none"
+ end
+ $LIBS = CONFIG["LIBS"]
+-$XLDFLAGS = CONFIG["XLDFLAGS"]
++$XLDFLAGS = CONFIG["XLDFLAGS"].to_s
+ $XLDFLAGS.gsub!(/-L\./, "")
+ if /mswin32/ !~ RUBY_PLATFORM
+ $XLDFLAGS += " -L$(libdir)"
+@@ -333,7 +349,7 @@
+ $LIBRUBY_A = CONFIG["LIBRUBY_A"]
+ $RUBY_SO_NAME = CONFIG["RUBY_SO_NAME"]
+
+-case PLATFORM
++case RUBY_PLATFORM
+ when /-aix/
+ if $RUBY_SHARED
+ $LIBRUBYARG = "-Wl,$(libdir)/" + CONFIG["LIBRUBY_SO"]
+@@ -349,6 +365,14 @@
+ end
+ end
+
++$COMPILE_RULES = ''
++if defined?(COMPILE_RULES)
++ COMPILE_RULES.each do |rule|
++ $COMPILE_RULES << sprintf(rule, 'c', $OBJEXT)
++ $COMPILE_RULES << sprintf("\n\t%s\n\n", COMPILE_C)
++ end
++end
++
+ AC_SUBST("srcdir")
+ AC_SUBST("topdir")
+ AC_SUBST("hdrdir")
+@@ -375,6 +399,8 @@
+ AC_SUBST("AR")
+ AC_SUBST("LD")
+ AC_SUBST("RANLIB")
++AC_SUBST("RUBY")
++AC_SUBST("RM")
+
+ AC_SUBST("CFLAGS")
+ AC_SUBST("DEFS")
+@@ -388,6 +414,8 @@
+ AC_SUBST("EXEEXT")
+ AC_SUBST("DLEXT")
+
++AC_SUBST("COMPILE_RULES")
++
+ AC_SUBST("RUBY_INSTALL_NAME")
+ AC_SUBST("LIBRUBYARG")
+ AC_SUBST("LIBRUBYARG_SHARED")
+@@ -431,7 +459,7 @@
+ $ENABLE_SHARED = false
+ AC_ENABLE("shared") { |enableval|
+ if enableval == "yes"
+- if PLATFORM =~ /-mswin32/
++ if /-mswin32/ =~ RUBY_PLATFORM
+ AC_MSG_ERROR("can't enable shared on mswin32")
+ end
+ $ENABLE_SHARED = true
+@@ -449,7 +477,7 @@
+ if $ENABLE_SHARED
+ $LIBERUBY = "${LIBERUBY_SO}"
+ $LIBERUBYARG = "-L. -leruby"
+- case PLATFORM
++ case RUBY_PLATFORM
+ when /-sunos4/
+ $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
+ when /-linux/
+@@ -457,7 +485,7 @@
+ $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
+ when /-(freebsd|netbsd)/
+ $LIBERUBY_SO = "liberuby.so.$(MAJOR).$(MINOR)"
+- if PLATFORM =~ /elf/ || PLATFORM =~ /-freebsd[3-9]/
++ if /elf/ =~ RUBY_PLATFORM || /-freebsd[3-9]/ =~ RUBY_PLATFORM
+ $LIBERUBY_SO = "liberuby.so.$(MAJOR_MINOR)"
+ $LIBERUBY_ALIASES = "liberuby.so"
+ else
+@@ -493,7 +521,7 @@
+ end
+ end
+
+-if PLATFORM =~ /-mswin32/
++if /-mswin32/ =~ RUBY_PLATFORM
+ $AR = "lib"
+ $AROPT = "/out:$@"
+ $LIBERUBY_A = "liberuby.lib"
+@@ -519,7 +547,7 @@
+ AC_SUBST("AROPT")
+
+ $EXT_DLDFLAGS = CONFIG["DLDFLAGS"]
+-if $RUBY_SHARED || RUBY_PLATFORM =~ /mswin32/
++if $RUBY_SHARED || /mswin32/ =~ RUBY_PLATFORM
+ $EXT_LIBRUBYARG = "$(LIBRUBYARG)"
+ else
+ $EXT_LIBRUBYARG = ""
+diff -ur eruby-1.0.5/configure.rb.in eruby/configure.rb.in
+--- eruby-1.0.5/configure.rb.in 2003-01-20 08:22:41.000000000 +0100
++++ configure.rb.in 2010-02-17 14:20:36.000000000 +0100
+@@ -35,7 +35,7 @@
+ AC_ARG_ENABLE("shared",
+ " --enable-shared build a shared library for eruby") { |enableval|
+ if enableval == "yes"
+- if PLATFORM =~ /-mswin32/
++ if /-mswin32/ =~ RUBY_PLATFORM
+ AC_MSG_ERROR("can't enable shared on mswin32")
+ end
+ $ENABLE_SHARED = true
+@@ -53,7 +53,7 @@
+ if $ENABLE_SHARED
+ $LIBERUBY = "${LIBERUBY_SO}"
+ $LIBERUBYARG = "-L. -leruby"
+- case PLATFORM
++ case RUBY_PLATFORM
+ when /-sunos4/
+ $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
+ when /-linux/
+@@ -61,7 +61,7 @@
+ $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
+ when /-(freebsd|netbsd)/
+ $LIBERUBY_SO = "liberuby.so.$(MAJOR).$(MINOR)"
+- if PLATFORM =~ /elf/ || PLATFORM =~ /-freebsd[3-9]/
++ if /elf/ =~ RUBY_PLATFORM || /-freebsd[3-9]/ =~ RUBY_PLATFORM
+ $LIBERUBY_SO = "liberuby.so.$(MAJOR_MINOR)"
+ $LIBERUBY_ALIASES = "liberuby.so"
+ else
+@@ -97,7 +97,7 @@
+ end
+ end
+
+-if PLATFORM =~ /-mswin32/
++if /-mswin32/ =~ RUBY_PLATFORM
+ $AR = "lib"
+ $AROPT = "/out:$@"
+ $LIBERUBY_A = "liberuby.lib"
+@@ -123,7 +123,7 @@
+ AC_SUBST("AROPT")
+
+ $EXT_DLDFLAGS = CONFIG["DLDFLAGS"]
+-if $RUBY_SHARED || RUBY_PLATFORM =~ /mswin32/
++if $RUBY_SHARED || /mswin32/ =~ RUBY_PLATFORM
+ $EXT_LIBRUBYARG = "$(LIBRUBYARG)"
+ else
+ $EXT_LIBRUBYARG = ""
+diff -ur eruby-1.0.5/eruby.1 eruby/eruby.1
+--- eruby-1.0.5/eruby.1 2000-09-13 09:35:51.000000000 +0200
++++ eruby.1 2010-02-17 14:20:36.000000000 +0100
+@@ -1,5 +1,5 @@
+ .\" DO NOT MODIFY THIS FILE! it was generated by rd2
+-.TH eruby 1 "September 2000"
++.TH eruby 1 "January 2007"
+ .SH NAME
+ .PP
+ eruby \- Embedded Ruby Language
+@@ -10,13 +10,15 @@
+ .PP
+ eruby interprets a Ruby code embedded text file. For example, eruby
+ enables you to embed a Ruby code to a HTML file.
++.PP
+ A Ruby block starts with `<%' and ends with `%>'. eRuby replaces
+ the block with its output.
++.PP
+ If `<%' is followed by `=', eRuby replaces the block with a value
+ of the block.
++.PP
+ If `<%' is followed by `#', the block is ignored as a comment.
+ .SH OPTIONS
+-.PP
+ .TP
+ .fi
+ .B
+@@ -36,8 +38,7 @@
+ \& f: filter mode
+ \& c: CGI mode
+ \& n: NPH\-CGI mode
+-.fi
+-.TP
++.fi.TP
+ .fi
+ .B
+ \-C charset
+@@ -55,7 +56,7 @@
+ .TP
+ .fi
+ .B
+-\-\-version
++\-\-version
+ print version information and exit
+ .SH AUTHOR
+ .PP
+diff -ur eruby-1.0.5/eruby.h eruby/eruby.h
+--- eruby-1.0.5/eruby.h 2003-12-23 16:11:54.000000000 +0100
++++ eruby.h 2010-02-17 14:20:36.000000000 +0100
+@@ -28,18 +28,34 @@
+ extern char *eruby_filename;
+ extern int eruby_mode;
+ extern int eruby_noheader;
++extern int eruby_sync;
+ extern VALUE eruby_charset;
+ extern VALUE eruby_default_charset;
+-#define ERUBY_CHARSET RSTRING(eruby_charset)->ptr
++#define ERUBY_CHARSET RSTRING_PTR(eruby_charset)
+
+ const char *eruby_version();
+ int eruby_parse_options(int argc, char **argv, int *optind);
+ VALUE eruby_compiler_new();
++VALUE eruby_compiler_set_sourcefile(VALUE self, VALUE filename);
+ VALUE eruby_compiler_compile_file(VALUE self, VALUE file);
+ VALUE eruby_compiler_compile_string(VALUE self, VALUE s);
+ VALUE eruby_load(char *filename, int wrap, int *state);
+ void eruby_init();
+
++/* for compatibility with ruby 1.9 */
++#ifndef RARRAY_LEN
++# define RARRAY_LEN(ary) (RARRAY(ary)->len)
++#endif
++#ifndef RARRAY_PTR
++# define RARRAY_PTR(ary) (RARRAY(ary)->ptr)
++#endif
++#ifndef RSTRING_LEN
++# define RSTRING_LEN(str) (RSTRING(str)->len)
++#endif
++#ifndef RSTRING_PTR
++# define RSTRING_PTR(str) (RSTRING(str)->ptr)
++#endif
++
+ #endif /* ERUBY_H */
+
+ /*
+diff -ur eruby-1.0.5/eruby_lib.c eruby/eruby_lib.c
+--- eruby-1.0.5/eruby_lib.c 2003-07-29 05:42:56.000000000 +0200
++++ eruby_lib.c 2010-02-17 14:20:36.000000000 +0100
+@@ -48,6 +48,7 @@
+ char *eruby_filename = NULL;
+ int eruby_mode = MODE_UNKNOWN;
+ int eruby_noheader = 0;
++int eruby_sync = 0;
+ VALUE eruby_charset;
+ VALUE eruby_default_charset;
+
+@@ -82,6 +83,7 @@
+ n: NPH-CGI mode\n\
+ -C [charset] specifies charset parameter for Content-Type\n\
+ -n, --noheader disables CGI header output\n\
++ -s, --sync sync output\n\
+ -v, --verbose enables verbose mode\n\
+ --version print version information and exit\n\
+ \n", progname);
+@@ -112,10 +114,19 @@
+ return 0;
+ }
+
++static int is_option (const char *s, const char *opt)
++{
++ int len = strlen (opt);
++ if (strncmp(s , opt, len) == 0
++ && (s[len] == '\0' || isspace(s[len])))
++ return len;
++ return 0;
++}
++
+ int eruby_parse_options(int argc, char **argv, int *optind)
+ {
+- int i, result = 0;
+- unsigned char *s;
++ int i, next, result = 0;
++ char *s;
+
+ for (i = 1; i < argc; i++) {
+ if (argv[i][0] != '-' || argv[i][1] == '\0') {
+@@ -123,7 +134,7 @@
+ }
+ s = argv[i];
+ again:
+- while (isspace(*s))
++ while (isspace(*(unsigned char *) s))
+ s++;
+ if (*s == '-') s++;
+ switch (*s) {
+@@ -155,8 +166,8 @@
+ break;
+ }
+ else {
+- unsigned char *p = s;
+- while (*p && !isspace(*p)) p++;
++ char *p = s;
++ while (*p && !isspace(*(unsigned char *) p)) p++;
+ eruby_charset = rb_str_new(s, p - s);
+ s = p;
+ goto again;
+@@ -173,6 +184,10 @@
+ eruby_noheader = 1;
+ s++;
+ goto again;
++ case 's':
++ eruby_sync = 1;
++ s++;
++ goto again;
+ case '\0':
+ break;
+ case 'h':
+@@ -180,31 +195,31 @@
+ result = 1; break;
+ case '-':
+ s++;
+- if (strncmp(s , "debug", 5) == 0
+- && (s[5] == '\0' || isspace(s[5]))) {
++ if ((next = is_option (s, "debug"))) {
+ ruby_debug = Qtrue;
+- s += 5;
++ s += next;
+ goto again;
+ }
+- else if (strncmp(s, "noheader", 8) == 0
+- && (s[8] == '\0' || isspace(s[8]))) {
++ else if ((next = is_option (s, "noheader"))) {
+ eruby_noheader = 1;
+- s += 8;
++ s += next;
+ goto again;
+ }
+- else if (strncmp(s, "version", 7) == 0
+- && (s[7] == '\0' || isspace(s[7]))) {
++ else if ((next = is_option (s, "sync"))) {
++ eruby_sync = 1;
++ s += next;
++ goto again;
++ }
++ else if (is_option (s, "version")) {
+ show_version();
+ result = 1; break;
+ }
+- else if (strncmp(s, "verbose", 7) == 0
+- && (s[7] == '\0' || isspace(s[7]))) {
++ else if ((next = is_option (s, "verbose"))) {
+ ruby_verbose = Qtrue;
+- s += 7;
++ s += next;
+ goto again;
+ }
+- else if (strncmp(s, "help", 4) == 0
+- && (s[4] == '\0' || isspace(s[4]))) {
++ else if (is_option (s, "help")) {
+ usage(argv[0]);
+ result = 1; break;
+ }
+@@ -296,18 +311,18 @@
+ VALUE s = compiler->lex_input;
+ char *beg, *end, *pend;
+
+- if (RSTRING(s)->len == compiler->lex_gets_ptr)
++ if (RSTRING_LEN(s) == compiler->lex_gets_ptr)
+ return Qnil;
+- beg = RSTRING(s)->ptr;
++ beg = RSTRING_PTR(s);
+ if (compiler->lex_gets_ptr > 0) {
+ beg += compiler->lex_gets_ptr;
+ }
+- pend = RSTRING(s)->ptr + RSTRING(s)->len;
++ pend = RSTRING_PTR(s) + RSTRING_LEN(s);
+ end = beg;
+ while (end < pend) {
+ if (*end++ == '\n') break;
+ }
+- compiler->lex_gets_ptr = end - RSTRING(s)->ptr;
++ compiler->lex_gets_ptr = end - RSTRING_PTR(s);
+ return rb_str_new(beg, end - beg);
+ }
+
+@@ -326,8 +341,8 @@
+
+ if (NIL_P(v)) return EOF;
+ compiler->sourceline++;
+- compiler->lex_pbeg = compiler->lex_p = RSTRING(v)->ptr;
+- compiler->lex_pend = compiler->lex_p + RSTRING(v)->len;
++ compiler->lex_pbeg = compiler->lex_p = RSTRING_PTR(v);
++ compiler->lex_pend = compiler->lex_p + RSTRING_LEN(v);
+ compiler->lex_lastline = v;
+ }
+ else {
+@@ -469,9 +484,9 @@
+ if (c == '#') {
+ c = nextc(compiler);
+ if (c == '!') {
+- unsigned char *p;
++ char *p;
+ char *argv[2];
+- char *line = RSTRING(compiler->lex_lastline)->ptr;
++ char *line = RSTRING_PTR(compiler->lex_lastline);
+
+ if (line[strlen(line) - 1] == '\n') {
+ line[strlen(line) - 1] = '\0';
+@@ -479,9 +494,9 @@
+ }
+ argv[0] = "eruby";
+ p = line;
+- while (isspace(*p)) p++;
+- while (*p && !isspace(*p)) p++;
+- while (isspace(*p)) p++;
++ while (isspace(*(unsigned char *) p)) p++;
++ while (*p && !isspace(*(unsigned char *) p)) p++;
++ while (isspace(*(unsigned char *) p)) p++;
+ argv[1] = p;
+ if (eruby_parse_options(2, argv, NULL) != 0) {
+ rb_raise(eERubyCompileError, "invalid #! line");
+@@ -632,78 +647,6 @@
+ return eruby_compile(compiler);
+ }
+
+-static VALUE file_open(VALUE filename)
+-{
+- return rb_file_open((char *) filename, "r");
+-}
+-
+-typedef struct compile_arg {
+- VALUE compiler;
+- VALUE input;
+-} compile_arg_t;
+-
+-static VALUE eruby_compile_file(VALUE arg)
+-{
+- return eruby_compiler_compile_file(((compile_arg_t *) arg)->compiler,
+- ((compile_arg_t *) arg)->input);
+-}
+-
+-typedef struct eval_arg {
+- VALUE src;
+- VALUE filename;
+-} eval_arg_t;
+-
+-static VALUE eval_string(VALUE arg)
+-{
+- return rb_funcall(ruby_top_self, rb_intern("eval"), 3,
+- ((eval_arg_t *) arg)->src,
+- Qnil,
+- ((eval_arg_t *) arg)->filename);
+-}
+-
+-VALUE eruby_load(char *filename, int wrap, int *state)
+-{
+- VALUE compiler;
+- VALUE code;
+- VALUE f;
+- VALUE vfilename = rb_str_new2(filename);
+- compile_arg_t carg;
+- eval_arg_t earg;
+- int status;
+-
+- if (strcmp(filename, "-") == 0) {
+- f = rb_stdin;
+- }
+- else {
+- f = rb_protect(file_open, (VALUE) filename, &status);
+- if (status) {
+- if (state) *state = status;
+- return Qnil;
+- }
+- }
+- compiler = eruby_compiler_new();
+- eruby_compiler_set_sourcefile(compiler, vfilename);
+- carg.compiler = compiler;
+- carg.input = f;
+- code = rb_protect(eruby_compile_file, (VALUE) &carg, &status);
+- if (status) {
+- if (state) *state = status;
+- return Qnil;
+- }
+- if (wrap) {
+- rb_eval_string_wrap(STR2CSTR(code), &status);
+- }
+- else {
+- earg.src = code;
+- earg.filename = vfilename;
+- rb_protect(eval_string, (VALUE) &earg, &status);
+- }
+- if (state) *state = status;
+- if (f != rb_stdin)
+- rb_io_close(f);
+- return code;
+-}
+-
+ static VALUE noheader_getter()
+ {
+ return eruby_noheader ? Qtrue : Qfalse;
+@@ -765,6 +708,7 @@
+ rb_define_virtual_variable("$NOHEADER", noheader_getter, noheader_setter);
+
+ mERuby = rb_define_module("ERuby");
++ rb_define_const(mERuby, "VERSION", rb_str_new2(ERUBY_VERSION));
+ rb_define_singleton_method(mERuby, "noheader", eruby_get_noheader, 0);
+ rb_define_singleton_method(mERuby, "noheader=", eruby_set_noheader, 1);
+ rb_define_singleton_method(mERuby, "charset", eruby_get_charset, 0);
+diff -ur eruby-1.0.5/eruby_main.c eruby/eruby_main.c
+--- eruby-1.0.5/eruby_main.c 2003-12-23 16:10:54.000000000 +0100
++++ eruby_main.c 2010-02-17 14:20:36.000000000 +0100
+@@ -42,6 +42,7 @@
+ EXTERN VALUE rb_defout;
+ #endif
+ EXTERN VALUE rb_load_path;
++EXTERN VALUE ruby_top_self;
+
+ /* copied from eval.c */
+ #define TAG_RETURN 0x1
+@@ -92,7 +93,11 @@
+ static void error_pos(FILE *out, int cgi)
+ {
+ char buff[BUFSIZ];
++#if RUBY_VERSION_CODE >= 190
++ ID last_func = rb_frame_this_func();
++#else
+ ID last_func = rb_frame_last_func();
++#endif
+
+ if (ruby_sourcefile) {
+ if (last_func) {
+@@ -119,34 +124,34 @@
+
+ errat = rb_funcall(ruby_errinfo, rb_intern("backtrace"), 0);
+ if (!NIL_P(errat)) {
+- VALUE mesg = RARRAY(errat)->ptr[0];
++ VALUE mesg = RARRAY_PTR(errat)[0];
+
+ if (NIL_P(mesg)) {
+ error_pos(out, cgi);
+ }
+ else {
+ if (cgi)
+- write_escaping_html(out, RSTRING(mesg)->ptr, RSTRING(mesg)->len);
++ write_escaping_html(out, RSTRING_PTR(mesg), RSTRING_LEN(mesg));
+ else
+- fwrite(RSTRING(mesg)->ptr, 1, RSTRING(mesg)->len, out);
++ fwrite(RSTRING_PTR(mesg), 1, RSTRING_LEN(mesg), out);
+ }
+ }
+
+ eclass = CLASS_OF(ruby_errinfo);
+ einfo = rb_obj_as_string(ruby_errinfo);
+- if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
++ if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
+ fprintf(out, ": unhandled exception\n");
+ }
+ else {
+ VALUE epath;
+
+ epath = rb_class_path(eclass);
+- if (RSTRING(einfo)->len == 0) {
++ if (RSTRING_LEN(einfo) == 0) {
+ fprintf(out, ": ");
+ if (cgi)
+- write_escaping_html(out, RSTRING(epath)->ptr, RSTRING(epath)->len);
++ write_escaping_html(out, RSTRING_PTR(epath), RSTRING_LEN(epath));
+ else
+- fwrite(RSTRING(epath)->ptr, 1, RSTRING(epath)->len, out);
++ fwrite(RSTRING_PTR(epath), 1, RSTRING_LEN(epath), out);
+ if (cgi)
+ fprintf(out, "<br>\n");
+ else
+@@ -154,24 +159,24 @@
+ }
+ else {
+ char *tail = 0;
+- int len = RSTRING(einfo)->len;
++ int len = RSTRING_LEN(einfo);
+
+- if (RSTRING(epath)->ptr[0] == '#') epath = 0;
+- if ((tail = strchr(RSTRING(einfo)->ptr, '\n')) != NULL) {
+- len = tail - RSTRING(einfo)->ptr;
++ if (RSTRING_PTR(epath)[0] == '#') epath = 0;
++ if ((tail = strchr(RSTRING_PTR(einfo), '\n')) != NULL) {
++ len = tail - RSTRING_PTR(einfo);
+ tail++; /* skip newline */
+ }
+ fprintf(out, ": ");
+ if (cgi)
+- write_escaping_html(out, RSTRING(einfo)->ptr, len);
++ write_escaping_html(out, RSTRING_PTR(einfo), len);
+ else
+- fwrite(RSTRING(einfo)->ptr, 1, len, out);
++ fwrite(RSTRING_PTR(einfo), 1, len, out);
+ if (epath) {
+ fprintf(out, " (");
+ if (cgi)
+- write_escaping_html(out, RSTRING(epath)->ptr, RSTRING(epath)->len);
++ write_escaping_html(out, RSTRING_PTR(epath), RSTRING_LEN(epath));
+ else
+- fwrite(RSTRING(epath)->ptr, 1, RSTRING(epath)->len, out);
++ fwrite(RSTRING_PTR(epath), 1, RSTRING_LEN(epath), out);
+ if (cgi)
+ fprintf(out, ")<br>\n");
+ else
+@@ -179,9 +184,9 @@
+ }
+ if (tail) {
+ if (cgi)
+- write_escaping_html(out, tail, RSTRING(einfo)->len - len - 1);
++ write_escaping_html(out, tail, RSTRING_LEN(einfo) - len - 1);
+ else
+- fwrite(tail, 1, RSTRING(einfo)->len - len - 1, out);
++ fwrite(tail, 1, RSTRING_LEN(einfo) - len - 1, out);
+ if (cgi)
+ fprintf(out, "<br>\n");
+ else
+@@ -200,38 +205,38 @@
+
+ rb_ary_pop(errat);
+ ep = RARRAY(errat);
+- for (i=1; i<ep->len; i++) {
+- if (TYPE(ep->ptr[i]) == T_STRING) {
++ for (i=1; i<RARRAY_LEN(ep); i++) {
++ if (TYPE(RARRAY_PTR(ep)[i]) == T_STRING) {
+ if (cgi) {
+ fprintf(out, "<div class=\"backtrace\">from ");
+ write_escaping_html(out,
+- RSTRING(ep->ptr[i])->ptr,
+- RSTRING(ep->ptr[i])->len);
++ RSTRING_PTR(RARRAY_PTR(ep)[i]),
++ RSTRING_LEN(RARRAY_PTR(ep)[i]));
+ }
+ else {
+ fprintf(out, " from ");
+- fwrite(RSTRING(ep->ptr[i])->ptr, 1,
+- RSTRING(ep->ptr[i])->len, out);
++ fwrite(RSTRING_PTR(RARRAY_PTR(ep)[i]), 1,
++ RSTRING_LEN(RARRAY_PTR(ep)[i]), out);
+ }
+ if (cgi)
+ fprintf(out, "<br></div>\n");
+ else
+ fprintf(out, "\n");
+ }
+- if (i == TRACE_HEAD && ep->len > TRACE_MAX) {
++ if (i == TRACE_HEAD && RARRAY_LEN(ep) > TRACE_MAX) {
+ char buff[BUFSIZ];
+ if (cgi)
+ snprintf(buff, BUFSIZ,
+ "<div class=\"backtrace\">... %ld levels...\n",
+- ep->len - TRACE_HEAD - TRACE_TAIL);
++ RARRAY_LEN(ep) - TRACE_HEAD - TRACE_TAIL);
+ else
+ snprintf(buff, BUFSIZ, " ... %ld levels...<br></div>\n",
+- ep->len - TRACE_HEAD - TRACE_TAIL);
++ RARRAY_LEN(ep) - TRACE_HEAD - TRACE_TAIL);
+ if (cgi)
+ write_escaping_html(out, buff, strlen(buff));
+ else
+ fputs(buff, out);
+- i = ep->len - TRACE_TAIL;
++ i = RARRAY_LEN(ep) - TRACE_TAIL;
+ }
+ }
+ }
+@@ -251,10 +256,10 @@
+ }
+
+ if (cgi) {
+- write_escaping_html(out, RSTRING(code)->ptr, RSTRING(code)->len);
++ write_escaping_html(out, RSTRING_PTR(code), RSTRING_LEN(code));
+ }
+ else {
+- fwrite(RSTRING(code)->ptr, 1, RSTRING(code)->len, out);
++ fwrite(RSTRING_PTR(code), 1, RSTRING_LEN(code), out);
+ }
+ if (cgi) {
+ fprintf(out, "</code></pre>\n");
+@@ -394,15 +399,14 @@
+ static VALUE defout_write(VALUE self, VALUE str)
+ {
+ str = rb_obj_as_string(str);
+- rb_str_cat(self, RSTRING(str)->ptr, RSTRING(str)->len);
++ rb_str_cat(self, RSTRING_PTR(str), RSTRING_LEN(str));
+ return Qnil;
+ }
+
+ static VALUE defout_cancel(VALUE self)
+ {
+- if (RSTRING(self)->len == 0) return Qnil;
+- RSTRING(self)->len = 0;
+- RSTRING(self)->ptr[0] = '\0';
++ if (RSTRING_LEN(self) == 0) return Qnil;
++ rb_str_resize(self, 0);
+ return Qnil;
+ }
+
+@@ -453,18 +457,6 @@
+ #endif
+ if (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)
+ rb_set_safe_level(1);
+-
+-#if RUBY_VERSION_CODE >= 180
+- rb_io_binmode(rb_stdout); /* for mswin32 */
+- rb_stdout = rb_str_new("", 0);
+- rb_define_singleton_method(rb_stdout, "write", defout_write, 1);
+- rb_define_singleton_method(rb_stdout, "cancel", defout_cancel, 0);
+-#else
+- rb_defout = rb_str_new("", 0);
+- rb_io_binmode(rb_stdout); /* for mswin32 */
+- rb_define_singleton_method(rb_defout, "write", defout_write, 1);
+- rb_define_singleton_method(rb_defout, "cancel", defout_cancel, 0);
+-#endif
+ eruby_init();
+ }
+
+@@ -540,22 +532,14 @@
+ eruby_filename = "-";
+ }
+ else {
+- eruby_filename = argv[option_index];
++ eruby_filename = argv[option_index++];
++ ruby_set_argv(argc - option_index, argv + option_index);
+ }
+ }
+ }
+
+-static void run()
++static void error(int state, VALUE code)
+ {
+- VALUE stack_start;
+- VALUE code;
+- int state;
+- char *out;
+- int nout;
+- void Init_stack _((VALUE*));
+-
+- Init_stack(&stack_start);
+- code = eruby_load(eruby_filename, 0, &state);
+ if (state && !rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
+ if (RTEST(ruby_debug) &&
+ (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)) {
+@@ -567,32 +551,160 @@
+ eruby_exit(1);
+ }
+ }
+- if (eruby_mode == MODE_FILTER && (RTEST(ruby_debug) || RTEST(ruby_verbose))) {
+- print_generated_code(stderr, code, 0);
+- }
+-#if RUBY_VERSION_CODE >= 180
+- out = RSTRING(rb_stdout)->ptr;
+- nout = RSTRING(rb_stdout)->len;
+-#else
+- out = RSTRING(rb_defout)->ptr;
+- nout = RSTRING(rb_defout)->len;
+-#endif
++}
++
++static void print_headers(int length)
++{
+ if (!eruby_noheader &&
+ (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)) {
+ if (eruby_mode == MODE_NPHCGI)
+ print_http_headers();
+
+ printf("Content-Type: text/html; charset=%s\r\n", ERUBY_CHARSET);
+- printf("Content-Length: %d\r\n", nout);
++ if (length >= 0) {
++ printf("Content-Length: %d\r\n", length);
++ }
+ printf("\r\n");
+ }
++}
++
++static void replace_stdout()
++{
++#if RUBY_VERSION_CODE >= 180
++ rb_io_binmode(rb_stdout); /* for mswin32 */
++ rb_stdout = rb_str_new("", 0);
++ rb_define_singleton_method(rb_stdout, "write", defout_write, 1);
++ rb_define_singleton_method(rb_stdout, "cancel", defout_cancel, 0);
++#else
++ rb_defout = rb_str_new("", 0);
++ rb_io_binmode(rb_stdout); /* for mswin32 */
++ rb_define_singleton_method(rb_defout, "write", defout_write, 1);
++ rb_define_singleton_method(rb_defout, "cancel", defout_cancel, 0);
++#endif
++}
++
++static void flush_buffer()
++{
++ char *out;
++ int nout;
++
++#if RUBY_VERSION_CODE >= 180
++ out = RSTRING_PTR(rb_stdout);
++ nout = RSTRING_LEN(rb_stdout);
++#else
++ out = RSTRING(rb_defout)->ptr;
++ nout = RSTRING(rb_defout)->len;
++#endif
++ print_headers(nout);
+ fwrite(out, nout, 1, stdout);
+ fflush(stdout);
++}
++
++static VALUE file_open(VALUE filename)
++{
++ return rb_file_open((char *) filename, "r");
++}
++
++typedef struct compile_arg {
++ VALUE compiler;
++ VALUE input;
++} compile_arg_t;
++
++static VALUE eruby_compile_file(VALUE arg)
++{
++ return eruby_compiler_compile_file(((compile_arg_t *) arg)->compiler,
++ ((compile_arg_t *) arg)->input);
++}
++
++static VALUE compile(char *filename)
++{
++ VALUE compiler;
++ VALUE code;
++ VALUE f;
++ VALUE vfilename = rb_str_new2(filename);
++ compile_arg_t carg;
++ int status;
++
++ if (strcmp(filename, "-") == 0) {
++ f = rb_stdin;
++ }
++ else {
++ f = rb_protect(file_open, (VALUE) filename, &status);
++ if (status) {
++ error(status, Qnil);
++ }
++ }
++ compiler = eruby_compiler_new();
++ eruby_compiler_set_sourcefile(compiler, vfilename);
++ carg.compiler = compiler;
++ carg.input = f;
++ code = rb_protect(eruby_compile_file, (VALUE) &carg, &status);
++ if (status) {
++ error(status, Qnil);
++ }
++ if (f != rb_stdin)
++ rb_io_close(f);
++ return code;
++}
++
++typedef struct eval_arg {
++ VALUE src;
++ VALUE filename;
++} eval_arg_t;
++
++static VALUE eval_string(VALUE arg)
++{
++ return rb_funcall(ruby_top_self, rb_intern("eval"), 3,
++ ((eval_arg_t *) arg)->src,
++ Qnil,
++ ((eval_arg_t *) arg)->filename);
++}
++
++static VALUE eval(VALUE code, char *filename)
++{
++ int status;
++ eval_arg_t earg;
++
++ earg.src = code;
++ earg.filename = rb_str_new2(filename);
++ rb_protect(eval_string, (VALUE) &earg, &status);
++ if (status) {
++ error(status, code);
++ }
++ return code;
++}
++
++static void run()
++{
++ VALUE stack_start;
++ VALUE code;
++ void Init_stack _((VALUE*));
++
++ Init_stack(&stack_start);
++ code = compile(eruby_filename);
++ if (eruby_sync) {
++ print_headers(-1);
++ }
++ else {
++ replace_stdout();
++ }
++ code = eval(code, eruby_filename);
++ if (eruby_mode == MODE_FILTER &&
++ (RTEST(ruby_debug) || RTEST(ruby_verbose))) {
++ print_generated_code(stderr, code, 0);
++ }
++ rb_exec_end_proc();
++ if (!eruby_sync) {
++ flush_buffer();
++ }
+ ruby_finalize();
+ }
+
+ int main(int argc, char **argv)
+ {
++#ifdef _WIN32
++ NtInitialize(&argc, &argv);
++#endif
+ init();
+ proc_args(argc, argv);
+ run();
diff --git a/textproc/eruby/files/patch-configure.rb b/textproc/eruby/files/patch-configure.rb
index be945604fab5..0f0b16f1196b 100644
--- a/textproc/eruby/files/patch-configure.rb
+++ b/textproc/eruby/files/patch-configure.rb
@@ -1,24 +1,6 @@
---- configure.rb.orig 2003-02-10 04:18:10.000000000 +0100
-+++ configure.rb 2009-07-12 16:05:45.000000000 +0200
-@@ -59,7 +59,7 @@
- end
- end
-
--require 'ftools'
-+require 'fileutils'
-
- def AC_OUTPUT(*files)
- if $AC_LIST_HEADER
-@@ -71,7 +71,7 @@
- for file in files
- print "creating ", file, "\n"
- open(File.join($srcdir, file + ".in")) do |fin|
-- File.makedirs(File.dirname(file))
-+ FileUtils.mkdir_p(File.dirname(file))
- open(file, "w") do |fout|
- while line = fin.gets
- line.gsub!(/@([A-Za-z_]+)@/) do |s|
-@@ -301,12 +301,22 @@
+--- configure.rb.orig 2010-02-17 16:52:48.000000000 +0100
++++ configure.rb 2010-02-17 16:52:48.000000000 +0100
+@@ -317,7 +317,16 @@
else
$CFLAGS = CFLAGS + " " + CONFIG["CCDLFLAGS"]
end
@@ -35,22 +17,7 @@
if $LDFLAGS.to_s.empty? && /mswin32/ =~ RUBY_PLATFORM
$LDFLAGS = "-link -incremental:no -pdb:none"
end
- $LIBS = CONFIG["LIBS"]
- $XLDFLAGS = CONFIG["XLDFLAGS"]
-+$XLDFLAGS="" if $XLDFLAGS.nil?
- $XLDFLAGS.gsub!(/-L\./, "")
- if /mswin32/ !~ RUBY_PLATFORM
- $XLDFLAGS += " -L$(libdir)"
-@@ -333,7 +343,7 @@
- $LIBRUBY_A = CONFIG["LIBRUBY_A"]
- $RUBY_SO_NAME = CONFIG["RUBY_SO_NAME"]
-
--case PLATFORM
-+case RUBY_PLATFORM
- when /-aix/
- if $RUBY_SHARED
- $LIBRUBYARG = "-Wl,$(libdir)/" + CONFIG["LIBRUBY_SO"]
-@@ -407,7 +417,7 @@
+@@ -435,7 +444,7 @@
AC_MSG_CHECKING("whether we are using gcc")
if $CC == "gcc" || `#{$CC} -v 2>&1` =~ /gcc/
$using_gcc = true
@@ -59,39 +26,3 @@
else
$using_gcc = false
end
-@@ -431,7 +441,7 @@
- $ENABLE_SHARED = false
- AC_ENABLE("shared") { |enableval|
- if enableval == "yes"
-- if PLATFORM =~ /-mswin32/
-+ if RUBY_PLATFORM =~ /-mswin32/
- AC_MSG_ERROR("can't enable shared on mswin32")
- end
- $ENABLE_SHARED = true
-@@ -449,7 +459,7 @@
- if $ENABLE_SHARED
- $LIBERUBY = "${LIBERUBY_SO}"
- $LIBERUBYARG = "-L. -leruby"
-- case PLATFORM
-+ case RUBY_PLATFORM
- when /-sunos4/
- $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
- when /-linux/
-@@ -457,7 +467,7 @@
- $LIBERUBY_ALIASES = "liberuby.so.$(MAJOR).$(MINOR) liberuby.so"
- when /-(freebsd|netbsd)/
- $LIBERUBY_SO = "liberuby.so.$(MAJOR).$(MINOR)"
-- if PLATFORM =~ /elf/ || PLATFORM =~ /-freebsd[3-9]/
-+ if RUBY_PLATFORM =~ /elf/ || RUBY_PLATFORM =~ /-freebsd[3-9]/
- $LIBERUBY_SO = "liberuby.so.$(MAJOR_MINOR)"
- $LIBERUBY_ALIASES = "liberuby.so"
- else
-@@ -493,7 +503,7 @@
- end
- end
-
--if PLATFORM =~ /-mswin32/
-+if RUBY_PLATFORM =~ /-mswin32/
- $AR = "lib"
- $AROPT = "/out:$@"
- $LIBERUBY_A = "liberuby.lib"
diff --git a/textproc/eruby/files/patch-eruby.h b/textproc/eruby/files/patch-eruby.h
deleted file mode 100644
index e5343cfc1505..000000000000
--- a/textproc/eruby/files/patch-eruby.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- eruby.h.orig 2003-12-23 16:11:54.000000000 +0100
-+++ eruby.h 2009-06-21 19:15:36.000000000 +0200
-@@ -30,7 +30,7 @@
- extern int eruby_noheader;
- extern VALUE eruby_charset;
- extern VALUE eruby_default_charset;
--#define ERUBY_CHARSET RSTRING(eruby_charset)->ptr
-+#define ERUBY_CHARSET RSTRING_PTR(eruby_charset)
-
- const char *eruby_version();
- int eruby_parse_options(int argc, char **argv, int *optind);
diff --git a/textproc/eruby/files/patch-eruby_lib.c b/textproc/eruby/files/patch-eruby_lib.c
index 08665f6651c1..77aee0fddb81 100644
--- a/textproc/eruby/files/patch-eruby_lib.c
+++ b/textproc/eruby/files/patch-eruby_lib.c
@@ -1,5 +1,5 @@
---- eruby_lib.c.orig 2003-07-29 05:42:56.000000000 +0200
-+++ eruby_lib.c 2009-06-30 12:42:12.000000000 +0200
+--- eruby_lib.c.orig 2010-02-17 16:52:48.000000000 +0100
++++ eruby_lib.c 2010-02-17 16:52:48.000000000 +0100
@@ -34,10 +34,18 @@
#include <signal.h>
@@ -8,7 +8,7 @@
#include "eruby.h"
#include "config.h"
-+#if defined(DWITH_RUBY_19)
++#if defined(WITH_RUBY_19)
+#include "ruby/regex.h"
+#undef ismbchar
+#define ismbchar(c,e,enc) ((mbclen(c,e,enc)) != 1)
@@ -20,15 +20,15 @@
EXTERN VALUE rb_stdin;
EXTERN VALUE ruby_top_self;
-@@ -133,6 +141,7 @@
+@@ -144,6 +152,7 @@
}
s++;
goto again;
-+#if !defined(DWITH_RUBY_19)
++#if !defined(WITH_RUBY_19)
case 'K':
s++;
if (*s == '\0') {
-@@ -142,6 +151,7 @@
+@@ -153,6 +162,7 @@
rb_set_kcode(s);
s++;
goto again;
@@ -36,54 +36,11 @@
case 'C':
s++;
if (isspace(*s)) s++;
-@@ -296,18 +306,18 @@
- VALUE s = compiler->lex_input;
- char *beg, *end, *pend;
-
-- if (RSTRING(s)->len == compiler->lex_gets_ptr)
-+ if (RSTRING_LEN(s) == compiler->lex_gets_ptr)
- return Qnil;
-- beg = RSTRING(s)->ptr;
-+ beg = RSTRING_PTR(s);
- if (compiler->lex_gets_ptr > 0) {
- beg += compiler->lex_gets_ptr;
- }
-- pend = RSTRING(s)->ptr + RSTRING(s)->len;
-+ pend = RSTRING_PTR(s) + RSTRING_LEN(s);
- end = beg;
- while (end < pend) {
- if (*end++ == '\n') break;
- }
-- compiler->lex_gets_ptr = end - RSTRING(s)->ptr;
-+ compiler->lex_gets_ptr = end - RSTRING_PTR(s);
- return rb_str_new(beg, end - beg);
- }
-
-@@ -326,8 +336,8 @@
-
- if (NIL_P(v)) return EOF;
- compiler->sourceline++;
-- compiler->lex_pbeg = compiler->lex_p = RSTRING(v)->ptr;
-- compiler->lex_pend = compiler->lex_p + RSTRING(v)->len;
-+ compiler->lex_pbeg = compiler->lex_p = RSTRING_PTR(v);
-+ compiler->lex_pend = compiler->lex_p + RSTRING_LEN(v);
- compiler->lex_lastline = v;
- }
- else {
-@@ -471,7 +481,7 @@
- if (c == '!') {
- unsigned char *p;
- char *argv[2];
-- char *line = RSTRING(compiler->lex_lastline)->ptr;
-+ char *line = RSTRING_PTR(compiler->lex_lastline);
-
- if (line[strlen(line) - 1] == '\n') {
- line[strlen(line) - 1] = '\0';
-@@ -577,8 +587,13 @@
+@@ -592,8 +602,13 @@
if (prevc < 0) output_literal(compiler, "print \"");
output_char(compiler, c);
prevc = c;
-+#if defined(DWITH_RUBY_19)
++#if defined(WITH_RUBY_19)
+ if (ismbchar(c,c+4,OnigEncDefaultCharEncoding)) {
+ int i, len = mbclen(c,c,OnigEncDefaultCharEncoding) - 1;
+#else
diff --git a/textproc/eruby/files/patch-eruby_main.c b/textproc/eruby/files/patch-eruby_main.c
index 74d4bb5c6800..50e545b9d1eb 100644
--- a/textproc/eruby/files/patch-eruby_main.c
+++ b/textproc/eruby/files/patch-eruby_main.c
@@ -1,10 +1,10 @@
---- eruby_main.c.orig 2003-12-23 16:10:54.000000000 +0100
-+++ eruby_main.c 2009-06-30 12:45:54.000000000 +0200
-@@ -29,14 +29,27 @@
+--- eruby_main.c.orig 2010-02-17 16:59:10.000000000 +0100
++++ eruby_main.c 2010-02-17 17:11:08.000000000 +0100
+@@ -29,20 +29,37 @@
#endif
#include "ruby.h"
-+#if defined(DWITH_RUBY_19)
++#if defined(WITH_RUBY_19)
+#define RUBY_VERSION_CODE 190
+#endif
+#if RUBY_VERSION_CODE < 190
@@ -28,19 +28,33 @@
EXTERN VALUE rb_stdout;
#if RUBY_VERSION_CODE < 180
EXTERN VALUE rb_defout;
-@@ -92,15 +105,23 @@
+ #endif
+ EXTERN VALUE rb_load_path;
++#if RUBY_VERSION_CODE < 190
+ EXTERN VALUE ruby_top_self;
++#else
++#define ruby_top_self rb_vm_top_self()
++#endif
+
+ /* copied from eval.c */
+ #define TAG_RETURN 0x1
+@@ -92,6 +109,13 @@
+
static void error_pos(FILE *out, int cgi)
{
- char buff[BUFSIZ];
+#if RUBY_VERSION_CODE >= 190
+ const char *sourcefile = rb_sourcefile();
+ int sourceline = rb_sourceline();
-+ ID last_func = rb_frame_callee();
+#else
+ const char *sourcefile = ruby_sourcefile;
+ int sourceline = ruby_sourceline;
- ID last_func = rb_frame_last_func();
+#endif
+ char buff[BUFSIZ];
+ #if RUBY_VERSION_CODE >= 190
+ ID last_func = rb_frame_this_func();
+@@ -99,13 +123,13 @@
+ ID last_func = rb_frame_last_func();
+ #endif
- if (ruby_sourcefile) {
+ if (sourcefile) {
@@ -55,7 +69,7 @@
}
if (cgi)
write_escaping_html(out, buff, strlen(buff));
-@@ -115,38 +136,38 @@
+@@ -120,9 +144,9 @@
VALUE eclass;
VALUE einfo;
@@ -65,189 +79,25 @@
- errat = rb_funcall(ruby_errinfo, rb_intern("backtrace"), 0);
+ errat = rb_funcall(rb_errinfo(), rb_intern("backtrace"), 0);
if (!NIL_P(errat)) {
-- VALUE mesg = RARRAY(errat)->ptr[0];
-+ VALUE mesg = RARRAY_PTR(errat)[0];
+ VALUE mesg = RARRAY_PTR(errat)[0];
- if (NIL_P(mesg)) {
- error_pos(out, cgi);
- }
- else {
- if (cgi)
-- write_escaping_html(out, RSTRING(mesg)->ptr, RSTRING(mesg)->len);
-+ write_escaping_html(out, RSTRING_PTR(mesg), RSTRING_LEN(mesg));
- else
-- fwrite(RSTRING(mesg)->ptr, 1, RSTRING(mesg)->len, out);
-+ fwrite(RSTRING_PTR(mesg), 1, RSTRING_LEN(mesg), out);
+@@ -137,8 +161,8 @@
}
}
- eclass = CLASS_OF(ruby_errinfo);
- einfo = rb_obj_as_string(ruby_errinfo);
-- if (eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) {
+ eclass = CLASS_OF(rb_errinfo());
+ einfo = rb_obj_as_string(rb_errinfo());
-+ if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
+ if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0) {
fprintf(out, ": unhandled exception\n");
}
- else {
- VALUE epath;
-
- epath = rb_class_path(eclass);
-- if (RSTRING(einfo)->len == 0) {
-+ if (RSTRING_LEN(einfo) == 0) {
- fprintf(out, ": ");
- if (cgi)
-- write_escaping_html(out, RSTRING(epath)->ptr, RSTRING(epath)->len);
-+ write_escaping_html(out, RSTRING_PTR(epath), RSTRING_LEN(epath));
- else
-- fwrite(RSTRING(epath)->ptr, 1, RSTRING(epath)->len, out);
-+ fwrite(RSTRING_PTR(epath), 1, RSTRING_LEN(epath), out);
- if (cgi)
- fprintf(out, "<br>\n");
- else
-@@ -154,24 +175,24 @@
- }
- else {
- char *tail = 0;
-- int len = RSTRING(einfo)->len;
-+ int len = RSTRING_LEN(einfo);
-
-- if (RSTRING(epath)->ptr[0] == '#') epath = 0;
-- if ((tail = strchr(RSTRING(einfo)->ptr, '\n')) != NULL) {
-- len = tail - RSTRING(einfo)->ptr;
-+ if (RSTRING_PTR(epath)[0] == '#') epath = 0;
-+ if ((tail = strchr(RSTRING_PTR(einfo), '\n')) != NULL) {
-+ len = tail - RSTRING_PTR(einfo);
- tail++; /* skip newline */
- }
- fprintf(out, ": ");
- if (cgi)
-- write_escaping_html(out, RSTRING(einfo)->ptr, len);
-+ write_escaping_html(out, RSTRING_PTR(einfo), len);
- else
-- fwrite(RSTRING(einfo)->ptr, 1, len, out);
-+ fwrite(RSTRING_PTR(einfo), 1, len, out);
- if (epath) {
- fprintf(out, " (");
- if (cgi)
-- write_escaping_html(out, RSTRING(epath)->ptr, RSTRING(epath)->len);
-+ write_escaping_html(out, RSTRING_PTR(epath), RSTRING_LEN(epath));
- else
-- fwrite(RSTRING(epath)->ptr, 1, RSTRING(epath)->len, out);
-+ fwrite(RSTRING_PTR(epath), 1, RSTRING_LEN(epath), out);
- if (cgi)
- fprintf(out, ")<br>\n");
- else
-@@ -179,9 +200,9 @@
- }
- if (tail) {
- if (cgi)
-- write_escaping_html(out, tail, RSTRING(einfo)->len - len - 1);
-+ write_escaping_html(out, tail, RSTRING_LEN(einfo) - len - 1);
- else
-- fwrite(tail, 1, RSTRING(einfo)->len - len - 1, out);
-+ fwrite(tail, 1, RSTRING_LEN(einfo) - len - 1, out);
- if (cgi)
- fprintf(out, "<br>\n");
- else
-@@ -200,38 +221,38 @@
-
- rb_ary_pop(errat);
- ep = RARRAY(errat);
-- for (i=1; i<ep->len; i++) {
-- if (TYPE(ep->ptr[i]) == T_STRING) {
-+ for (i=1; i<RARRAY_LEN(ep); i++) {
-+ if (TYPE(RARRAY_PTR(ep)[i]) == T_STRING) {
- if (cgi) {
- fprintf(out, "<div class=\"backtrace\">from ");
- write_escaping_html(out,
-- RSTRING(ep->ptr[i])->ptr,
-- RSTRING(ep->ptr[i])->len);
-+ RSTRING_PTR(RARRAY_PTR(ep)[i]),
-+ RSTRING_LEN(RARRAY_PTR(ep)[i]));
- }
- else {
- fprintf(out, " from ");
-- fwrite(RSTRING(ep->ptr[i])->ptr, 1,
-- RSTRING(ep->ptr[i])->len, out);
-+ fwrite(RSTRING_PTR(RARRAY_PTR(ep)[i]), 1,
-+ RSTRING_LEN(RARRAY_PTR(ep)[i]), out);
- }
- if (cgi)
- fprintf(out, "<br></div>\n");
- else
- fprintf(out, "\n");
- }
-- if (i == TRACE_HEAD && ep->len > TRACE_MAX) {
-+ if (i == TRACE_HEAD && RARRAY_LEN(ep) > TRACE_MAX) {
- char buff[BUFSIZ];
- if (cgi)
- snprintf(buff, BUFSIZ,
- "<div class=\"backtrace\">... %ld levels...\n",
-- ep->len - TRACE_HEAD - TRACE_TAIL);
-+ RARRAY_LEN(ep) - TRACE_HEAD - TRACE_TAIL);
- else
- snprintf(buff, BUFSIZ, " ... %ld levels...<br></div>\n",
-- ep->len - TRACE_HEAD - TRACE_TAIL);
-+ RARRAY_LEN(ep) - TRACE_HEAD - TRACE_TAIL);
- if (cgi)
- write_escaping_html(out, buff, strlen(buff));
- else
- fputs(buff, out);
-- i = ep->len - TRACE_TAIL;
-+ i = RARRAY_LEN(ep) - TRACE_TAIL;
- }
- }
- }
-@@ -251,10 +272,10 @@
- }
+@@ -540,7 +564,7 @@
- if (cgi) {
-- write_escaping_html(out, RSTRING(code)->ptr, RSTRING(code)->len);
-+ write_escaping_html(out, RSTRING_PTR(code), RSTRING_LEN(code));
- }
- else {
-- fwrite(RSTRING(code)->ptr, 1, RSTRING(code)->len, out);
-+ fwrite(RSTRING_PTR(code), 1, RSTRING_LEN(code), out);
- }
- if (cgi) {
- fprintf(out, "</code></pre>\n");
-@@ -394,15 +415,14 @@
- static VALUE defout_write(VALUE self, VALUE str)
- {
- str = rb_obj_as_string(str);
-- rb_str_cat(self, RSTRING(str)->ptr, RSTRING(str)->len);
-+ rb_str_cat(self, RSTRING_PTR(str), RSTRING_LEN(str));
- return Qnil;
- }
-
- static VALUE defout_cancel(VALUE self)
+ static void error(int state, VALUE code)
{
-- if (RSTRING(self)->len == 0) return Qnil;
-- RSTRING(self)->len = 0;
-- RSTRING(self)->ptr[0] = '\0';
-+ if (RSTRING_LEN(self) == 0) return Qnil;
-+ self = rb_str_new("", 0);
- return Qnil;
- }
-
-@@ -556,7 +576,7 @@
-
- Init_stack(&stack_start);
- code = eruby_load(eruby_filename, 0, &state);
- if (state && !rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
+ if (state && !rb_obj_is_kind_of(rb_errinfo(), rb_eSystemExit)) {
if (RTEST(ruby_debug) &&
(eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)) {
error_print(stdout, state, 1, eruby_mode, code);
-@@ -571,8 +591,8 @@
- print_generated_code(stderr, code, 0);
- }
- #if RUBY_VERSION_CODE >= 180
-- out = RSTRING(rb_stdout)->ptr;
-- nout = RSTRING(rb_stdout)->len;
-+ out = RSTRING_PTR(rb_stdout);
-+ nout = RSTRING_LEN(rb_stdout);
- #else
- out = RSTRING(rb_defout)->ptr;
- nout = RSTRING(rb_defout)->len;