$NetBSD: patch-aa,v 1.2 2023/01/30 13:40:06 taca Exp $

* Use Modern Ruby API.
* Avoid use of rb_cData for Ruby 3.2.

--- ext/sqlite-api.c.orig	2023-01-30 13:22:14.778692763 +0000
+++ ext/sqlite-api.c
@@ -270,7 +270,7 @@ static_api_open( VALUE module, VALUE fil
   Check_Type( file_name, T_STRING );
   Check_Type( mode,      T_FIXNUM );
 
-  s_file_name = STR2CSTR( file_name );
+  s_file_name = StringValuePtr( file_name );
   i_mode      = FIX2INT( mode );
 
   db = sqlite_open( s_file_name, i_mode, &errmsg );
@@ -280,7 +280,7 @@ static_api_open( VALUE module, VALUE fil
     /* "raise" does not return */
   }
 
-  return Data_Wrap_Struct( rb_cData, NULL, sqlite_close, db );
+  return Data_Wrap_Struct( rb_cObject, NULL, sqlite_close, db );
 }
 
 /**
@@ -329,7 +329,7 @@ static_api_compile( VALUE module, VALUE 
   Check_Type( sql, T_STRING );
 
   result = sqlite_compile( handle,
-                           STR2CSTR( sql ),
+                           StringValuePtr( sql ),
                            &sql_tail,
                            &vm,
                            &errmsg );
@@ -341,7 +341,7 @@ static_api_compile( VALUE module, VALUE 
   }
 
   tuple = rb_ary_new();
-  rb_ary_push( tuple, Data_Wrap_Struct( rb_cData, NULL, static_free_vm, vm ) );
+  rb_ary_push( tuple, Data_Wrap_Struct( rb_cObject, NULL, static_free_vm, vm ) );
   rb_ary_push( tuple, rb_str_new2( sql_tail ) );
 
   return tuple;
@@ -545,7 +545,7 @@ static VALUE
 static_api_complete( VALUE module, VALUE sql )
 {
   Check_Type( sql, T_STRING );
-  return ( sqlite_complete( STR2CSTR( sql ) ) ? Qtrue : Qfalse );
+  return ( sqlite_complete( StringValuePtr( sql ) ) ? Qtrue : Qfalse );
 }
 
 /**
@@ -780,8 +780,8 @@ static_api_set_result( VALUE module, VAL
   {
     case T_STRING:
       sqlite_set_result_string( func_ptr,
-        RSTRING(result)->ptr,
-        RSTRING(result)->len );
+        RSTRING_PTR(result),
+        RSTRING_LEN(result) );
       break;
 
     case T_FIXNUM:
@@ -817,8 +817,8 @@ static_api_set_result_error( VALUE modul
   GetFunc( func_ptr, func );
   Check_Type( string, T_STRING );
 
-  sqlite_set_result_error( func_ptr, RSTRING(string)->ptr,
-    RSTRING(string)->len );
+  sqlite_set_result_error( func_ptr, RSTRING_PTR(string),
+    RSTRING_LEN(string) );
 
   return string;
 }
@@ -1188,7 +1188,7 @@ static_raise_db_error2( int code, char *
   if( *msg ) free( *msg );
   *msg = NULL;
 
-  static_raise_db_error( code, "%s", STR2CSTR( err ) );
+  static_raise_db_error( code, "%s", StringValuePtr( err ) );
 }
 
 static void
@@ -1241,7 +1241,7 @@ static_function_callback( sqlite_func *f
     proc = rb_ary_entry( proc, 0 );
 
   args = rb_ary_new2( argc + 1 );
-  rb_ary_push( args, Data_Wrap_Struct( rb_cData, NULL, NULL, func ) );
+  rb_ary_push( args, Data_Wrap_Struct( rb_cObject, NULL, NULL, func ) );
 
   for( index = 0; index < argc; index++ )
   {
@@ -1273,7 +1273,7 @@ static_aggregate_finalize_callback( sqli
   int    exception = 0;
 
   proc = rb_ary_entry( (VALUE)sqlite_user_data( func ), 1 );
-  args = rb_ary_new3( 1, Data_Wrap_Struct( rb_cData, NULL, NULL, func ) );
+  args = rb_ary_new3( 1, Data_Wrap_Struct( rb_cObject, NULL, NULL, func ) );
 
   protect_args = rb_ary_new3( 2, proc, args );
 
