X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FDB_File%2Ftypemap;h=077a95cb6f1232f307d2f4445391c4518756314c;hb=92a665d639a42192198e801676cccae0bd9afa83;hp=a6212243de22999a205d12eb600ed095795f903f;hpb=a6ed719b27c92569338047d45a029ec503c5d762;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/DB_File/typemap b/ext/DB_File/typemap index a621224..077a95c 100644 --- a/ext/DB_File/typemap +++ b/ext/DB_File/typemap @@ -1,8 +1,8 @@ -# typemap for Perl 5 interface to Berkeley DB +# typemap for Perl 5 interface to Berkeley # -# written by Paul Marquess (pmarquess@bfsec.bt.co.uk) -# last modified 28th June 1996 -# version 0.2 +# written by Paul Marquess +# last modified 20th June 2004 +# version 1.809 # #################################### DB SECTION # @@ -15,18 +15,35 @@ DBTKEY T_dbtkeydatum INPUT T_dbtkeydatum - if (db->type != DB_RECNO) { - $var.data = SvPV($arg, na); - $var.size = (int)na; - } - else { - Value = GetRecnoKey(db, SvIV($arg)) ; + { + SV * my_sv = $arg; + DBM_ckFilter(my_sv, filter_store_key, \"filter_store_key\"); + DBT_clear($var) ; + SvGETMAGIC(my_sv) ; + if (db->type == DB_RECNO) { + if (SvOK(my_sv)) + Value = GetRecnoKey(aTHX_ db, SvIV(my_sv)) ; + else + Value = 1 ; $var.data = & Value; $var.size = (int)sizeof(recno_t); + } + else if (SvOK(my_sv)) { + $var.data = SvPVbyte(my_sv, PL_na); + $var.size = (int)PL_na; } + } T_dbtdatum - $var.data = SvPV($arg, na); - $var.size = (int)na; + { + SV * my_sv = $arg; + DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\"); + DBT_clear($var) ; + SvGETMAGIC(my_sv) ; + if (SvOK(my_sv)) { + $var.data = SvPVbyte(my_sv, PL_na); + $var.size = (int)PL_na; + } + } OUTPUT