pkgsrc/www/clearsilver/patches/patch-af
taca 50196d8de3 One more patches I forgot to commit.
These patches fix the build problem with ruby19 and no functional
change with ruby18.
2010-09-13 03:05:24 +00:00

228 lines
6 KiB
Text

$NetBSD: patch-af,v 1.1 2010/09/13 03:05:24 taca Exp $
Use modern Ruby's API.
--- ruby/ext/hdf/neo_util.c.orig 2007-02-16 00:32:03.000000000 +0000
+++ ruby/ext/hdf/neo_util.c
@@ -10,7 +10,6 @@
*/
#include <ruby.h>
-#include <version.h>
#include "ClearSilver.h"
#include "neo_ruby.h"
@@ -19,7 +18,7 @@ static VALUE cHdf;
VALUE eHdfError;
static ID id_to_s;
-#define Srb_raise(val) rb_raise(eHdfError, "%s/%d %s",__FILE__,__LINE__,RSTRING(val)->ptr)
+#define Srb_raise(val) rb_raise(eHdfError, "%s/%d %s",__FILE__,__LINE__,RSTRING_PTR(val))
VALUE r_neo_error (NEOERR *err)
{
@@ -96,7 +95,7 @@ static VALUE h_get_attr (VALUE self, VAL
VALUE rv;
Data_Get_Struct(self, t_hdfh, hdfh);
- name = STR2CSTR(oName);
+ name = StringValuePtr(oName);
rv = rb_hash_new();
@@ -118,12 +117,12 @@ static VALUE h_set_attr(VALUE self, VALU
Data_Get_Struct(self, t_hdfh, hdfh);
- name = STR2CSTR(oName);
- key = STR2CSTR(oKey);
+ name = StringValuePtr(oName);
+ key = StringValuePtr(oKey);
if ( NIL_P(oValue) )
value = NULL;
else
- value = STR2CSTR(oValue);
+ value = StringValuePtr(oValue);
err = hdf_set_attr(hdfh->hdf, name, key, value);
if (err) Srb_raise(r_neo_error(err));
@@ -140,14 +139,21 @@ static VALUE h_set_value (VALUE self, VA
Data_Get_Struct(self, t_hdfh, hdfh);
if ( TYPE(oName) == T_STRING )
- name=STR2CSTR(oName);
- else
- name=STR2CSTR(rb_funcall(oName,id_to_s,0));
+ name=StringValuePtr(oName);
+ else {
+ VALUE v;
+
+ v =rb_funcall(oName,id_to_s,0);
+ name=StringValuePtr(v);
+ }
if ( TYPE(oValue) == T_STRING )
- value=STR2CSTR(oValue);
- else
- value=STR2CSTR(rb_funcall(oValue,id_to_s,0));
+ value=StringValuePtr(oValue);
+ else {
+ VALUE v;
+ v = rb_funcall(oValue,id_to_s,0);
+ value=StringValuePtr(v);
+ }
err = hdf_set_value (hdfh->hdf, name, value);
@@ -165,7 +171,7 @@ static VALUE h_get_int_value (VALUE self
Data_Get_Struct(self, t_hdfh, hdfh);
- name=STR2CSTR(oName);
+ name=StringValuePtr(oName);
d=NUM2INT(oDefault);
r = hdf_get_int_value (hdfh->hdf, name, d);
@@ -181,8 +187,8 @@ static VALUE h_get_value (VALUE self, VA
VALUE rv;
Data_Get_Struct(self, t_hdfh, hdfh);
- name=STR2CSTR(oName);
- d=STR2CSTR(oDefault);
+ name=StringValuePtr(oName);
+ d=StringValuePtr(oDefault);
r = hdf_get_value (hdfh->hdf, name, d);
rv = rb_str_new2(r);
@@ -197,7 +203,7 @@ static VALUE h_get_child (VALUE self, VA
char *name;
Data_Get_Struct(self, t_hdfh, hdfh);
- name=STR2CSTR(oName);
+ name=StringValuePtr(oName);
r = hdf_get_child (hdfh->hdf, name);
if (r == NULL) {
@@ -219,7 +225,7 @@ static VALUE h_get_obj (VALUE self, VALU
char *name;
Data_Get_Struct(self, t_hdfh, hdfh);
- name=STR2CSTR(oName);
+ name=StringValuePtr(oName);
r = hdf_get_obj (hdfh->hdf, name);
if (r == NULL) {
@@ -243,7 +249,7 @@ static VALUE h_get_node (VALUE self, VAL
NEOERR *err;
Data_Get_Struct(self, t_hdfh, hdfh);
- name=STR2CSTR(oName);
+ name=StringValuePtr(oName);
err = hdf_get_node (hdfh->hdf, name, &r);
if (err)
@@ -384,7 +390,7 @@ static VALUE h_read_file (VALUE self, VA
Data_Get_Struct(self, t_hdfh, hdfh);
- path=STR2CSTR(oPath);
+ path=StringValuePtr(oPath);
err = hdf_read_file (hdfh->hdf, path);
if (err) Srb_raise(r_neo_error(err));
@@ -400,7 +406,7 @@ static VALUE h_write_file (VALUE self, V
Data_Get_Struct(self, t_hdfh, hdfh);
- path=STR2CSTR(oPath);
+ path=StringValuePtr(oPath);
err = hdf_write_file (hdfh->hdf, path);
@@ -417,7 +423,7 @@ static VALUE h_write_file_atomic (VALUE
Data_Get_Struct(self, t_hdfh, hdfh);
- path=STR2CSTR(oPath);
+ path=StringValuePtr(oPath);
err = hdf_write_file_atomic (hdfh->hdf, path);
if (err) Srb_raise(r_neo_error(err));
@@ -432,7 +438,7 @@ static VALUE h_remove_tree (VALUE self,
NEOERR *err;
Data_Get_Struct(self, t_hdfh, hdfh);
- name = STR2CSTR(oName);
+ name = StringValuePtr(oName);
err = hdf_remove_tree (hdfh->hdf, name);
if (err) Srb_raise(r_neo_error(err));
@@ -489,7 +495,7 @@ static VALUE h_read_string (VALUE self,
Data_Get_Struct(self, t_hdfh, hdfh);
- s = STR2CSTR(oString);
+ s = StringValuePtr(oString);
ignore = NUM2INT(oIgnore);
err = hdf_read_string_ignore (hdfh->hdf, s, ignore);
@@ -508,7 +514,7 @@ static VALUE h_copy (VALUE self, VALUE o
Data_Get_Struct(self, t_hdfh, hdfh);
Data_Get_Struct(oHdfSrc, t_hdfh, hdfh_src);
- name = STR2CSTR(oName);
+ name = StringValuePtr(oName);
if (hdfh_src == NULL) rb_raise(eHdfError, "second argument must be an Hdf object");
@@ -526,8 +532,8 @@ static VALUE h_set_symlink (VALUE self,
NEOERR *err;
Data_Get_Struct(self, t_hdfh, hdfh);
- src = STR2CSTR(oSrc);
- dest = STR2CSTR(oDest);
+ src = StringValuePtr(oSrc);
+ dest = StringValuePtr(oDest);
err = hdf_set_symlink (hdfh->hdf, src, dest);
if (err) Srb_raise(r_neo_error(err));
@@ -545,9 +551,11 @@ static VALUE h_escape (VALUE self, VALUE
char *ret = NULL;
NEOERR *err;
- s = rb_str2cstr(oString,&buflen);
- esc_char = STR2CSTR(oEsc_char);
- escape = STR2CSTR(oEsc);
+ StringValue(oString);
+ s = RSTRING_PTR(oString);
+ buflen = RSTRING_LEN(oString);
+ esc_char = StringValuePtr(oEsc_char);
+ escape = StringValuePtr(oEsc);
err = neos_escape((UINT8*)s, buflen, esc_char[0], escape, &ret);
@@ -566,8 +574,10 @@ static VALUE h_unescape (VALUE self, VAL
char *esc_char;
long buflen;
- s = rb_str2cstr(oString,&buflen);
- esc_char = STR2CSTR(oEsc_char);
+ StringValue(oString);
+ s = RSTRING_PTR(oString);
+ buflen = RSTRING_LEN(oString);
+ esc_char = StringValuePtr(oEsc_char);
/* This should be changed to use memory from the gc */
copy = strdup(s);
@@ -620,11 +630,7 @@ void Init_hdf() {
rb_define_singleton_method(cHdf, "unescape", h_unescape, 3);
eHdfError = rb_define_class_under(mNeotonic, "HdfError",
-#if RUBY_VERSION_MINOR >= 6
rb_eStandardError);
-#else
- rb_eException);
-#endif
Init_cs();
}