File ruby-ldap-rb_cObject.patch of Package rubygem-ruby-ldap

From 31c999b9024157cde61e06cc629a54fe8372ec96 Mon Sep 17 00:00:00 2001
From: minamino <minamino@iij.ad.jp>
Date: Wed, 28 Dec 2022 18:14:14 +0900
Subject: [PATCH 1/2] Update conn.c

ruby >= 3.0:
  use rb_cObject instead of rb_cData
ruby < 3.0:
  use rb_cData

ruby 2.7 will be outdated soon.
---
 conn.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/conn.c b/conn.c
index e628695..54c91a1 100644
--- a/conn.c
+++ b/conn.c
@@ -1855,7 +1855,13 @@ Init_ldap_conn ()
 {
   rb_ldap_sort_obj = Qnil;
 
+#if RUBY_VERSION_CODE >= 300
+  rb_cLDAP_Conn = rb_define_class_under (rb_mLDAP, "Conn", rb_cObject);
+  rb_undef_alloc_func (rb_cLDAP_Conn);
+#endif
+#if RUBY_VERSION_CODE < 300
   rb_cLDAP_Conn = rb_define_class_under (rb_mLDAP, "Conn", rb_cData);
+#endif
   rb_define_attr (rb_cLDAP_Conn, "referrals", 1, 0);
   rb_define_attr (rb_cLDAP_Conn, "controls", 1, 0);
   rb_define_attr (rb_cLDAP_Conn, "sasl_quiet", 1, 1);

From 9a488dc19c185df3629d0093f65aa73a2370bd6c Mon Sep 17 00:00:00 2001
From: minamino <minamino@iij.ad.jp>
Date: Fri, 19 May 2023 16:18:39 +0900
Subject: [PATCH 2/2] replace RUBY_VERSION_CODE with RB_LDAP_RVC

---
 conn.c     | 14 +++++++-------
 entry.c    | 26 +++++++++++++-------------
 extconf.rb |  6 ++++++
 misc.c     |  6 +++---
 mod.c      |  6 +++---
 rbldap.h   | 15 +++++++++++++--
 6 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/conn.c b/conn.c
index 54c91a1..fb5ee7d 100644
--- a/conn.c
+++ b/conn.c
@@ -1855,20 +1855,20 @@ Init_ldap_conn ()
 {
   rb_ldap_sort_obj = Qnil;
 
-#if RUBY_VERSION_CODE >= 300
-  rb_cLDAP_Conn = rb_define_class_under (rb_mLDAP, "Conn", rb_cObject);
-  rb_undef_alloc_func (rb_cLDAP_Conn);
-#endif
-#if RUBY_VERSION_CODE < 300
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 30000
   rb_cLDAP_Conn = rb_define_class_under (rb_mLDAP, "Conn", rb_cData);
+#endif
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 30000
+  rb_cLDAP_Conn = rb_define_class_under (rb_mLDAP, "Conn", rb_cObject);
+  rb_undef_alloc_func(rb_cLDAP_Conn);
 #endif
   rb_define_attr (rb_cLDAP_Conn, "referrals", 1, 0);
   rb_define_attr (rb_cLDAP_Conn, "controls", 1, 0);
   rb_define_attr (rb_cLDAP_Conn, "sasl_quiet", 1, 1);
-#if RUBY_VERSION_CODE < 170
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10700
   rb_define_singleton_method (rb_cLDAP_Conn, "new", rb_ldap_class_new, -1);
 #endif
-#if RUBY_VERSION_CODE >= 173
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10703
   rb_define_alloc_func (rb_cLDAP_Conn, rb_ldap_conn_s_allocate);
 #else
   rb_define_singleton_method (rb_cLDAP_Conn, "allocate",
diff --git a/entry.c b/entry.c
index 2cddcf9..c630ee8 100644
--- a/entry.c
+++ b/entry.c
@@ -8,7 +8,7 @@
 
 VALUE rb_cLDAP_Entry;
 
-#if RUBY_VERSION_CODE >= 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10900
 static void
 rb_ldap_entry_mark(RB_LDAPENTRY_DATA *edata)
 {
@@ -88,11 +88,11 @@ rb_ldap_entry_new (LDAP * ldap, LDAPMessage * msg)
 {
   VALUE val;
   RB_LDAPENTRY_DATA *edata;
-#if RUBY_VERSION_CODE >= 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10900
   char *c_dn;
 #endif
 
-#if RUBY_VERSION_CODE >= 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10900
   val = Data_Make_Struct (rb_cLDAP_Entry, RB_LDAPENTRY_DATA,
 			  rb_ldap_entry_mark, rb_ldap_entry_free, edata);
 #else
@@ -102,7 +102,7 @@ rb_ldap_entry_new (LDAP * ldap, LDAPMessage * msg)
   edata->ldap = ldap;
   edata->msg = msg;
 
-#if RUBY_VERSION_CODE >= 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10900
   /* get dn */
   c_dn = ldap_get_dn(ldap, msg);
   if (c_dn) {
@@ -128,14 +128,14 @@ VALUE
 rb_ldap_entry_get_dn (VALUE self)
 {
   RB_LDAPENTRY_DATA *edata;
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   char *cdn;
   VALUE dn;
 #endif
 
   GET_LDAPENTRY_DATA (self, edata);
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   cdn = ldap_get_dn (edata->ldap, edata->msg);
   if (cdn)
     {
@@ -166,7 +166,7 @@ VALUE
 rb_ldap_entry_get_values (VALUE self, VALUE attr)
 {
   RB_LDAPENTRY_DATA *edata;
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   char *c_attr;
   struct berval **c_vals;
   int i;
@@ -175,7 +175,7 @@ rb_ldap_entry_get_values (VALUE self, VALUE attr)
 #endif
 
   GET_LDAPENTRY_DATA (self, edata);
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   c_attr = StringValueCStr (attr);
 
   c_vals = ldap_get_values_len (edata->ldap, edata->msg, c_attr);
@@ -213,7 +213,7 @@ VALUE
 rb_ldap_entry_get_attributes (VALUE self)
 {
   RB_LDAPENTRY_DATA *edata;
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   VALUE vals;
   char *attr;
   BerElement *ber = NULL;
@@ -223,7 +223,7 @@ rb_ldap_entry_get_attributes (VALUE self)
 
   GET_LDAPENTRY_DATA (self, edata);
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   vals = rb_ary_new ();
   for (attr = ldap_first_attribute (edata->ldap, edata->msg, &ber);
        attr != NULL;
@@ -259,7 +259,7 @@ rb_ldap_entry_get_attributes (VALUE self)
 VALUE
 rb_ldap_entry_to_hash (VALUE self)
 {
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   VALUE attrs = rb_ldap_entry_get_attributes (self);
   VALUE hash = rb_hash_new ();
   VALUE attr, vals;
@@ -269,7 +269,7 @@ rb_ldap_entry_to_hash (VALUE self)
   VALUE hash, dn_ary;
 #endif
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   Check_Type (attrs, T_ARRAY);
   rb_hash_aset (hash, rb_tainted_str_new2 ("dn"),
 		rb_ary_new3 (1, rb_ldap_entry_get_dn (self)));
@@ -305,7 +305,7 @@ rb_ldap_entry_inspect (VALUE self)
   str = rb_str_new (0, strlen (c) + 10 + 16 + 1);	/* 10:tags 16:addr 1:nul */
   sprintf (RSTRING_PTR (str), "#<%s:0x%lx\n", c, self);
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   RSTRING(str)->len = strlen (RSTRING_PTR (str));
 #else
   rb_str_set_len(str, strlen (RSTRING_PTR (str)));
diff --git a/extconf.rb b/extconf.rb
index 9df2349..3fae4f5 100755
--- a/extconf.rb
+++ b/extconf.rb
@@ -257,6 +257,12 @@ def ldap_with_config(arg, default = nil)
 
 $defs << "-DRUBY_VERSION_CODE=#{RUBY_VERSION.gsub(/\D/, '')}"
 
+def rb_ldap_rb_ver_code
+  ( _major, _minor, _teeny ) = RUBY_VERSION.split(/\D/)
+  _rvc = _major.to_i * 10000 + _minor.to_i * 100 + _teeny.to_i
+end
+$defs << "-DRB_LDAP_RVC=#{rb_ldap_rb_ver_code}"
+
 create_makefile("ldap")
 
 
diff --git a/misc.c b/misc.c
index 7b7b056..ac1061c 100644
--- a/misc.c
+++ b/misc.c
@@ -131,7 +131,7 @@ rb_ldap_control_s_allocate (VALUE klass)
   return Data_Wrap_Struct (klass, 0, rb_ldap_control_free, ctl);
 }
 
-#if RUBY_VERSION_CODE < 170
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10700
 static VALUE
 rb_ldap_control_s_new (int argc, VALUE argv[], VALUE klass)
 {
@@ -479,11 +479,11 @@ Init_ldap_misc ()
 
 #ifdef HAVE_LDAPCONTROL
   rb_cLDAP_Control = rb_define_class_under (rb_mLDAP, "Control", rb_cObject);
-#if RUBY_VERSION_CODE < 170
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10700
   rb_define_singleton_method (rb_cLDAP_Control, "new",
                              rb_ldap_control_s_new, -1);
 #endif
-#if RUBY_VERSION_CODE >= 173
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10703
   rb_define_alloc_func (rb_cLDAP_Control, rb_ldap_control_s_allocate);
 #else
   rb_define_singleton_method (rb_cLDAP_Control, "allocate",
diff --git a/mod.c b/mod.c
index 0d8e7f2..7732261 100644
--- a/mod.c
+++ b/mod.c
@@ -283,7 +283,7 @@ rb_ldap_mod_inspect (VALUE self)
   str = rb_str_new (0, strlen (c) + 10 + 16 + 1);	/* 10:tags 16:addr 1:nul */
   sprintf (RSTRING_PTR (str), "#<%s:0x%lx ", c, self);
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
   RSTRING(str)->len = strlen (RSTRING_PTR (str));
 #else
   rb_str_set_len(str, strlen (RSTRING_PTR (str)));
@@ -336,10 +336,10 @@ void
 Init_ldap_mod ()
 {
   rb_cLDAP_Mod = rb_define_class_under (rb_mLDAP, "Mod", rb_cObject);
-#if RUBY_VERSION_CODE < 170
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10700
   rb_define_singleton_method (rb_cLDAP_Mod, "new", rb_ldap_class_new, -1);
 #endif
-#if RUBY_VERSION_CODE >= 173
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10703
   rb_define_alloc_func (rb_cLDAP_Mod, rb_ldap_mod_s_allocate);
 #else
   rb_define_singleton_method (rb_cLDAP_Mod, "allocate",
diff --git a/rbldap.h b/rbldap.h
index 1fa04e1..2cf53f0 100644
--- a/rbldap.h
+++ b/rbldap.h
@@ -55,7 +55,7 @@ typedef struct rb_ldapentry_data
 {
   LDAP *ldap;
   LDAPMessage *msg;
-#if RUBY_VERSION_CODE >= 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 10900
   VALUE dn;
   VALUE attr;
 #endif
@@ -173,7 +173,7 @@ VALUE rb_ldap_mod_vals (VALUE);
   }; \
 }
 
-#if RUBY_VERSION_CODE < 190
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC < 10900
 #define GET_LDAPENTRY_DATA(obj,ptr) { \
   Data_Get_Struct(obj, struct rb_ldapentry_data, ptr); \
   if( ! ptr->msg ){ \
@@ -205,3 +205,14 @@ VALUE rb_ldap_mod_vals (VALUE);
         rb_define_method(rb_cLDAP_Mod,method,cfunc,argc)
 
 #endif
+
+#if defined(RB_LDAP_RVC) && RB_LDAP_RVC >= 20700
+# if defined rb_tainted_str_new
+#  undef rb_tainted_str_new
+# endif
+# if defined rb_tainted_str_new2
+#  undef rb_tainted_str_new2
+# endif
+# define rb_tainted_str_new(p,l)	rb_str_new((p),(l))
+# define rb_tainted_str_new2(p)		rb_str_new_cstr((p))
+#endif
openSUSE Build Service is sponsored by