]> git.wincent.com - wikitext.git/commitdiff
RSTRING_PTR and RSTRING_LEN fixes for Ruby 1.8.5 compatibility
authorWincent Colaiuta <win@wincent.com>
Fri, 29 Feb 2008 11:28:29 +0000 (12:28 +0100)
committerWincent Colaiuta <win@wincent.com>
Fri, 29 Feb 2008 11:28:29 +0000 (12:28 +0100)
Testing on RHEL 5.1, which comes with Ruby 1.8.5, indicates that 1.8.5
doesn't define the RSTRING_PTR and RSTRING_LEN macros, so define them
if they're not already defined.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Rakefile
ext/ary.h
ext/depend
ext/parser.h
ext/ruby_compat.h [new file with mode: 0644]
ext/str.h
ext/token.h
ext/wikitext.h

index 5f4bf48453edf9af5952985284f330c596dbfcae..21385f083117559923ee68e4843fdfde8750a380 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -37,6 +37,7 @@ extension_files     = FileList[
   'ext/ary.h',
   'ext/parser.c',
   'ext/parser.h',
+  'ext/ruby_compat.h',
   'ext/str.c',
   'ext/str.h',
   'ext/token.c',
index 541180c730fe9ca26c864a0edf18b7fbc242fbc6..0c415f65a1c835e4bc942951fbc44b46abf9e1c7 100644 (file)
--- a/ext/ary.h
+++ b/ext/ary.h
@@ -12,7 +12,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <ruby.h>
+#include "ruby_compat.h"
 
 typedef struct
 {
index e69e59a6a2f56442c41fbd82c211322c551921a0..574bbb02875e73002f81bb915aa577f0c1c034e5 100644 (file)
@@ -17,9 +17,9 @@
 # don't warn about unused params because many Ruby methods accept "self" but don't use it
 CFLAGS += -std=gnu99 -Wall -Wextra -Wno-unused-parameter
 
-ary.o : ary.c ary.h
-parser.o : ary.c ary.h parser.c parser.h token.h str.c str.h wikitext.h wikitext_ragel.h
-str.o : str.c str.h
-token.o : token.c token.h wikitext.h
-wikitext.o : parser.h token.h wikitext.c wikitext.h wikitext_ragel.h
-wikitext_ragel.o : token.h wikitext.h wikitext_ragel.h wikitext_ragel.c
+ary.o : ary.c ary.h ruby_compat.h
+parser.o : ary.c ary.h parser.c parser.h ruby_compat.h str.c str.h token.h wikitext.h wikitext_ragel.h
+str.o : ruby_compat.h str.c str.h
+token.o : ruby_compat.h token.c token.h wikitext.h
+wikitext.o : parser.h ruby_compat.h token.h wikitext.c wikitext.h wikitext_ragel.h
+wikitext_ragel.o : ruby_compat.h token.h wikitext.h wikitext_ragel.h wikitext_ragel.c
index d8f4c8e254791368236d23554c06fa0851cfcf93..2b9524c550038b3fcedeae1320243a34a9abba88 100644 (file)
@@ -12,7 +12,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <ruby.h>
+#include "ruby_compat.h"
 
 VALUE Wikitext_parser_initialize(int argc, VALUE *argv, VALUE self);
 
diff --git a/ext/ruby_compat.h b/ext/ruby_compat.h
new file mode 100644 (file)
index 0000000..c8a1173
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2008 Wincent Colaiuta
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <ruby.h>
+
+// for compatibility with Ruby 1.8.5, which doesn't declare RSTRING_PTR
+#ifndef RSTRING_PTR
+#define RSTRING_PTR(s) (RSTRING(s)->ptr)
+#endif
+
+// for compatibility with Ruby 1.8.5, which doesn't declare RSTRING_LEN
+#ifndef RSTRING_LEN
+#define RSTRING_LEN(s) (RSTRING(s)->len)
+#endif
index c6150687d7580fae614703c76f839eb42ebbdbe8..4c2971df924c9a25663269cc322d37bcfcdcb0a8 100644 (file)
--- a/ext/str.h
+++ b/ext/str.h
@@ -12,7 +12,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <ruby.h>
+#include "ruby_compat.h"
 
 typedef struct
 {
index 42aece3cba6926cd31ac53f2dd6918438739c522..0e6fd110ee5f35eff05dc3cdc94f01a9b409c8f1 100644 (file)
@@ -12,7 +12,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <ruby.h>
+#include "ruby_compat.h"
 #include <stdint.h>     /* uint32_t */
 
 #define TOKEN_TEXT(token)   rb_str_new((const char *)token->start, (token->stop - token->start))
index e717165b27e2f9c6620b3f0ca5a7a670f674e484..3fbdf49b432224ba0223903789e711a397cb6d92 100644 (file)
@@ -12,7 +12,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <ruby.h>
+#include "ruby_compat.h"
 #include <stdint.h>
 
 #define ruby_inspect(obj) rb_funcall(rb_mKernel, rb_intern("p"), 1, obj)